起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 502|回复: 3

【搞定】关于多sql语句事务处理的方法**

[复制链接]
发表于 2007-1-18 14:25:11 | 显示全部楼层 |阅读模式
procedure TVOUCHER_ENTER.FlowBroker1AfterFlowFinish(Sender: TObject; Command: TFlowFinishCommand);
var
  lDataSet1,lDataSet2: TDataSet;
  ls_vouid, ls_balsysid, ls_sql, ls_operator:string;
  lContextCurrent: Business.Model.TContextCurrent;
  H:TTransactionHandle;
begin
  lContextCurrent := Business.Model.TContextCurrent.Create(Self.Context);
  try
    ls_operator := lContextCurrent.Operator.ID;           //当前操作者ID
  finally
    lContextCurrent.Free;
  end;
  H := Start(False); //启动事务
  // Start 后面的参数是指事务的启动方式,分为立即方式和非立即方式,建议使用False,非立即方式
  try
    lDataSet1 := DataSetBroker1.DataSet;
    if not lDataSet1.Active then
      lDataSet1.Open;
    ls_vouid:= lDataSet1.FieldByName('VouID').AsString;
    ls_sql:= 'update EXP_VOUCHER set VouAuditState = '+ QuotedStr('30')+' where VouID = '+QuotedStr(ls_vouid);
    TSysBaseUtils.ExcSql(ls_sql);

    //更新费用审核状态
    lDataSet2 := DataSetBroker2.DataSet;
    if not lDataSet2.Active then
      lDataSet2.Open;
    lDataSet2.First;
    while not lDataSet2.Eof do
    begin
      with lDataSet2 do
      begin
        ls_balsysid:= lDataSet2.FieldByName('BalSysId').AsString;
        ls_sql:= 'update EXP_BALANCE set BalCheckFlg = '+ QuotedStr('30')+ ',' +
        ' BalCheckDate = '+ QuotedStr(FormatDatetime('yyyy-mm-dd',Business.Data.SysSrv.SysService.Time)+' 00:00:00') +',' +
        ' BalChecker = ' + QuotedStr(ls_operator) + ',' + 'BalCnclTtl =  BalTtl, BalCnclStdTtl = BalStdTtl' +
        ' where BalSysID = '+QuotedStr(ls_balsysid);
        TSysBaseUtils.ExcSql(ls_sql);
        next;
      end;
    end;
    Commit(H); // 结束
  except
    Rollback(H); //回滚事务
  end;

end;

以上语句报错:
[警告] 循环引用: "Biz:\JQERP\FYJS\DZFKPZ\VOUCHERFUNC.FUNC"-->"Biz:\JQERP\FYJS\DZFKPZ\VOUCHERINFO.Info"-->"Biz:\JQERP\HDGLXT\YWXXGGZY\GZBHXZ\JOBNOSELECT.Info"-->"Biz:\JQERP\HDGLXT\YWXXGGZY\GZBHXZ\JOBNOSELECT.Info"
[错误]Biz:\JQERP\FYJS\DZFKPZ\VOUCHERFUNC.FUNC.DIR\VOUCHER_ENTER.Form.pas(167, 8): Undeclared identifier "Start"
[错误]Biz:\JQERP\FYJS\DZFKPZ\VOUCHERFUNC.FUNC.DIR\VOUCHER_ENTER.Form.pas(195, 5): Undeclared identifier "Commit"
[错误]Biz:\JQERP\FYJS\DZFKPZ\VOUCHERFUNC.FUNC.DIR\VOUCHER_ENTER.Form.pas(197, 5): Undeclared identifier "Rollback"
为什么说没有定义呢?
回复

使用道具 举报

发表于 2007-1-18 16:00:50 | 显示全部楼层
Conn.Transaction.Start(false);
回复 支持 反对

使用道具 举报

发表于 2007-1-18 16:32:49 | 显示全部楼层
DataSetBroker1.DataSet.Connection.Transaction.Start(False);
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-22 14:09:13 | 显示全部楼层
知道了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-6-15 13:10 , Processed in 0.045973 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表