以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  如果根据子表的未交货状况,设置父表状态  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=99167)

--  作者:明天的灵
--  发布时间:2017/4/13 17:30:00
--  如果根据子表的未交货状况,设置父表状态
订单主表与订单明细表已建立订单号关联。
现在需要根据子订单已交货完毕的状态(未交数量为0),设置对应的订单主表“已结清”为True
例如:
订单号111有二个子订单,都已交货,应设置“已结清”为True
订单号400800有三个子订单,其中一个货品有5件未交货,设置“已结清”为False

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:订单测试项目-统计子表.table



[此贴子已经被作者于2017/4/13 19:12:10编辑过]

--  作者:有点色
--  发布时间:2017/4/13 17:50:00
--  

改成表达式列,然后写公式 iif(Sum(Child(订单明细).未交数量)=0, true, false)

 

写代码也可以,在主表DataColChanged事件,写代码

 

If e.DataCol.name = "客户订单号" Then
    Dim sum As Double = DataTables("订单明细表").Compute("sum(未交数量)", "客户订单号 = \'" & e.DataRow("客户订单号") & "\'")
    If sum = 0 Then
        e.DataRow("已结清") = True
    Else
        e.DataRow("已结清") = False
    End If
End If


--  作者:明天的灵
--  发布时间:2017/4/13 19:06:00
--  
能不能有另外算法。
实际生产中,某个货品有可能多送货,这时未交数量为负数
同一个订单中,未交数量有可能与另外个 负数正好一样。
如订单号400800有三个子订单,前一个未交数量为5件,最一项又多送了5件。
这种情况还不能设置为True


图片点击可在新窗口打开查看此主题相关图片如下:子表.jpg
图片点击可在新窗口打开查看


--  作者:有点色
--  发布时间:2017/4/13 19:18:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:订单测试项目-统计子表.table


--  作者:明天的灵
--  发布时间:2017/4/13 19:42:00
--  
谢谢版主
--  作者:125651911
--  发布时间:2022/3/6 23:50:00
--  
出库明细表 DataColChanged :
If e.DataCol.Name = "未交数量" Then
    DataTables("订单主表").datacols("客户订单号").RaiseDataColChanged("客户订单号 = \'" & e.DataRow("客户订单号") & "\'")
End If

触发订单主表和明细表变动后,怎样自动保存订单主表和明细表?

--  作者:有点蓝
--  发布时间:2022/3/7 8:24:00
--  
If e.DataCol.Name = "未交数量" Then
    DataTables("订单主表").datacols("客户订单号").RaiseDataColChanged("客户订单号 = \'" & e.DataRow("客户订单号") & "\'")
 DataTables("订单主表").save
 DataTables("订单明细表").save
End If