C
caijitao
Unregistered / Unconfirmed
GUEST, unregistred user!
我在客户端使用applyupdates提交更新,在应用服务器端的onbeforeupdate中写代码如下:
procedure Tmulti_test1.DSProV_4BeforeUpdateRecord(Sender: TObject;
SourceDS: TDataSet;
DeltaDS: TCustomClientDataSet;
UpdateKind: TUpdateKind;
var Applied: Boolean);
var
ttname1,ttname2:string;
begin
if UpdateKind = ukModify then
begin
ttname1 :=deltads.FieldByName('title').AsString;
ttname2 :=deltads.FieldByName('title_id').OldValue;
with q_publicexecdo
begin
close;
SQL.Clear;
SQL.Add('update titles set title='+QuotedStr(ttname1)+' where title_id='+QuotedStr(ttname2));
ExecSQL;
end;
Applied :=true;
end;
end;
但提交始终不成功,报错信息:在事务处理过程中,连接对对象不能被明确的切断。
语句生成的SQL并没有错误,可以在查询分析器中正常执行。经TRACE,发现MIDIAS自动启动了事务。所以将代码中加上
adoconnet.rollbacktrans;
第一次执行可以成功,可再执行applyupdates系统竟会报:灾难性错误!!!!
然后再也不能成功提交。
怎么解决呢?