以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  删除记录求和  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=179561)

--  作者:shqpldczj
--  发布时间:2022/8/30 6:34:00
--  删除记录求和
A表的成本金额=B表的金额合计(逻辑关联是B表的主合同号=A表的合同编号),我在删除B表的记录时重新计算A表的成本金额,现在发现删除B表的最后一条记录后A表的成本金额不为0
--  作者:shqpldczj
--  发布时间:2022/8/30 7:24:00
--  代码
If MessageBox.Show("是否删除?","请确认",MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.Yes Then
            Tables("外包合同").Current.Delete
            Dim dr2 As DataRow
            dr2 = DataTables("合同主表").Find("[合同编号] = \'" & Tables("外包合同").Current("主合同号") & "\'")
            dr2("成本金额") = DataTables("外包合同").sqlCompute("sum(审定金额)","主合同号 = \'" & dr2("合同编号") & "\'")
        End If

我这样写如果有多条外包记录就是到最后一条记录删除时,合同主表的成本金额不为0


--  作者:有点蓝
--  发布时间:2022/8/30 8:41:00
--  
原因
1、这一行都已经删除了,再使用Current就已经是另外一行了.
2、sqlCompute只能统计已经保存的数据,删除后要保存才会更新到数据库

dim ht as string = Tables("外包合同").Current("主合同号")
Tables("外包合同").Current.Delete
Tables("外包合同").save
Dim dr2 As DataRow
dr2 = DataTables("合同主表").Find("[合同编号] = \'" & ht & "\'")
dr2("成本金额") = DataTables("外包合同").sqlCompute("sum(审定金额)","主合同号 = \'" & ht & "\'")