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;
detail tabloda kayıt varsa master dan silme
-
- Üye
- Mesajlar: 386
- Kayıt: 02 Tem 2007 09:43
detail tabloda kayıt varsa master dan silme
İsteyen, yapabildiğinden daha fazlasını yapar.
Re: detail tabloda kayıt varsa master dan silme
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.
-
- Üye
- Mesajlar: 386
- Kayıt: 02 Tem 2007 09:43
Re: detail tabloda kayıt varsa master dan silme
bu programımda advantage kullanıyorum.
İsteyen, yapabildiğinden daha fazlasını yapar.
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: detail tabloda kayıt varsa master dan silme
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. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .