以文本方式查看主题

-  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
--  拷贝问题报告
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:例子.table


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”按钮。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:例子.table


--  作者: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

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:例子.table


但是错误依然存在。
请老六排查问题,谢谢!
[此贴子已经被作者于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
--  
哦,我马后炮了。