以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  请教:这个自动计算怎么做?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=159040)

--  作者:sywmbk
--  发布时间:2020/12/11 15:07:00
--  请教:这个自动计算怎么做?
 如图!

 
图片点击可在新窗口打开查看此主题相关图片如下:捕获.png
图片点击可在新窗口打开查看

 总价=数量× 单价

 我在这个表格的 DataColChanged 中写代码如下:

if e.DataCol.name="单价" Or e.DataCol.name="数量" Then
    e.DataRow("总价")=e.DataRow("单价") * e.DataRow("数量")

End If

可是,这段代码根本就不执行。

请问,我该怎么做实现自动计算功能?

--  作者:有点蓝
--  发布时间:2020/12/11 15:16:00
--  
已有数据要重置重置一次列。

另外数量和单价不能是表达式列

--  作者:sywmbk
--  发布时间:2020/12/11 15:30:00
--  
 不行啊,我把这个窗口的文件发给您,帮忙看看故障在哪里?

数据库使用了sqlserver。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:合同编辑窗.rar



--  作者:有点蓝
--  发布时间:2020/12/11 15:53:00
--  
到全局表事件处理:http://www.foxtable.com/webhelp/topics/0671.htm
--  作者:sywmbk
--  发布时间:2020/12/11 16:58:00
--  
 全局表中写了计算,倒是实现了计算的目的。

 问题又来了,任何导致该数据表有变化的地方,这段代码都会被执行。我有没有办法知道是哪个form内的操作引起这个变化的?这样我就可以进行针对性地处理了。

 还有,我试了一下,发现 "form1"窗口中的表格 "table1" 的datatable并不是 "form1_table1" ,而是 DataSource 指定的哪个数据表。
[此贴子已经被作者于2020/12/11 17:07:29编辑过]

--  作者:有点蓝
--  发布时间:2020/12/11 17:18:00
--  
当然是 DataSource 指定的哪个数据表。

考虑改为使用fill,就是 "form1_table1"了

--  作者:sywmbk
--  发布时间:2020/12/11 17:37:00
--  
 我终于知道为什么在窗口表"form1_table1"中设置的“DataColChanged”代码不被执行的原因了!

 我使用datasource设置了表格
"form1_table1" 的数据源为data1,该表格的datatable就是设置的哪个data1。 但是窗口中设置的“DataColChanged”代码是datatables("form1_table1")的。也就是我压根就没有给data1设置 “DataColChanged” ,当然我想执行的代码就不能被执行了。

这种现象,除了在全局代码中设置,还能不能在窗口中设置? 有没有办法? ( 初学,受VB思维的影响太大了,抱歉。)

------------------------
做了个试验,使用fill方法,获得了datatables(
"form1_table1"), 修改表格中的数字,设置的代码
“DataColChanged” 执行了!