最初由 alang 发布
[B]sql语句报错,提交失败的话,数据集中的相关更新也没有进行
对,如果sql语句错误,BeforeApplyUpdates事件就会中止,后面的提交就没有执行,当然是正确的
但是如果sql语句?.
以下省略...... [/B]
实际上我是通过采用同一连接来处理这个问题,据说以前在2611版本里面不是很好,我们已经升级到2918了.下面讲一下具体的方法
前面已经把数据集的连接赋值给下面要使用的sql语句作为连接
lQueryex := TDbCommand.CreateConnect(DSB_INV_BILL_DETAIL.DataSet);
函数:
接下来在执行sql语句的时候把数据集相关的连接传过去
ls_sql := 'UPDATE EXP_BILL_HEAD SET EBH_INV_VALUTA = EBH_INV_VALUTA + ' + floattostr(lf_new_inv_fee) +
', EBH_STATUS = ' + QuotedStr(ls_bill_inv_status) + 'WHERE EBH_AUTOIN = ' + QuotedStr(ls_new_billid);
TDbCommand.ExcSqlex(ls_sql,lQueryex);
这是两个函数里面具体的内容:
static function TDBCOMMAND.CreateConnect(FDataSet:TDataSet):TQuery;
var lQuery:TQuery;
begin
//定义执行sql的连接
lQuery:=TQuery.Create(nil);
lQuery.ConnectionString:='DATABASEURL=Biz:\ZSGLXT\GOLDENBRIDGE.Database';
lQuery.CommandText := '';
lQuery.Connection := FDataset.Connection;
Result := lQuery;
end;
static function TDBCOMMAND.ExcSqlex(FSql: String;FQuery:TQuery):Boolean;
begin
FQuery.CommandText:= Fsql;
try
FQuery.Execute;
Result := True;
except
Result := False;
end;
end;
我实际上没有去刻意做提交,而是利用平台的事务管理来处理,当数据集提交的时候,一起提交执行过的sql
这样处理是否满足同一事务来处理? |