detail tabloda kayıt varsa master dan silme

Diğer veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
akuyumcu63
Üye
Mesajlar: 386
Kayıt: 02 Tem 2007 09:43

detail tabloda kayıt varsa master dan silme

Mesaj gönderen akuyumcu63 »

değerli arkadaşlar;

formda baya arama yaptım. hep master tablodan kayıt silinince detail tablodan da bağlı kayıtlarında silinmesiyla alakalı konulara rastladım. fakat ben tam tersini arıyorum. detail tablolarda kayıt varsa master tablodaki kaydın silinmesini engelleme.

müşteriler diye bir tablom var. bu tabloya bağlı 6-7 tane detail tablo var (borc, alacak, ödeme, tahsilat, çek, senet, alışfaturası vs.) müşteriler tablosundan bir kayıt silinmeye çalışıldığı vakit detail tabloların hepsini kontrol edip herhangi birinde bir kayıt varsa müşteriler tablosundaki kaydın silinmesini engellesin istiyorum. ben aşağıdaki kodu kullanıyorum ama bu kodu pek güvenerek kullandığımı söyleyemem.

bu konuda fikir veren arkadaşlara şimdiden teşekkürler.

procedure TFRMMUSTERI.CXBTNSILClick(Sender: TObject);
VAR NUM:INTEGER;
begin
if dm.ADSTBLMUSTERI.RecordCount=0 then cxbtnsil.Enabled:=false;

num:=application.messagebox('KAYDI SİLMEK İSTEDİĞİNİZDEN EMİNMİSİNİZ','KAYIT SİL',mb_ICONSTOP+MB_YESNO);
if (num=mryes) and (dm.ADSTBLBORC.RecordCount<>0)
and (dm.ADSTBLALACAK.RecordCount<>0)
{and (dm.ADSTBLODEME.RecordCount<>0)
and (dm.ADSTBLTAHSILAT.RecordCount<>0)} then
BEGIN
Showmessage('ÖNCELİKLE DETAY KAYITLARINI SİLMELİSİNİZ. KONTROL EDİNİZ...');
exit;
END
else
if (num=mryes) and (dm.ADSTBLMUSTERI.RecordCount<>0) then
dm.ADSTBLMUSTERI.Delete;
BOSALT;
end;
İsteyen, yapabildiğinden daha fazlasını yapar.
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: detail tabloda kayıt varsa master dan silme

Mesaj gönderen mkysoft »

veri tabanınızı yazmamışsınız. Foreignkey dediğiniz işe yarıyor zaten. Veri tabanınızı yazarsanız daha kolay yardımcı oluruz.
akuyumcu63
Üye
Mesajlar: 386
Kayıt: 02 Tem 2007 09:43

Re: detail tabloda kayıt varsa master dan silme

Mesaj gönderen akuyumcu63 »

bu programımda advantage kullanıyorum.
İsteyen, yapabildiğinden daha fazlasını yapar.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: detail tabloda kayıt varsa master dan silme

Mesaj gönderen sabanakman »

Kullandığınız DataSet bileşeninin BeforeDelete olayına Abort veya raise Exception.Create('Bu kaydı silemezsiniz'); kodlarından birini yazarsanız silme işlemi tamamlanamaz fakat mkysoft'un dediği gibi foreignkey ile bu tür veritabanları programlamasında, gerekli tablolar arası gereli indeks ayarlamaları yapmak daha ideal olanıdır.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Cevapla