以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 删除记录求和 (http://foxtable.com/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 & "\'") |