以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]这样的乘积如何实现? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=54606) |
-- 作者:rophy0952 -- 发布时间:2014/7/31 13:23:00 -- [求助]这样的乘积如何实现? 已在表事件datacolchanged中写入代码,但是不知是否是因为“分切净重_合计”的数值是随着“分切净重_1”、分切净重_2”、分切净重_3” 。。。。的数值变化而变化的原因,最后的分切金额那里没有数字出现,请指教,谢谢! If e.DataCol.name = "分切净重_合计" Then Dim dr As DataRow = e.DataRow dr("分切金额") = dr("分切净重_合计") * dr("分切单价") End If |
-- 作者:jijianjsj -- 发布时间:2014/7/31 13:36:00 -- 表达式列的特殊性 我们知道,列的值发生变化,会相继触发DataColChanging和DataColChanged事件。 Select Case
e.DataCol.Name 但是上述代码是无效的,因为作为表达式列,C列发生变化的时候,并不会触发DataColChanged事件。 我们可以换个思路,既然C列是有A列和B列计算得出,那么C列发生变化,肯定是因为A列或B列发生变化引起的。 Select
Case e.DataCol.Name |
-- 作者:有点甜 -- 发布时间:2014/7/31 14:25:00 -- 表达式列不能触发Datacolchanged事件
http://www.foxtable.com/help/topics/2381.htm
|
-- 作者:rophy0952 -- 发布时间:2014/7/31 15:26:00 -- 谢谢指教! 此主题相关图片如下:qq截图20140731152558.jpg 我重新试过将代码加入其中,但还是不显示数据。 Select Case e.DataCol.name Case "分切净重_1","分切净重_2","分切净重_3","分切净重_4","分切净重_5","分切净重_6","分切净重_7","分切净重_8","分切净重_9","分切净重_10" Dim dr As DataRow = e.DataRow dr("分切净重_合计") = dr("分切净重_1")+dr("分切净重_2")+dr("分切净重_3")+dr("分切净重_4")+dr("分切净重_5")+dr("分切净重_6")+dr("分切净重_7")+dr("分切净重_8")+dr("分切净重_9")+dr("分切净重_10") dr("分切金额") = dr("分切净重_合计") * dr("分切单价") End Select |
-- 作者:zyqzyy -- 发布时间:2014/7/31 15:36:00 -- 试试这样改:
Select Case e.DataCol.name
Case "分切净重_1","分切净重_2","分切净重_3","分切净重_4","分切净重_5","分切净重_6","分切净重_7","分切净重_8","分切净重_9","分切净重_10"
Dim dr As DataRow = e.DataRow
Dim i As Integer
i = dr("分切净重_1")+dr("分切净重_2")+dr("分切净重_3")+dr("分切净重_4")+dr("分切净重_5")+dr("分切净重_6")+dr("分切净重_7")+dr("分切净重_8")+dr("分切净重_9")+dr("分切净重_10")
dr("分切金额") = i * dr("分切单价")
End Select |
-- 作者:rophy0952 -- 发布时间:2014/7/31 15:55:00 -- 还是不行,分切金额那列依然没有数值。 |
-- 作者:有点甜 -- 发布时间:2014/7/31 15:56:00 -- 回复4楼,你需要重置一下列,才会重新计算的。
http://www.foxtable.com/help/topics/1469.htm
|
-- 作者:rophy0952 -- 发布时间:2014/7/31 16:23:00 -- 回复有点甜: 用代码重置列后,系统出现错误,然后自动关闭。
|
-- 作者:有点甜 -- 发布时间:2014/7/31 16:32:00 -- 以下是引用rophy0952在2014-7-31 16:23:00的发言:
回复有点甜: 用代码重置列后,系统出现错误,然后自动关闭。
你Datacolchanged不要有多余代码,这一段代码没有问题
Select Case e.DataCol.name
Case "分切净重_1","分切净重_2","分切净重_3","分切净重_4","分切净重_5","分切净重_6","分切净重_7","分切净重_8","分切净重_9","分切净重_10"
Dim dr As DataRow = e.DataRow
dr("分切净重_合计") = dr("分切净重_1")+dr("分切净重_2")+dr("分切净重_3")+dr("分切净重_4")+dr("分切净重_5")+dr("分切净重_6")+dr("分切净重_7")+dr("分切净重_8")+dr("分切净重_9")+dr("分切净重_10")
dr("分切金额") = dr("分切净重_合计") * dr("分切单价")
End Select |