Realition

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Realition

Mesaj gönderen husonet »

Arkadaşlar amacım bir ilişki kurduğum database ile ilgili Master tablosundaki numarayı değiştirdiğimde Detail tablosundaki numarların da değişmesini istiyorum. Bunu nasıl yapabilirim fikri olan arkadaşlar yardımcı olurlarsa çok sevinirim. Hepinize iyi çalışmalar Arkadaşlar.
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Eger trigger destekleyen bir veritabani kullnaiyor iseniz bu cok kolay. Hatta eger bir veritabani tasarim araci kullaniyor iseniz (Erwin, power Designer) bu arac zaten referential integrity denilen data butunlugunu koruma kurallarini islettiginz taktirde gerekli trigger kodunu sizin icin yazacaktir.

Ama ornek olarak PERSONEL tablosunda PERSONEL_NO alani var ve bunun detayinde da bir PERSONEL_DEMIRBAS tablosunda da yine PERSONEL_NO ve DEMIRBAS_NO gibi diger alanlar var. Bir personele ait demirbaslar detay tabloda tutuluyor ve PERSONEL_NO degeri PERSONEL tablsounda degisirse detay tablodaki PERSONEL_NO alani da degismeli.

Sybase ASA icin ornek kod yaziyorum. NBir cok veritabaninda benzer bir kod isi gorur.

PERSONEL tablosunun update trigger'inda su kodun olmasi yeterli...


if oldrows.PERSONEL_NO<>newrows.PERSONEL_NO then
update PERSONEL_DEMIRBAS
set PERSOENEL_NO=newrows.PERSONEL_NO
where PERSOENEL_NO=oldrows.PERSONEL_NO


Kolay gelsin....
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

master-detail kayıt silme olayına
viewtopic.php?t=110
verilen cevaplara benzer şekilde burada da master tablonun beforeedit ından önceki numarayı global bir değişkende saklayıp afterpost event ına

Kod: Tümünü seç

Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add(update detail_tablo set numara = ' + IntToStr(tblMasterNUMARA.Value));  // yeni numara
Query1.SQL.Add('where numara = ' + IntToStr(old_numara));
Query1.ExecSQL;
bu kadar.
Cevapla