master detailde kayıt silme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
master detailde kayıt silme
ben bu gidişle sora sora programı sizlere yaptıracam herhalde.
master ve detail tablosu birbirine bağlandı. kayıt girldi.
master toblosundan kayıt sildiğm zaman detailde eklenmiş olan kayıtlar olduğu gibi duruyor.
yeni bir kayıt eklediğimim zaman detailine hiç kayıt girmediğim halde akyıt görünüyor. master toblosundan kayıt sildiğim zaman mastere bağlı detail tablosundaki kayıtları nasıl silebilirim.
çok teşekür ederim.
master ve detail tablosu birbirine bağlandı. kayıt girldi.
master toblosundan kayıt sildiğm zaman detailde eklenmiş olan kayıtlar olduğu gibi duruyor.
yeni bir kayıt eklediğimim zaman detailine hiç kayıt girmediğim halde akyıt görünüyor. master toblosundan kayıt sildiğim zaman mastere bağlı detail tablosundaki kayıtları nasıl silebilirim.
çok teşekür ederim.
- Yusuf AYDIN
- Üye
- Mesajlar: 69
- Kayıt: 02 Oca 2004 05:45
- Konum: Antalya
Merhabalar,
Adem bey sanırım sizin bir diğer probleminiz de master-detail bağlantı anahtarınız.
Önce master için unique bir alan oluşturun detail buna bağlansın.
Master table dan bir kayıt silmeden önce (BeforeDelete) bu uniqe alana göre detail'i filtre edin ve bu kayıtları silin.
Adem bey sanırım sizin bir diğer probleminiz de master-detail bağlantı anahtarınız.
Bu anahtar tekil/tekrarlanamaz/unique olmalı. Siz master'a kayıt girince demekki başka detail ler bu yeni kaydın detail'i gibi ona bağlanıyor.bir kayıt eklediğimim zaman detailine hiç kayıt girmediğim halde akyıt görünüyor
Önce master için unique bir alan oluşturun detail buna bağlansın.
Master table dan bir kayıt silmeden önce (BeforeDelete) bu uniqe alana göre detail'i filtre edin ve bu kayıtları silin.
saygılar
ForeingKey kullanırsan triger vs e gerek kalmaz.ForeingKey nin delete için "OnCascade" i seçersen sadece master ı silmen yeterli detail table içindeki bağlı tüm kayıtlar otomatik silinir
Kolay gele
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kod: Tümünü seç
ALTER TABLE TAH_TED ADD CONSTRAINT FK_TAH_TED_MST FOREIGN KEY (MST_ID) REFERENCES CARI_HAREKET (SELF) ON DELETE CASCADE;
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
arkadaşlar sorunu çözdüm.sorgu çekerek çözdüm.
if MessageDlg('Kayıt Silinsin mi?', mtWarning, mbYesNoCancel, 0) = idyes then
//ihale =master tablom
//Yaz diye bir sorgu oluşturdum.
DataModule1.ADOQuery_Yaz.SQL.Clear;
//malzeme detail tablom
DataModule1.ADOQuery_Yaz.SQL.Add('DELETE from malzeme where id=:id');
DataModule1.ADOQuery_Yaz.Parameters.ParamByName('id').Value := DataModule1.ADOQuery_Ihaleid.Value;
DataModule1.ADOQuery_Yaz.ExecSQL;
DataModule1.ADOQuery_Ihale.Delete;
bu şekilde sorun halloldu.
if MessageDlg('Kayıt Silinsin mi?', mtWarning, mbYesNoCancel, 0) = idyes then
//ihale =master tablom
//Yaz diye bir sorgu oluşturdum.
DataModule1.ADOQuery_Yaz.SQL.Clear;
//malzeme detail tablom
DataModule1.ADOQuery_Yaz.SQL.Add('DELETE from malzeme where id=:id');
DataModule1.ADOQuery_Yaz.Parameters.ParamByName('id').Value := DataModule1.ADOQuery_Ihaleid.Value;
DataModule1.ADOQuery_Yaz.ExecSQL;
DataModule1.ADOQuery_Ihale.Delete;
bu şekilde sorun halloldu.
freeman ;
peki dağişiklik yaparkende delete kısmını mı değiştirecez bu kodun. yani ON DELETE YERİNE ON EDİT gibi bişimi yazacaz
Kod: Tümünü seç
ALTER TABLE TAH_TED ADD CONSTRAINT FK_TAH_TED_MST FOREIGN KEY (MST_ID) REFERENCES CARI_HAREKET (SELF) ON DELETE CASCADE;
peki dağişiklik yaparkende delete kısmını mı değiştirecez bu kodun. yani ON DELETE YERİNE ON EDİT gibi bişimi yazacaz
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
bu tip işlemleri maunal yapma taraftarı değilim, nedeni eğer silme sırasında bir hata olursa yarısı silindi yarısı kaldı kalan neresi vs gibi karışıklıklar çıkabilir. Bunu yap transaction ile önüne geçebilir, yada Database üzerine yıkabilirsiniz.
Database üzerinde Ben foreingkey kullanmayı tercih ediyorum, bu master ın afterdelete trigerindada yapabilirsiniz, ama bunu bir stored procedure içinden yani master kaydı silme işini storedprocedure içinden yaparsanız bir hata olduğunda bunu yakalayıp transaction ı rollback edebilirsiniz. Buda bilgi bütünlüğünü korur
Kolay gele
Database üzerinde Ben foreingkey kullanmayı tercih ediyorum, bu master ın afterdelete trigerindada yapabilirsiniz, ama bunu bir stored procedure içinden yani master kaydı silme işini storedprocedure içinden yaparsanız bir hata olduğunda bunu yakalayıp transaction ı rollback edebilirsiniz. Buda bilgi bütünlüğünü korur
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!