以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 关于跨表更新的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=87973) |
-- 作者:mayazql -- 发布时间:2016/7/23 22:47:00 -- 关于跨表更新的问题 我有一个订单表,希望删除订单的子表行后,对应的申请单的子表行已订购数量同步变为0,下面是代码: 问题是,我需要先将订单后的子表清零后,关掉当前的窗体,这时申请单对应的子表行已订购数量变为0,再打开删除数量为0的子表行才可以 如果直接删除订单的子表行,或者将订单的子表行清零后,删除订单的子表行,关闭当前窗体,对应的申请单的子表行已订购数量并不会变为0. 不知道原因 (因为一个申请单的子表行可能分成几个订单,所以需要有一个sum的过程) If Tables("pomain.posub").Current IsNot Nothing If MessageBox.Show("是否清零?","请确认",MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.Yes Then Tables("pomain.posub").Current("数量") = 0 Dim Val As Integer Val = DataTables("posub").SQLCompute("Sum(数量)","申请单子表标识 = \'"& tables("posub").Current("申请单子表标识") &"\'") Dim dr As DataRow = DataTables("prsub").find("pr子表标识 = \'" & Tables("posub").Current("申请单子表标识") & "\' ") If dr IsNot Nothing Then dr("订单数量") = Val DataTables("posub").Save() End If \' Tables("pomain.posub").Current.Delete (还不能马上删除清零的行,要先关闭下当前窗体,再打开这个窗体然后删除) End If End If DataTables("posub").Save() Tables("pomain").AllowEdit = False Tables("posub").AllowEdit = False e.Form.Close ‘----一定要关闭下当前窗体才可以 [此贴子已经被作者于2016/7/23 22:48:40编辑过]
|
-- 作者:mayazql -- 发布时间:2016/7/24 9:21:00 -- 不知道什么原因 |
-- 作者:大红袍 -- 发布时间:2016/7/24 9:31:00 -- 不清楚你的逻辑。做个例子发上来测试。 |
-- 作者:mayazql -- 发布时间:2016/7/24 20:54:00 -- 订单模块,订单编辑 - 删除子表行 谢谢 好像传不上去,我放云盘了。谢谢 链接: http://pan.baidu.com/s/1kVGsz8F 密码: ujmm
[此贴子已经被作者于2016/7/24 21:01:09编辑过]
|
-- 作者:Hyphen -- 发布时间:2016/7/25 9:04:00 -- 去掉窗口beforeClose事件 订单子表DataRowDeleting Dim Val As Integer Val = DataTables("posub").SQLCompute("Sum(数量)","申请单子表标识 = \'"& e.DataRow("申请单子表标识") &"\' And 订单子表标识 <> \'" & e.DataRow("订单子表标识") & "\' " ) Dim dr As DataRow = DataTables("prsub").find("pr子表标识 = \'" & e.DataRow("申请单子表标识") & "\' ") If dr IsNot Nothing Then dr("订单数量") = Val End If |
-- 作者:mayazql -- 发布时间:2016/7/25 11:37:00 -- 谢谢 |