以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  窗口表数据自动更新问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=139171)

--  作者:ideaplayer
--  发布时间:2019/8/7 11:50:00
--  窗口表数据自动更新问题
现在发现一个问题:

窗口中引用有关联表《项目●订单执行》,其中关联表《项目●订单执行》的“回款总金额”和“成本已付金额”列为跨表引用数据。

但是,在初次打开项目时,再打开窗口后,引用的关联表A*B的X列数据未能自动引用更新,发现必须直接点击一次主表《订单执行》后,再回去看窗口中的“回款总金额”和“成本已付金额”列,这时数据才会正常引用的。

主表《订单执行》的Datecolchanged代码如下:

\'Select Case e.DataCol.Name
If e.DataCol.Name = "项目编号" Then \'发生变化的是产品列.
    \'则累计订单表中同名产品总的销售量,然后赋值给变动行的数量列
    e.DataRow("回款总金额") = DataTables("客户回款").Compute("Sum(回款金额)","[项目编号] = \'" & e.NewValue & "\'")
End If

\'客户回款::判断是否欠款,然后标记回款状态

 If e.DataRow.IsNull("欠款总金额") Then
     e.DataRow("客户回款状态") = "未结清货款"
 Else
      If e.DataRow("欠款总金额") = 0 Then
         e.DataRow("客户回款状态") = "已全部回款"
      Else
        e.DataRow("客户回款状态") = "未结清货款"
      End If
End If
\'以上为计算标记客户销售货款结清状态程序
\'----------------------------------

If e.DataCol.Name = "项目编号" Then \'发生变化的是产品列.
    \'则累计订单表中同名产品总的销售量,然后赋值给变动行的数量列
    e.DataRow("成本已付金额") = DataTables("供应商结算").Compute("Sum(付款金额)","[项目编号] = \'" & e.NewValue & "\'")
End If

\'客户回款::判断是否欠款,然后标记回款状态

 If e.DataRow.IsNull("成本欠款金额") Then
     e.DataRow("供应商结算状态") = "未结算完成"
 Else
      If e.DataRow("成本欠款金额") = 0 Then
         e.DataRow("供应商结算状态") = "已结算完成"
      Else
        e.DataRow("供应商结算状态") = "未结算完成"
      End If
End If
\'以上为计算标记客户销售货款结清状态程序


请问想实现首次打开项目时,直接打开窗口后,如何实现窗口内数据的实时更新? 谢谢

--  作者:有点蓝
--  发布时间:2019/8/7 12:05:00
--  
窗口afterload事件

DataTables("订单执行").DataCols("项目编号").RaiseDataColChanged