none
Satış Eklendiğinde Stok Düşme RRS feed

  • Soru

  • Ben bir muhasebe programı yazmaktayım fakat stok düşme ile ilgili daha önceden bir tecrübem olmadı.
    Access ilk kez kullanıyorum.

    Satış eklerken comboBox dan stok veritabanındaki ürünün ismini seçiyorum. Satış eklediğim zaman textBox taki ürünadet isimli sayının, Stok veritabanında seçtiğim üründen ürün det bilgisinin düşmesini istiyorum. Bunun için bir kod yazdım fakat hata alıyorum hata içeriği şöyle;

    no data exists for the row

    try
                        {
                            baglanti.Open();
                            komut = new OleDbCommand("Select * FROM Urunler WHERE UrunAd LIKE '%" + comboBoxEdit2.SelectedItem.ToString() + "%'", baglanti);
    
                            OleDbDataReader oku = komut.ExecuteReader();
    
                            if (true)
                            {
                                int sonuc = Convert.ToInt32(oku["UrunAdet"].ToString()) - Convert.ToInt32(textEdit4.Text);
                                komut = new OleDbCommand("UPDATE Urunler SET UrunAdet=@sonuc where UrunAd LIKE '%" + comboBoxEdit2.SelectedItem.ToString() + "%'", baglanti);
                                
    
                                komut.Parameters.AddWithValue("@sonuc", sonuc.ToString());
    
    
    
                                komut.ExecuteNonQuery();
                                MessageBox.Show("urun düşüldü");
                            }
    
                            baglanti.Close();
    
    
                        }
                        catch
                        {
                            MessageBox.Show("Bilgilerinizi Kontrol Ediniz!");
                        }


    10 Temmuz 2017 Pazartesi 01:53

Yanıtlar

  • if dongusu icinde mutlaka kosul belirtmelisin.. detareader islemleri yapilirken sql baglantisi acik kalir. bu yuzden while dongusu icine sokularak tum tablo satir satir okutulur. mvc tarafinda foreach gibi. 
    • Yanıt Olarak İşaretleyen TheCaliph 18 Temmuz 2017 Salı 02:15
    10 Temmuz 2017 Pazartesi 03:19
  • Stok girdilerden çıktıların toplanması olarak anlık hesaplanmalıdır, performans sıkıntısı oluşuyorsa bir loopkup'a alınabilir. Örneğin bu yapmaya çalıştığınız işlemde herhangi bir eş zamanlı işlem kontrolü yok. Bu ne demek? X ve Y satışlarının aynı anda yapıldığını düşünün her iki satışın 10 birim olduğunu varsayalım ve güncel stok 100 olsun. Eğer eş zamanlılık kontrolü (transaction) yapmazsanız stoğun 80'e inmesini beklerken 90 veya 100 olarak kaldığını görebilirsiniz. Benzer şekilde veritabanı üzerinde sadece yazılımcının bileceği bir kural oluşturmuş oluyorsunuz. Muhtemleen de bu işlemlerin test methodları yazılmadı. Sizden sonra gelecek bir yazılımcı bu varsayımı bilmek zorunda değil ve satış bilgilerinde güncelleme yapacak bir özellik eklediğinde stoklarında güncellenmesini yapmayabilir. Bu hata çok geç fark edilip sizi üzebilir.

    Diğer husus Access kullanmayın  nedeni forumda 10000 kez yazıldı (alternatifler: sql express, sqllite, sqlcompact gibi) ve asla ama asla + ile t-sql cümlesi oluşturmayın. http://www.cihanyakar.com/sss002veritabanisorgularindaparametrekullanimi


    • Düzenleyen Cihan YakarMVP 10 Temmuz 2017 Pazartesi 05:42
    • Yanıt Olarak İşaretleyen TheCaliph 18 Temmuz 2017 Salı 02:15
    10 Temmuz 2017 Pazartesi 05:41

Tüm Yanıtlar

  • if dongusu icinde mutlaka kosul belirtmelisin.. detareader islemleri yapilirken sql baglantisi acik kalir. bu yuzden while dongusu icine sokularak tum tablo satir satir okutulur. mvc tarafinda foreach gibi. 
    • Yanıt Olarak İşaretleyen TheCaliph 18 Temmuz 2017 Salı 02:15
    10 Temmuz 2017 Pazartesi 03:19
  • Stok girdilerden çıktıların toplanması olarak anlık hesaplanmalıdır, performans sıkıntısı oluşuyorsa bir loopkup'a alınabilir. Örneğin bu yapmaya çalıştığınız işlemde herhangi bir eş zamanlı işlem kontrolü yok. Bu ne demek? X ve Y satışlarının aynı anda yapıldığını düşünün her iki satışın 10 birim olduğunu varsayalım ve güncel stok 100 olsun. Eğer eş zamanlılık kontrolü (transaction) yapmazsanız stoğun 80'e inmesini beklerken 90 veya 100 olarak kaldığını görebilirsiniz. Benzer şekilde veritabanı üzerinde sadece yazılımcının bileceği bir kural oluşturmuş oluyorsunuz. Muhtemleen de bu işlemlerin test methodları yazılmadı. Sizden sonra gelecek bir yazılımcı bu varsayımı bilmek zorunda değil ve satış bilgilerinde güncelleme yapacak bir özellik eklediğinde stoklarında güncellenmesini yapmayabilir. Bu hata çok geç fark edilip sizi üzebilir.

    Diğer husus Access kullanmayın  nedeni forumda 10000 kez yazıldı (alternatifler: sql express, sqllite, sqlcompact gibi) ve asla ama asla + ile t-sql cümlesi oluşturmayın. http://www.cihanyakar.com/sss002veritabanisorgularindaparametrekullanimi


    • Düzenleyen Cihan YakarMVP 10 Temmuz 2017 Pazartesi 05:42
    • Yanıt Olarak İşaretleyen TheCaliph 18 Temmuz 2017 Salı 02:15
    10 Temmuz 2017 Pazartesi 05:41