以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何实现这种计算  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=90847)

--  作者:hbhb
--  发布时间:2016/9/22 18:39:00
--  如何实现这种计算
如果第一行第一列原来的值为2,如果第一行第二列输入4 则第一行第一列等于2+4 = 6,如果第一行第三列输入10 则第一行第一列等于2+4 + 10 = 16。
如果第一行第一列原来的值为5,如果第一行第二列输入4 则第一行第一列等于5+4 = 9,如果第一行第三列输入10 则第一行第一列等于5+4+ 10 =  19。


--  作者:hbhb
--  发布时间:2016/9/22 19:32:00
--  
afteredit事件中为何不能实现以上功能?原来的值如何保存不变?

Select Case e.Col.Name
    Case "第二列"
   Dim a1 As Double
  a1 = e.Row("第二列")
   Case "第三列"
 
 Dim a2 As Double
  a2 = e.Row("第二列")

e.Row(第一列) = e.Row(第一列) + a2 + a3
 End Select


--  作者:188802386
--  发布时间:2016/9/22 20:08:00
--  
建议第一列,第二列,第三列,合计列
--  作者:188802386
--  发布时间:2016/9/22 20:09:00
--  
合计列采用表达式列,只要1 2 3列一变化,合计列就自动变化
--  作者:hbhb
--  发布时间:2016/9/22 21:05:00
--  
蓝蓝的天大师!!!!!!
--  作者:有点蓝
--  发布时间:2016/9/22 21:42:00
--  

DataColChanged


Select Case e.DataCol.Name
    Case "第二列","第三列"
        e.DataRow("第一列") = e.DataRow("第一列") + e.DataRow(""第二列"") + e.DataRow(""第三列"")
End Select

--  作者:188802386
--  发布时间:2016/9/22 21:53:00
--  
这种会不会存在再次修改第二列或第三列时,第一列的数字累加呢
--  作者:有点蓝
--  发布时间:2016/9/22 22:06:00
--  
除非初始值是固定的,后面几列又是按顺序录入的,否则没有办法避免
--  作者:hbhb
--  发布时间:2016/9/23 0:08:00
--  
还是累计呀,有无办法不累计?
--  作者:有点蓝
--  发布时间:2016/9/23 8:39:00
--  
试试这个

DataColChanged

Select Case e.DataCol.Name
    Case "第二列","第三列"
        Dim v As Double = e.DataRow("第一列")
        If e.OldValue <> Nothing Then v = v - e.OldValue
        e.DataRow("第一列") = e.DataRow(e.DataCol.Name) + v
End Select