Forum
Merhaba,
Bir restoran stok takip programı yapıyorum. Yapmak istediğim şey yemeklerin bir reçetesi olması ve yemek satılınca o reçetedeki malzemelerin stoktan düşmesi. C# ve sql server kullanıyorum.
Programa önce malzemeleri giriyorum. Patates, domates, un, yağ vb.
Daha sonra yemek ekliyorum. Patates yemeği, börek vb.
Yemeği eklerken veritabanındaki "yemekler" tablosu içine bir "yemek kodu" ekletiyorum.
Bu eklediğim "yemek kodu" benzersiz 15 harften olusan random harflerden olusuyor ve bu kod ile o yemek için yeni bir tablo oluşturuyorum.
Bu tabloda "malzemeadı" ve "gerekenmiktar" alanlarım mevut.
Tekrar etmem gerekirse "adisyon" ekranında yemeği seçip eklediğim zaman, bu yemeğin adını yemekler tablosunda bulup, "yemekkodu" değerini çekecek; bu "yemekkodu"na ait tabloya gidip oradaki "malzemeadi" ve "gerekenmiktar" alanlarını teker teker okuyup, "malzemeler" tablosundaki "malzemeadi" kısmında eşleşenlerin "stok" alanındaki değerlerini "gerekenmiktar" kadar düşürecek. Fakat tüm bu mantık arasından tek tek okuma ve tek tek azaltma döngüsünü kuramadığım için başarısız oldum.
Neler yapabilirim. Yardımlarınızı bekliyorum.
Teşekkürler.
merhaba tek tek okutma degılde zaten sız yemekId ıle bır urun gırısı yapıyorusnuz soyle ızah etmeye calısayım
YemekTablosu
ID Yemek Adı
---------------------------------
12522 Patlıcan Musakka
YemekBirimKullanımları
ID YemekId MalzemeID Miktar
---------------------------------------------
1 12522 1 2
Malzemeler
ID Malzeme Adı Birim
------------------------------------
1 Patlıcan Ad
2 Kıyma Gr
.....
MalzemeStok
ID MalzemeID MevcutStok
-----------------------------------------
1 1 120
2 2 1200
buraya kadar 4 tablo ıle ana seklımızı verdık zaten benzer bır yapın oldugunu dusunuyorum adısyon ekranında patlıcan musakka secıldıgınde button ınsert yada adısyon ekle eventınde YemekBirimKullanımları tablosunda 12522 nolu yemege kı bu senın secımınden gelen ıd select atarak tum ogelerı for each dongusune sokacaksın ve Malzeme stok tablosundan eksılteceksın. daha sonra submıt changes eventını kullanarak kayıt edeceksın aynı sekılde bır malzeme ekleme ıcınde admıne bır ekran yaparsan patlıcan eklemek ıstedıgınde alıs faturasından malzemestok tablosuna eklettırebılırsın
zannedersem dogru anladım ? bır eksık var ıse yazalım devamını saygılar
ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com
Detaylı anlatımınız için teşekkür ederim.
Tamamen doğru anlamışsınız. Ancak benim hata aldığım, başaramadığım kısım zaten foreach dongusu. Burada adisyon ekranındaki yemek adını seçip o yemeğe ait tablodaki birimleri foreach dongusu ile alacak ve malzemelerin stok tablosundan düşüreceğim. Ancak burada nasıl bir döngü kurmalıyım onu yapamıyorum.
Örnek olarak;
cmd = new SqlCommand("select YEMEKKODU from yemekler where YEMEKADI='" + yemekadi + "'", con);
komut satırı ile adisyona eklediğim yemeğin kodunu alıp,
hangi basamakları uygulamalıyım ki;
select YEMEKADI,GEREKENMIKTAR from "+yemekadi+" "", con)
komut satırı ile yemeğin tablosundan seçtiğim YEMEKADI ve GEREKENMIKTAR alanlarını tek tek okuyup, malzemeler tablosundaki MALZEMEADI, STOK ile eşleştirip eksiltebileyim?
Umarım anlatabilmişimdir.
Saygılar.
şimdi zaten burda kodu bulmussun daha sonra senın artık ada ıhtıyacın yok bence ıkıncı select sorunlu senın
cmd = new SqlCommand("select YEMEKKODU from yemekler where YEMEKADI='" + yemekadi + "'", con);
ornek kod yazmaya calısacagım ama malum bıraz yogun step step yazmaya calısıyorum
Yemek kodunu bul
Yemel Malzeme Listesinden bir Class a yemek kodu ile sorgu yaparak birimleri cek
yemek malzemeden elde ettıgın bırım mıktaları stok malzeme tablosundan eksılt
dedıgım gıbı foreach yazmaya calısayım ama bıraz yogunluk var anlasılmayan bır durum varsa ufak ufak step step devam edelım ?uygunsa
ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com
Sayın hocam ilk yazdığım sorgu ile ben yemekler tablosundaki kodu alıp o yemeğin tablosuna bağlanıyorum.
Şimdi yazdıgım sorgu ile tablodaki alanların verilerini dt içine attım..
con.Open();
string cmd= "select * from "+ yemekadi+"";
SqlDataAdapter data_adaptor = new SqlDataAdapter(cmd, con);
con.Close();
data_adaptor.Fill(dt);
foreach (DataRow item in dt.Rows)
{
}
burada datatable içine tablonun tümünü alıyorum. Ancak foreach dongusunde satırları cekemedim bir türlü. Çeksem dahi sonraki adımda eşleştirmeyi nasıl yapmalıyım ?
Burada örnek koda ihitiyaç duyuyorum. Zamanınızı almak istememekle birlikte küçük de olsa bir yardım işimi görecektir. Saygılar.
Günaydın hocam,
Örnek kod yazmaya fırsat bulabildiniz mi? Ne türkçe ne ingilizce kaynaklardan sorunumun çözümünü bulamadım. Yardımınıza ihtiyacım var.
Saygılar.
selamlar yogunluk nedenı ıle yazamadım ılk fırsatta bakmak ıstıyorum
saygılar
ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com