18-05-2021, Saat: 11:23
merhaba;
fisler, fisharket ve kasahareket adında 3 adet tablom var. bu tablolara kayıt işlemi yaptığım zaman bir hata olduğunda tüm kayıt işlemlerinin geri alınmasını istiyorum. kullanıdığım kod bloğu;
üçüncü tabloda parametre hatası yaptırıyorum. fiş ve hareket tablosuna kayıt gerçekleşiyor kasahareket tablosuna kayıt gerçekleşmiyor. herhangi bir hatada bütün işlemler iptal olsun istiyorum. nasıl bir kod bloğu kullanmalıyım.
teşekkür ederim.
fisler, fisharket ve kasahareket adında 3 adet tablom var. bu tablolara kayıt işlemi yaptığım zaman bir hata olduğunda tüm kayıt işlemlerinin geri alınmasını istiyorum. kullanıdığım kod bloğu;
if not dm.UniConnection1.InTransaction then dm.UniConnection1.StartTransaction; TRY with Dm.QryDataIslem do begin Connection := Dm.UniConnection1; Close; SQL.Clear; SQL.Add('INSERT INTO TBLFISLER (FISKOD,TARIHSAAT)'); SQL.Add('VALUES (:FISKOD,:TARIHSAAT) RETURNING ID'); ParamByName('FISKOD').AsString :=Trim(txtFisKod.Text); ParamByName('TARIHSAAT').AsDateTime:=txtTarihSaat.EditValue; ExecSQL; EditKayitID.EditValue :=ParamByName('RET_ID').AsInteger; end; while not vtFisTablo.Eof do begin with Dm.QryDataIslem do begin Connection := Dm.UniConnection1; Close; SQL.Clear; SQL.Add('INSERT INTO TBLFISHRKT (FISID,ACIKLAMA,MIKTAR,FIYAT,TUTAR)'); SQL.Add('VALUES (:FISID,:ACIKLAMA,:MIKTAR,:FIYAT,:TUTAR)'); ParamByName('FISID').AsInteger :=EditKayitID.EditValue; ParamByName('ACIKLAMA').AsString:=vtFisTablo.FieldByName('ACIKLAMA').AsString; ParamByName('MIKTAR').AsFloat :=vtFisTablo.FieldByName('MIKTAR').AsFloat; ParamByName('FIYAT').AsFloat :=vtFisTablo.FieldByName('FIYAT').AsFloat; ParamByName('TUTAR').AsFloat :=vtFisTablo.FieldByName('TUTAR').AsFloat; ExecSQL; end; End; with dm.QryDataIslem do begin Connection := dm.UniConnection1; Close; SQL.Clear; SQL.Add('INSERT INTO TBLKASAHRKT (KASAID,TARIHSAAT,ACIKLAMA,TUTAR)'); SQL.Add('VALUES (:KASAID,:KHRKTKOD,:TARIHSAAT,:ACIKLAMA,TUTAR)'); ParamByName('KASAID').AsSmallInt :=NakitKasaID.EditValue; ParamByName('TARIHSAAT').AsDateTime :=Now; ParamByName('ACIKLAMA').AsString :=txtAciklama.Text; ParamByName('TUTAR').AsFloat :=txtFisTutari.EditValue; ExecSQL; end; dm.UniConnection1.Commit; EXCEPT on E : Exception do Begin dm.UniConnection1.Rollback; raise Exception.Create('Hata Mesajı :'+E.Message); End; END;
üçüncü tabloda parametre hatası yaptırıyorum. fiş ve hareket tablosuna kayıt gerçekleşiyor kasahareket tablosuna kayıt gerçekleşmiyor. herhangi bir hatada bütün işlemler iptal olsun istiyorum. nasıl bir kod bloğu kullanmalıyım.
teşekkür ederim.