Herkese merhabalar,
Ben bir projemde verilerimi string grid üzerinden kayıt etmek ve bu kayıtlar üzerinde değişiklik yapmak istediğimde tekrar gride yükleyip değişiklikleri yapmak istiyorum.Delphi 7 ve Ado Bileşenlerini kullanıyorum, Server olarak da sql tabanlı olacak.Kayıt yapmak istediğim tablolar master-detail yapıda. İlk kayıt sırasında problem yok. Bir döngü ile stringgrid den database kayıt yapılıyor. Aynı kaydı çağırıp grid e yüklemede de sorun yok. Sorun çağırdığım tabloda değişikliklerden sonra başlıyor. Çağırdığım kayıtlarda yapılan değişiklikler "Update" olacak, eğer yeni satır yada satırlar eklersemde bu satırlar "Insert" olacak. "Kaydet" tuşuna basıldığında hangi satırların update, hangi satırların insert olacağını nasıl belirleyip kaydedebilirim. Aşağıdaki gibi bir yapıyla örneklemek gerekirse;
Master Tablo
Fiş No (Primary Key)
Tarih
Toplam Tutar
Genel Açıklama
Detail Tablo
Fiş No (FK)
Kasiyer
Döviz Tutar
TL Tutar
Açıklama
Buna göre örneğin 01.01.2013 de "1" nolu fişle 2 kasiyerin o günki değerlerini girdim ve kaydettim. Sonra yine "1" nolu fişi çağırmam gerekti. 3. bir kasiyerin değerlerini girmek ve aynı zamanda 1. kasiyerin TL değerini değiştirmek için. burada Değişen TL alan update olacak. 3. kasiyer bilgileride "1" nolu fişe yeni kayıt olacak. "Kaydet" tuşuna bastığımda bunu hangi kodla yapabilirim. Logo gibi muhasebe programı kullananlar varsa bu tip programlarda muhasebe fişi girişiyle aynı mantık.
Umarım anlatabilmişimdir.Teşekkür ederim.
StringGrid'de Database Kullanımı,Update yada Insert Ayrımı
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: StringGrid'de Database Kullanımı,Update yada Insert Ayrı
siz derdinizi çok ayrıntılı yazmışsınız. ben çözümü biraz hızlı ve kabaca anlatacağım ama kusuruma bakmayın.
data yüklenirken ek olarak kayıdın record numarası ve bir durumu alanı da visible olmayan kolonlarda saklanır. eğer yeni kayıt ekleniyorsa grid'in 'on before append' veya 'on after append' vs vs event'ında durum A,on after editle editte E, silmedede 'D' yapılır. form Show modal'la işlemi bitirdiğindede bütün satırlar sırayla taranıp a olanlar append, edit ve deleteler record numarası ile düzeltme veya silme yapılır.
data yüklenirken ek olarak kayıdın record numarası ve bir durumu alanı da visible olmayan kolonlarda saklanır. eğer yeni kayıt ekleniyorsa grid'in 'on before append' veya 'on after append' vs vs event'ında durum A,on after editle editte E, silmedede 'D' yapılır. form Show modal'la işlemi bitirdiğindede bütün satırlar sırayla taranıp a olanlar append, edit ve deleteler record numarası ile düzeltme veya silme yapılır.
Re: StringGrid'de Database Kullanımı,Update yada Insert Ayrı
Neden stringgrid kullanmak istiyorsunuz bilemiyorum ama bu isteğiniz bana memory dataset'lerle ve data bağımlı grid'lerle çok rahat yapılabilir görünüyor. Örneğin TClientDataSet ve onun Delta özelliğine bakabilirsiniz. Elbette daha hızlı memory dataset'lerde mevcut kbmMemTable gibi, onlarda işinizi daha rahat yapmanıza vesile olabilir.
Re: StringGrid'de Database Kullanımı,Update yada Insert Ayrı
Verdiğiniz cevaplar doğrultusunda birkaç deneme yaptım. Tclientdataset kullanarak daha zahmetsiz bir çözüme ulaşılabiliyor. Yardımlarınız için çok teşekkür ederim.