mrb arkadaşlar, aşağıdaki sql sorgusunu datasetin afterpost, beforepost, afterinsert gibi olaylarına yazdım ama hepsindede sonsuz döngüye giriyor programı sonlandırmak zorunda kalıyorum. eğer tabloya post etmezsem sürekli edit modunda kalıyor ve kaydet butonuna basmama rağmen kaydedilmiyor, edit moduna almazsam not in edit mode hatası veriyor. bu alanlara bu değerleri başka nasıl atayabilirim acaba:S kod aşağıda, ilgilenen olursa şimdiden teşekkürler, kolay gelsin.
procedure Tdagitimform.DAGITIMDATAAfterInsert(DataSet: TDataSet);
begin
dm.DAGITIMDATA.Edit;
If dm.DAGITIMDATA.FieldByName('IMZALIMI').AsString='E' then dm.DAGITIMDATA.FieldByName('IMZALI').AsString:='E';
If dm.DAGITIMDATA.FieldByName('IMZALIMI').AsString='H' then dm.DAGITIMDATA.FieldByName('IMZASIZ').AsString:='E';
If dm.DAGITIMDATA.FieldByName('TESLIM').AsString='H' then dm.DAGITIMDATA.FieldByName('IADE').AsString:='E';
If dm.DAGITIMDATA.FieldByName('IMZASIZ_TESLIM').AsString='H' then dm.DAGITIMDATA.FieldByName('IMZASIZ_IADE').AsString:='E';
dm.DAGITIMDATA.Post;
end;
Bilginin temelini sağlam at depremde zarar görmesin
Karşılaştırdığın değerlerkayıt öncesi de belli ise AfterInsert yordamına da yazabilirsin. En sağlamı BeforePost ta aşağıdaki gibi yazmak, yazdığın şekilde hatalı. Yeni eklenmiş bir kayıt için aynı tabloda Tablo1.Edit denemez ve Tablo1.Post da olmamalı
procedure Tdagitimform.DAGITIMDATABeforePost(DataSet: TDataSet);
begin
If dm.DAGITIMDATA.FieldByName('IMZALIMI').AsString='E' then
dm.DAGITIMDATA.FieldByName('IMZALI').AsString:='E';
If dm.DAGITIMDATA.FieldByName('IMZALIMI').AsString='H' then
dm.DAGITIMDATA.FieldByName('IMZASIZ').AsString:='E';
If dm.DAGITIMDATA.FieldByName('TESLIM').AsString='H' then
dm.DAGITIMDATA.FieldByName('IADE').AsString:='E';
If dm.DAGITIMDATA.FieldByName('IMZASIZ_TESLIM').AsString='H' then
dm.DAGITIMDATA.FieldByName('IMZASIZ_IADE').AsString:='E';
end;