SELECT
BORDRONO,
VERBORDRONO,....
FROM
CEKHAREKET order by portfoyno
DELETE FROM
CEKHAREKET
WHERE
AUTOSAYI = :OLD_AUTOSAYI
yukarıdaki durumda değiştirme yapınca
pfIBDataSet5.Close;
pfIBDataSet5.SELECTSQL.Clear;
pfIBDataSet5.SELECTSQL.Add('select * from cekhareket Where portfoyno = ' + pfIBDataSet2portfoyno.Text+'and autosayi<>'+pfIBDataSet2autosayi.text);
pfIBDataSet5.open;
pfIBDataSet5.first;
pFIBDataSet5.Edit;
pfIBDataSet5POZISYONU.Text:=copy(pfIBDataSet5Pozisyonu.Text,2,length(pfIBDataSet5Pozisyonu.Text)-1);
pFIBDataSet5.Post;
tamam oluyor.
Fakat kırmızıdaki auto sayı yerine portfoyno yazınca olmuyor. Yaniaynı portföy no olan iki kayıt da değişip aynı oluyor.
Projelerimde kullandığım master detail tablolarda bir problem yaşıyordum. Elhemdü lillah, Allahın izni ve yardımı ile o meseleyi çözdüm.
Nasıl mı ?
Detail tabloların sql işlemlerindeki refresh, delete, modify gibi işlemlerde anahtar alan olarak detail tablonun foreing key alanını kullanmamak gerekiyormuş. Onun yerine autosayi alanını kullanınca detaildeki kayıtları mükekerrer yapma olayından kurtuldum elhemdülillah.
Master tabloda ise anahtar alan olarak primerkeyi kullanmakta sakınca görmedim.
Ayrıca bütün tablolarımda anahtar=* olarak bir alan tanımladım bunun tablodaki anahtar alanla sadece isim benzerliği var.
Allaha Emanet Olalım.