以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  表间更新第二次才生效  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=111169)

--  作者:wei0769
--  发布时间:2017/12/16 16:01:00
--  表间更新第二次才生效
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:test.foxdb


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

--  作者:有点蓝
--  发布时间:2017/12/16 16:31:00
--  
Select Case e.DataCol.name
    Case "交货数","订单号"
        Dim dr As DataRow
        dr = DataTables("订").Find("订单号 = \'"  & e.DataRow("订单号") & "\'") \'找出订单表中的订单
        If dr IsNot Nothing Then
            dr("已交数") = e.DataTable.Compute("sum(交货数)","订单号 = \'"  & e.DataRow("订单号") & "\'")
        Else
            MessageBox.show("没有此订单,不能出货")
        End If
End Select

--  作者:有点蓝
--  发布时间:2017/12/16 16:32:00
--  
“订”表datacolchanged
Select Case e.DataCol.Name
Case "订单数","已交数"
    e.DataRow("未交数") = e.DataRow("订单数")  - e.DataRow("已交数") 
End Select

--  作者:wei0769
--  发布时间:2017/12/16 16:50:00
--  

现在这样解决

 


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

 

用程序在A表改变B表的数据,B表好似不会触发 datacolchanged 事件


--  作者:有点蓝
--  发布时间:2017/12/16 17:17:00
--  
你使用的sqlfind,sqlsreplacefor这类的方法,操作的是后台数据,不会触发前台的事件的,因为前台的数据并没有改变

不建议使用这种方式进行数据处理,尽量使用合计数据的方法

--  作者:wei0769
--  发布时间:2017/12/16 18:57:00
--  
如果当前没有加载相关数据,不是会更新不了?
主要是因为这样才后台更新

--  作者:有点甜
--  发布时间:2017/12/17 20:53:00
--  
以下是引用wei0769在2017/12/16 18:57:00的发言:
如果当前没有加载相关数据,不是会更新不了?
主要是因为这样才后台更新

 

后台更新不会触发事件的。你可以主动触发datacolchanged事件,或者是根据逻辑查找到数据修改值。