Master-Detail'de, detail tablonun anında refresh edilmesi...

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ergunalp
Üye
Mesajlar: 28
Kayıt: 31 May 2004 01:52
Konum: Adana

Master-Detail'de, detail tablonun anında refresh edilmesi...

Mesaj gönderen ergunalp »

Delphi7+Interbase+IBX ile...
Master-Detail yapım var ve Interbase'de trigerlarla bu relation çalışır durumda(silme-Modify-Ekleme) Form üzerinde de IBDateset ve Transectionlarla bu relation sağlanmış durumda...
Sorum Şu:
Masterda KodNo 3 olan bir kaydı sildiğimde detaildede(DBGride bağlı) KodNo 3 olanlar siliniyor görünüyor fakat silinen 3 noyu tekrar mastera eklediğimde detaildeki eski 3 kodno olanlar tekrar geliyor. (Aslında database workbench ile baktığımda gerçekten detaildekilerde silinmiş durumda). Yani sorun, DBGridde sanırım hafızadaki detail kayıtlar birşekilde tekrar geliyor(gelmemesi lazım)...Bu durumda neyi nasıl refresh veya close-open yapmamız lazım sizce? DataSeti açıp kapatsak(fikir olarak) uygun olurmu
Teşekkür eder, hayırlı işler dilerim.....
arada Transectionlarda , afterpost ve after insert olayları için "Commit retaining" yazılmış durumda...
Delphi konusunda daha çok database ile ilgileniyorum...
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

master tablonun delete triggerina
delete from detail where master.id = detail.id
tarzı birsey yazacaksın
yada foreignkey kullnıp delete ozelligini Cascade ayarlarsan otomatik siler
ÜŞENME,ERTELEME,VAZGEÇME
ergunalp
Üye
Mesajlar: 28
Kayıt: 31 May 2004 01:52
Konum: Adana

Mesaj gönderen ergunalp »

Gökhan Bey,
Zaten database tarafında triger ile detaildeki kayıtlar siliniyor, o tarafta sorun yok... Sorun olan şey , form üzerindeki DBGridde gerçekte silinmiş olan kayıtların, aynı kaydı tekrar(master'a) girdiğimizde sanki silinmemiş gibi görükmesi, aslında databas^'de detail yok ama DBGrid hala hafızadakileri getiriyor, yani DBGrid birşekilde güncellenmeli, refresh edilmeli, ama nasıl???
Delphi konusunda daha çok database ile ilgileniyorum...
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7588
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

gkimirti = Gökmen Kımırtı :wink:
ergunalp
Üye
Mesajlar: 28
Kayıt: 31 May 2004 01:52
Konum: Adana

Mesaj gönderen ergunalp »

Pardon Gökmen bey yani....... :wink:
Delphi konusunda daha çok database ile ilgileniyorum...
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

peki baska bir arac ile Database e baktıgınızda silinmis gorunuyormu.
yani grid uzerinden sildiniz, baska kayıtlar uzerinde geziniyorsunuz diyelim
gittiniz ibexpertten baktınız sildiginiz kayıtlar duruyormu durmuyormu?
ayrıca her islem bir transaction gerektirir, ge her transaction islem sonunda ya onaylanır yada iptal edilir.
IbTransaction nesnesinde Default action da TACommit geliyor ,burayı degistirdiyseniz silme islemi sonunda da Commit yada CommitRetaining yapmanız gerekmekte.
ÜŞENME,ERTELEME,VAZGEÇME
ergunalp
Üye
Mesajlar: 28
Kayıt: 31 May 2004 01:52
Konum: Adana

Mesaj gönderen ergunalp »

İlk yazdığımdaki gibi, aynı anda DBWorkBench ile baktığımda detaillerin silindiği görünüyor(orada trigger var tabi affetmiyor :P ). Yani aslında DBGrid gerçekte silinmiş olan kayıtları tekrar getiriyor detailde(Mastera kodno 3 diye yeni bir kayot yaparsam) . Buda şunu gösteriyor, DBGrid hala hafızasındaki detailleri getiriyor(çünkü database 'de yok kayıtlar DBWorkbench ile bakıyorum online...) . Transection ve IBDataSet' te CommitRetaining yapılıyor afterpost ve afterdelete' de ve sorun yok...
Yani işin özü DBGrid' i bir şekilde refresh, DataSeti veya Transection' u bir şekilde close-open gibi birşey yapmak lazım ki DBGrid kendini güncellesin...Ama nasıl ve neyi?.....
Delphi konusunda daha çok database ile ilgileniyorum...
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

refresh yapmak cok zor degil
Datasetin BookMarkını kaydedip DataSeti kapa ac yapıp sonra bookmarkı yeniden yukleyin sanki hicbir sey olmamıs gibi kaldıgı yerden calısacaktır.
ÜŞENME,ERTELEME,VAZGEÇME
Cevapla