以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  RaiseDataColChanged  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=135575)

--  作者:lfz123
--  发布时间:2019/5/29 16:07:00
--  RaiseDataColChanged
我在流水账的datacolchanged事件中,代码失效
If e.DataCol.name = "申请单号"  Then
    Dim dr As DataRow = DataTables("申请单").SQLfind("申请单号 = \'"& e.datarow("申请单号") & "\'")
    If dr IsNot Nothing Then
        DataTables("申请单").DataCols("申请单号").RaiseDataColChanged(dr)
    End If
End If

--  作者:有点甜
--  发布时间:2019/5/29 16:13:00
--  

 

对于没有加载出来的数据,没有必要也不能重置列。

 

你流水账的计算,请在加载数据出来以后,再重置。


--  作者:lfz123
--  发布时间:2019/5/29 16:22:00
--  回复:(有点甜) 对于没有加载出来的数据,没...
甜老师,我的申请单的DataColChanged事件中有如下代码,所以需要重置,因为我在登记流水账的时候随时要知道申请单的未付余额,我的系统原来大量用的关联表,后来接触动态加载,有些功能实现不了,我就取消了系统所有关联表的设置,该用代码计算,把我整的晕头转向了,
If e.DataCol.Name = "申请单号" Then
    Dim Filter As String = "[申请单号] = \'" & e.NewValue & "\'"
    e.DataRow("已预支金额") = DataTables("流水账").SQLCompute("Sum(支出)", Filter)
End If

--  作者:有点甜
--  发布时间:2019/5/29 16:27:00
--  

那请改成

 

If e.DataCol.name = "申请单号"  Then
    Dim dr As DataRow = DataTables("申请单").find("申请单号 = \'"& e.datarow("申请单号") & "\'")
    If dr IsNot Nothing Then
        DataTables("申请单").DataCols("申请单号").RaiseDataColChanged(dr)
    End If
    Dim fdr As DataRow = DataTables("申请单").sqlfind("申请单号 = \'"& e.datarow("申请单号") & "\'")  
    If fdr isNot Nothing Then
        fdr("已预支金额") = DataTables("流水账").SQLCompute("Sum(支出)", "申请单号 = \'"& e.datarow("申请单号") & "\'")
        fdr.save
    End If
End If