Foxtable(狐表)用户栏目专家坐堂 → 关于跨表更新的问题


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

主题:关于跨表更新的问题

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


加好友 发短信
等级:小狐 帖子:370 积分:2548 威望:0 精华:0 注册:2012/10/29 8:32:00
关于跨表更新的问题  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:370 积分:2548 威望:0 精华:0 注册:2012/10/29 8:32:00
  发帖心情 Post By:2016/7/24 9:21:00 [只看该作者]

不知道什么原因

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/7/24 9:31:00 [只看该作者]

 不清楚你的逻辑。做个例子发上来测试。

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


加好友 发短信
等级:小狐 帖子:370 积分:2548 威望:0 精华:0 注册:2012/10/29 8:32:00
  发帖心情 Post By:2016/7/24 20:54:00 [只看该作者]

订单模块,订单编辑 - 删除子表行
谢谢
好像传不上去,我放云盘了。谢谢

链接: http://pan.baidu.com/s/1kVGsz8F 密码: ujmm
[此贴子已经被作者于2016/7/24 21:01:09编辑过]

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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By: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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:370 积分:2548 威望:0 精华:0 注册:2012/10/29 8:32:00
  发帖心情 Post By:2016/7/25 11:37:00 [只看该作者]

谢谢



 回到顶部