Foxtable(狐表)用户栏目专家坐堂 → 跨表计算问题


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

主题:跨表计算问题

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


加好友 发短信
等级:四尾狐 帖子:842 积分:5971 威望:0 精华:0 注册:2013/6/29 9:36:00
跨表计算问题  发帖心情 Post By:2016/11/26 8:57:00 [只看该作者]

洽商汇总,表事件DataColChanged写入以下代码:

S elect Case e.DataCol.name
    Case "洽商增加预算额","合同编号"
        Dim dr As DataRow = DataTables("施工合同").find("合同编号 = '" & e.DataRow("合同编号") & "'")
        If dr IsNot Nothing Then
            dr("洽商增加预算额")=DataTables("洽商汇总").Compute("sum(洽商增加预算额)","合同编号= '" & e.DataRow("合同编号") & "'")

            dr.Save
        End If
End S elect

用以跨表计算:施工合同 的:洽商增加预算额。
但是有个问题,当:一行数据的“合同编号”发生改变,"洽商增加预算额",不变。(本表只有一行,这个“合同编号”的数据时),这个“合同编号”(变化前的合同编号)的合同汇总会不计算变更前的合同编号。
所有,合同编号变更前比如"洽商增加预算额"为:100;改变:合同编号,后,应该为:0,但去没有变,还是:100;
像这种怎么解决好一些?
[此贴子已经被作者于2016/11/26 9:12:28编辑过]

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


加好友 发短信
等级:四尾狐 帖子:842 积分:5971 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2016/11/26 9:37:00 [只看该作者]

我把代码做到:施工合同,表的datacolchanged里面,如下:来刷新汇总,是不是这样好一些?

Sele ct Case e.DataCol.name
    Case "合同主要内容"
        If e.DataRow("结帐") = False Then
            Dim dr As DataRow = e.DataRow
            Dim dr1 As DataRow = DataTables("洽商汇总").Find("合同编号= '" & dr("合同编号") & "'")
            If dr1 IsNot Nothing Then
                dr("洽商增加预算额")=DataTables("洽商汇总").Compute("sum(洽商增加预算额)","合同编号= '" & dr("合同编号") & "'")
                dr("洽商增加结算额")=DataTables("洽商汇总").Compute("sum(洽商增加结算额)","合同编号= '" & dr("合同编号") & "'")
                dr("洽商减少预算额")=DataTables("洽商汇总").Compute("sum(洽商减少预算额)","合同编号= '" & dr("合同编号") & "'")
                dr("洽商减少结算额")=DataTables("洽商汇总").Compute("sum(洽商减少结算额)","合同编号= '" & dr("合同编号") & "'")
            Else
                dr("洽商增加预算额")=0
                dr("洽商增加结算额")=0
                dr("洽商减少预算额")=0
                dr("洽商减少结算额")=0
            End If
            
            Dim dr2 As DataRow = DataTables("设计汇总").find("合同编号 = '"& e.datarow("合同编号")&"'")
            If dr2 IsNot Nothing Then
                dr("设计费预算")=DataTables("设计汇总").Compute("sum(设计费预算)","合同编号='" & e.DataRow("合同编号") & "'")
                dr("设计费结算")=DataTables("设计汇总").Compute("sum(设计费结算)","合同编号='" & e.DataRow("合同编号") & "'")
            Else
                dr("设计费预算")=0
                dr("设计费结算")=0
            End If
            
        End If
End Se lect

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


加好友 发短信
等级:超级版主 帖子:106097 积分:539590 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/26 9:51:00 [只看该作者]

洽商汇总,表事件DataColChanged

Select Case e.DataCol.name
    Case "合同编号"
        If e.NewValue > "" Then
            e.DataRow("洽商增加预算额")=e.DataTable.Compute("sum(洽商增加预算额)","合同编号= '" & e.NewValue & "'")
        Else
            e.DataRow("洽商增加预算额")=Nothing
        End If
End Select

 回到顶部