以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助][推荐]关于行的自动计算  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=90379)

--  作者:taoxian
--  发布时间:2016/9/11 15:12:00
--  [求助][推荐]关于行的自动计算
[求助]



判断表内某列是否有相同值,在下一行添加数据时,数值 为某个实际数减去 其他相同值的数值和

有列A/B

A为字符列,可以相同;B为数值列
要求,当新增一行后,当填入A列值时,会判断当前表该列是否有其他相同值,如果有,则新增列的B列值为 某固定值 减去 当前表 A列是相同值 的 B列和。如没有,则被减数为0.

如 A列本来有两列相同,B列值分别为 50和100.     固定值为  300
当新行的 A列值和上两列匹配上后,则这个新行的 B列值 自动填写 为 150.

求解答!!!!
如图:固定值为300


  AAA   50    首先是自动填写为300,手动改写为50
   AAA   100   自动填写为300-50=250,手动改写为100
   AAA   150  自动填写 为300-50-100=150,无需改动


--  作者:狐狸爸爸
--  发布时间:2016/9/11 15:35:00
--  
Select Case e.DataCol.Name
 Case "A列"
            If e.NewValue > "" Then
                Dim sum As Integer = e.DataTable.Compute("sum(B列)", "[_Identify] < " & e.DataRow("_Identify"))
                e.DataRow("B列") = 300 - sum
            End If
End Select

--  作者:taoxian
--  发布时间:2016/9/11 16:59:00
--  

以上代码实现不是想要的结果:出现如下
我是第一  50    首先是自动填写为300,手动改写为50
我是另一个   250   这里应该为300,却自动填写为250,A列不一样,却参与了计算.
  我是另另外一个  0  这里也应该是300,却填写为0,也是参与了计算


我是第一  50    首先是自动填写为300,手动改写为50
我是另一个   250   这里应该为300,却自动填写为250,A列不一样,却参与了计算.
  我是另另外一个  0  这里也应该是300,却填写为0,也是参与了计算


需要实现如下,狐爸
固定值为300

 AAA   50    自动填写为300,改写为50 
   BBB   100   自动填写为300,改写为100
   BBB  50    之前BBB有100,所以减去,自动填写为200,手动改写为50
   AAA   50   之前AAA有50,自动填写为250,手动改写为50
   CCC   300   CCC才开始,所以是300-0,自动填写为300
   AAA   200   AAA之前已经有手动填写的100了,所以这里自动填写为200
   BBB   150   BBB之前有了150了,所以这里为150
   BBB   0   BBB已经没有了,所以自动填写为0


--  作者:有点蓝
--  发布时间:2016/9/12 8:14:00
--  
Select Case e.DataCol.Name
 Case "A列"
            If e.NewValue > "" Then
                Dim sum As Integer = e.DataTable.Compute("sum(B列)", "A列 = \'" & e.NewValue & "\' And [_Identify] < " & e.DataRow("_Identify"))
                e.DataRow("B列") = 300 - sum
            End If
End Select