sql sorgum döngüye giriyor

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Serim
Üye
Mesajlar: 194
Kayıt: 08 Ara 2004 03:32
Konum: Konya

sql sorgum döngüye giriyor

Mesaj gönderen Serim »

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.

Kod: Tümünü seç

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
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

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ı :idea:

Kod: Tümünü seç

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;
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
Serim
Üye
Mesajlar: 194
Kayıt: 08 Ara 2004 03:32
Konum: Konya

Mesaj gönderen Serim »

tşk ederim aslında o şekildede denedim olmamıştı die hatırlıyorum ama şimdi deneyince oldu :)

kolay gelsin
Bilginin temelini sağlam at depremde zarar görmesin
Cevapla