1、见窗口3,拷贝(采取先导出Excel,后合并回来的办法)按钮后,出现以下错误提示,一直按ESC键或Enter键,直到结束后检查,拷贝目的能实现。
此主题相关图片如下:02.jpg
2、如果删除“表A”中的“代码金额”列中的计算代码后,拷贝正常,且不会出现以上的提示。(表B中有重算表A的“代码金额”的代码)
3、如果继续1的话,会先出现以下的错误提示,拷贝编号对象改变了,但所得的拷贝内容仍然是第一次的内容。这个倒是可以另外自行解决,不是主要问题。
此主题相关图片如下:04.jpg
[此贴子已经被作者于2008-9-26 10:34:47编辑过]
拷贝采用Filler的话,同样会出现以上1中的错误提示,区别的是:一直按ESC键结束后检查拷贝了1次,如果一直按Enter键结束后检查拷贝了2次。见以下例子的窗口3的“拷贝2”按钮。
现有的项目中的拷贝做法同2楼,但出现的错误提示不同于1楼的
此主题相关图片如下:03.jpg
[此贴子已经被作者于2008-9-26 10:44:06编辑过]
错误提示已经很清楚了,代码金额列的计算代码有误:
dim sum1 As Double
dim sum2 As Double
sum1=DataTables("表B").Compute("Sum(数量)","[编号]='" & e.datarow("编号") & "'")
sum2=DataTables("表C").Compute("Sum(数量)","[编号]='" & e.datarow("编号") & "'")
e.datarow("金额")=sum1+sum2
你的表C有数量列吗?
惭愧,有点疏忽,改正该计算代码:
dim sum1 As Double
dim sum2 As Double
sum1=DataTables("表B").Compute("Sum(金额)","[编号]='" & e.datarow("编号") & "'")
sum2=DataTables("表C").Compute("Sum(金额)","[编号]='" & e.datarow("编号") & "'")
e.datarow("代码金额")=sum1+sum2
但是错误依然存在。
请老六排查问题,谢谢!
[此贴子已经被作者于2008-9-26 17:14:09编辑过]
这应该是个bug吧,按理说表达式子列也同样支持计算代码的。
将楼上的e.datarow("金额")改成e.datarow("计算金额")就正常了。
谢谢czy斑竹的提醒,对4楼的数据和代码作了必要的修正。
为了避免表达式列的“干扰”,我将之删去,请重新下载4楼的例子测试,该错误现象依然存在。
初步感觉是,Filler与导出&导入的拷贝动作,数据拷贝和该表DataColchanged等事件对该表数据的计算引用之间产生冲突所致;
不过表现方式不同而已,上传的例子和已经在做项目的错误提示不同。
不知道这个分析对不对?
[此贴子已经被作者于2008-9-26 14:40:45编辑过]
你首先要保证你得计算代码能通过:
dim sum1 As Double
dim sum2 As Double
sum1=DataTables("表B").Compute("Sum(代码金额)","[编号]='" & e.datarow("编号") & "'")
sum2=DataTables("表C").Compute("Sum(代码金额)","[编号]='" & e.datarow("编号") & "'")
e.datarow("代码金额")=sum1+sum2
表B和表C没有“代码金额”这一列,谈什么计算啊。
你首先要在表A中重算代码金额这一列,保证你的计算代码能通过啊。