如何在从当前表中删除相关的更新数据之前更新另一个表

时间:2015-08-19 03:10:08

标签: delphi firedac

我正在删除表中的记录' 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'之前我无法说出来。 table因为它只捕获dbnavigator使用的事件。

问题是我需要那些即将被删除的值才能更新我的表。

任何想法如何解决这个问题?得了牙痛,不能想到海峡......:)

1 个答案:

答案 0 :(得分:0)

尝试使用IN函数在一个操作中进行更新集:

Traceback (most recent call last):
  File "/usr/bin/scrapy", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2749, in <module>
    working_set = WorkingSet._build_master()
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 444, in _build_master
    ws.require(__requires__)
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 725, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 628, in resolve
    raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: service-identity

为POSOJA使用正确的表名。您无需导航此表(NEXT,NEXT等...)。