以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 拷贝问题报告 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=703) |
||||
-- 作者:kylin -- 发布时间:2008/9/26 10:22:00 -- 拷贝问题报告
1、见窗口3,拷贝(采取先导出Excel,后合并回来的办法)按钮后,出现以下错误提示,一直按ESC键或Enter键,直到结束后检查,拷贝目的能实现。 此主题相关图片如下:02.jpg 2、如果删除“表A”中的“代码金额”列中的计算代码后,拷贝正常,且不会出现以上的提示。(表B中有重算表A的“代码金额”的代码) 3、如果继续1的话,会先出现以下的错误提示,拷贝编号对象改变了,但所得的拷贝内容仍然是第一次的内容。这个倒是可以另外自行解决,不是主要问题。 此主题相关图片如下:04.jpg [此贴子已经被作者于2008-9-26 10:34:47编辑过]
|
||||
-- 作者:kylin -- 发布时间:2008/9/26 10:42:00 -- 拷贝采用Filler的话,同样会出现以上1中的错误提示,区别的是:一直按ESC键结束后检查拷贝了1次,如果一直按Enter键结束后检查拷贝了2次。见以下例子的窗口3的“拷贝2”按钮。
|
||||
-- 作者:kylin -- 发布时间:2008/9/26 10:43:00 -- 现有的项目中的拷贝做法同2楼,但出现的错误提示不同于1楼的 此主题相关图片如下:03.jpg [此贴子已经被作者于2008-9-26 10:44:06编辑过]
|
||||
-- 作者:贺老六 -- 发布时间:2008/9/26 10:51:00 -- 错误提示已经很清楚了,代码金额列的计算代码有误: 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有数量列吗? |
||||
-- 作者:kylin -- 发布时间:2008/9/26 11:16:00 -- 惭愧,有点疏忽,改正该计算代码: 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编辑过]
|
||||
-- 作者:czy -- 发布时间:2008/9/26 13:32:00 -- 这应该是个bug吧,按理说表达式子列也同样支持计算代码的。 将楼上的e.datarow("金额")改成e.datarow("计算金额")就正常了。 |
||||
-- 作者:kylin -- 发布时间:2008/9/26 14:40:00 -- 谢谢czy斑竹的提醒,对4楼的数据和代码作了必要的修正。 为了避免表达式列的“干扰”,我将之删去,请重新下载4楼的例子测试,该错误现象依然存在。 初步感觉是,Filler与导出&导入的拷贝动作,数据拷贝和该表DataColchanged等事件对该表数据的计算引用之间产生冲突所致; 不过表现方式不同而已,上传的例子和已经在做项目的错误提示不同。 不知道这个分析对不对? [此贴子已经被作者于2008-9-26 14:40:45编辑过]
|
||||
-- 作者:贺老六 -- 发布时间:2008/9/26 15:12:00 -- 你首先要保证你得计算代码能通过: 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中重算代码金额这一列,保证你的计算代码能通过啊。 |
||||
-- 作者:czy -- 发布时间:2008/9/26 15:15:00 -- 应该这样吧? 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 |
||||
-- 作者:czy -- 发布时间:2008/9/26 15:17:00 -- 哦,我马后炮了。 |