Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Master Detail Kayıt Silme Sorunu
#1
Arkadaşlar SQLite db kullandığım örnekte master-detail bağlantı oluşturdum. Her şey normal. 

Master tablodan kayıt silerken detail tablodaki ilişkili içeriği silmek  için Master tablonun AfterDelete yordamına şu kodu yazdım. 
 QOgrenci.First;
 while not QOgrenci.Eof do
   QOgrenci.Delete;
 QOgrenci.First;
Ancak bu kodlar detail tablodaki ilişkili kaydı değil başka alakasız bir kaydı siliyor. Örneğin master tablodaki 2 numaralı tablo ile birlikte metal tablodaki 2 numaralı içeriği silmek yerine 3 numaralı kaydı siliyor.  

Acemilik işte uğraşıyorum öğleden beri bulamadım Smile

Yardımcı olabilecek biri varsa minnettar kalırım. Mutlu akşamlar diliyorum.

Kaynak kodları buraya ekliyorum bakma fırsatınız olabilir mi diye.
Cevapla
#2
(18-10-2020, Saat: 19:38)Frrst Adlı Kullanıcıdan Alıntı: Arkadaşlar SQLite db kullandığım örnekte master-detail bağlantı oluşturdum. Her şey normal. 

Master tablodan kayıt silerken detail tablodaki ilişkili içeriği silmek  için Master tablonun AfterDelete yordamına şu kodu yazdım. 
 QOgrenci.First;
 while not QOgrenci.Eof do
   QOgrenci.Delete;
 QOgrenci.First;
Ancak bu kodlar detail tablodaki ilişkili kaydı değil başka alakasız bir kaydı siliyor. Örneğin master tablodaki 2 numaralı tablo ile birlikte metal tablodaki 2 numaralı içeriği silmek yerine 3 numaralı kaydı siliyor.  

Acemilik işte uğraşıyorum öğleden beri bulamadım Smile

Yardımcı olabilecek biri varsa minnettar kalırım. Mutlu akşamlar diliyorum.

Kaynak kodları buraya ekliyorum bakma fırsatınız olabilir mi diye.

afterdelete'e yazdığın için oluyor. yaptığın projeye göre konuşmak gerekirse beforedelete'e yazmalısın.
Cevapla
#3
Sayın hocam sizin hiç beyniniz durup sizinle inatlaştı mı ? Eminim olmuştur Big Grin

Çok teşekkürler @ hocam başarılar diliyorum...
Cevapla
#4
ben beyne girersek iş çok karışır.
kolay gelsin.
Cevapla
#5
Merhaba,

Query2.Close;
Query2.SQL.Text:='Delete From DetailTablo Where MasterID=5000';
Query2.ExecSQL;

Detail tabloyu sildikten sonra ana tabloyu da aynı metodla silebilirsinz.
Cevapla
#6
Teşekkürler @delphicim hocam, sorunum hallolduktan sonra master tablodaki kayıtları klasik yollarla siliyorum bir sıkıntı yaşamadım.

Şimdi halletmeye çalıştığım şey şu. SQLite db yi create ederek oluşturuyorum. Yeni bir alan eklediğimde bunu update etmek birkaç gün kafa yoracağım ve halledemeyeceğim ve yine burada soracağım eminim Big Grin
Cevapla
#7
Ben Firebird de böyle siliyorum.. old ID yi bulup silmen lazım.

CREATE OR ALTER TRIGGER SATIS_SIL FOR TAblo1
ACTIVE AFTER DELETE POSITION 0
AS
begin
delete from Tablo2 where tablo2.ID= old.satid (Bu tablo1 deki alan);
end
// Bilgi paylaştıkça çoğalır.. 

Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  SQLite Text Alanı Sorunu Frrst 8 135 17-10-2020, Saat: 19:47
Son Yorum: Frrst
  binary bir veriyi pdf olarak kayıt etmek.. delphicim 0 142 05-10-2020, Saat: 12:50
Son Yorum: delphicim
  Master detail bağlantı da indexfieldname de alan bulamama sorunu Gumiho309 4 300 28-09-2020, Saat: 18:41
Son Yorum: Gumiho309
  Hal Kayıt Sistemi CigdemC 4 373 15-09-2020, Saat: 12:39
Son Yorum: CigdemC
  SQL Sorguda Türkçe Sorunu OZCANK 33 2.329 13-09-2020, Saat: 12:54
Son Yorum: OZCANK



Konuyu Okuyanlar: 2 Ziyaretçi