以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 跨表计算问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=93353) |
-- 作者:yancheng -- 发布时间: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 -- 发布时间: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 |
-- 作者:有点蓝 -- 发布时间: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 |