Foxtable(狐表)用户栏目专家坐堂 → [求助][推荐]关于行的自动计算


  共有1736人关注过本帖树形打印复制链接

主题:[求助][推荐]关于行的自动计算

帅哥哟,离线,有人找我吗?
taoxian
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:115 积分:1056 威望:0 精华:0 注册:2016/4/10 10:25:00
[求助][推荐]关于行的自动计算  发帖心情 Post By: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,无需改动


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47449 积分:251065 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:115 积分:1056 威望:0 精华:0 注册:2016/4/10 10:25:00
  发帖心情 Post By: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


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107896 积分:548849 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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

 回到顶部