起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 454|回复: 9

【搞定】datasetbroke 更新时出错**

[复制链接]
发表于 2007-1-11 12:52:03 | 显示全部楼层 |阅读模式
procedure TVOUCHER_ENTER.DataSetBroker2BeforeApplyUpdates(DataSet: TDataSet);
var lDataSet1,lDataSet2: TDataSet;
  lf_SumOrigin, lf_sumrmb:float;
begin
  lDataSet1 := DataSetBroker1.DataSet;
  if not lDataSet1.Active then
    lDataSet1.Open;
  lDataSet2 := DataSetBroker2.DataSet;
  if not lDataSet2.Active then
    lDataSet2.Open;

  lf_sumorigin:= 0;
  lf_sumrmb:= 0;
  with lDataSet2 do
  begin
    First;
    while not Eof do
    begin
      lf_sumorigin:= lf_sumorigin + lDataSet2.FieldByName('BalTtl').AsFloat;
      lf_sumrmb:= lf_sumrmb + lDataSet2.FieldByName('BalStdTtl').AsFloat;
      next;
    end;
  end;
  if not(lDataSet1.State in [TDataSetState.dsEdit,TDataSetState.dsInsert]) then
  begin
    TSqlDataSet(lDataSet1 as TDataSet).Edit;
  end;
  lDataSet1.FieldByName('VouSumOrigin').AsFloat := lf_sumorigin;
  lDataSet1.FieldByName('VouSumRmb').AsFloat := lf_sumrmb;
  lDataSet1.Post;
end;
程序执行到最后时报错:运行系统初始化的时候发生异常:正在提交类型:Exception。
什么原因啊
回复

使用道具 举报

发表于 2007-1-11 14:35:33 | 显示全部楼层
楼主,错误定位在哪一句上?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-11 14:51:48 | 显示全部楼层
最后一句,本来我在lDataSet1.Post;这句是
lDataSet.ApplyUpdates;,但是换成lDataSet1.Post;还是报错。
好像跟流程的FlowBrokerAfterFlowOut里面用datasetbroker做更新报的错是一样的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-11 14:53:12 | 显示全部楼层
这段代码想实现的功能是,将从表中各明细的金额合计后填充到主表中进行更新。
回复 支持 反对

使用道具 举报

发表于 2007-1-12 09:15:57 | 显示全部楼层
楼主,应该是你的主表在同一个事务中执行了两次ApplyUpdates导致错误的。不过现有的代码中看不出错误的出处。

你试试把上面的代码写在DataSetBroker1BeforeApplyUpdates事件中。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-12 15:08:44 | 显示全部楼层
我试试看
回复 支持 反对

使用道具 举报

发表于 2007-1-18 08:36:08 | 显示全部楼层
楼主,搞定没有?
回复 支持 反对

使用道具 举报

发表于 2007-1-22 09:58:41 | 显示全部楼层
楼主,没有问题就结贴了!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-22 14:13:27 | 显示全部楼层
有问题的:楼主,应该是你的主表在同一个事务中执行了两次ApplyUpdates导致错误的。不过现有的代码中看不出错误的出处。

你试试把上面的代码写在DataSetBroker1BeforeApplyUpdates事件中。
因为是主从的关系,DataSetBroker1的ApplyUpdates在按保存的时候也触发了,问题是我去掉了lDataSet.ApplyUpdates后,报错信息没了,但是主表更新的数据确没有保存.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-22 14:17:20 | 显示全部楼层
不知道主从数据集在保存的时候事件触发的先后顺序是怎么样的ataSetBroker1BeforeApplyUpdates和DataSetBroker2BeforeApplyUpdates之间以及和数据集的提交顺序之间的关系
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-12-23 23:10 , Processed in 0.042971 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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