StringGrid'de Database Kullanımı,Update yada Insert Ayrımı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
celalakan
Üye
Mesajlar: 4
Kayıt: 03 May 2013 10:53

StringGrid'de Database Kullanımı,Update yada Insert Ayrımı

Mesaj gönderen celalakan »

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.
cecihan
Üye
Mesajlar: 94
Kayıt: 30 Ara 2006 11:40
İletişim:

Re: StringGrid'de Database Kullanımı,Update yada Insert Ayrı

Mesaj gönderen cecihan »

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.
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: StringGrid'de Database Kullanımı,Update yada Insert Ayrı

Mesaj gönderen thelvaci »

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.
celalakan
Üye
Mesajlar: 4
Kayıt: 03 May 2013 10:53

Re: StringGrid'de Database Kullanımı,Update yada Insert Ayrı

Mesaj gönderen celalakan »

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.
Cevapla