【发布时间】:2015-08-19 03:10:07
【问题描述】:
我正在删除表 'posoja' 中的记录:
procedure TForm2.cxButton3Click(Sender: TObject);
begin
DataModule3.FDTransaction1.StartTransaction;
DataModule3.DEL_POSOJA.ExecSQL;
DataModule3.FDTransaction1.Commit;
DataModule3.POSOJA.Refresh;
end;
DEL_POSOJA 查询的属性是这样的:
从 POSOJA 中删除 VRNJENO 不为 NULL 的位置;
因此,所有填写了“vrnjeno”的记录都将被删除。
现在,就在我删除填充记录之前,我想更新我的“电影”表。查询是这样的:
while not POSOJA.EOF do begin
FDTransaction5.StartTransaction;
try
UPD_NA_VOLJO_AFT_DEL.Close;
UPD_NA_VOLJO_AFT_DEL.SQL.Clear;
UPD_NA_VOLJO_AFT_DEL.SQL.Text := 'update filmi set na_voljo=1 where dvd_id=:a1';
UPD_NA_VOLJO_AFT_DEL.Params.ParamByName('a1').asString := DataModule3.POSOJA.FieldByName('DVD_ID').AsString;
UPD_NA_VOLJO_AFT_DEL.ExecSQL;
POSOJA.Next;
FDTransaction5.Commit;
except
on E: Exception do begin
ShowMessage(E.Message);
DataModule3.FDTransaction5.Rollback;
end;
end;
DataModule3.FILMI.Refresh;
end;
我的问题是我不知道将这些行放在哪里。我尝试在执行 DEL_POSOJA 查询之前将其打开(它工作正常),但查询会执行,因此即使“vrnjeno”不为空,UPD_NA_VOLJO_AFT_DEL 查询也会更新“filmi”表。
我不能把它放在删除“posoja”表之前,因为它只捕获 dbnavigator 使用的事件。
问题是我需要那些即将被删除的值才能更新我的表。
任何想法如何解决这个问题?牙疼,想不通... :)
【问题讨论】: