以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  重置列很慢  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=96443)

--  作者:lilywang
--  发布时间:2017/2/21 9:52:00
--  重置列很慢
在MainTableChanged中重置列 表变得很慢才刷新出来
用着用着就变得很慢了,不知道什么原因

If MainTable.Name = "A表" Then
    \'DataTables("B表").DataCols("合同号").RaiseDataColChanged()
End If

--  作者:有点蓝
--  发布时间:2017/2/21 10:49:00
--  
不要频繁重置列。另外datacolchanged事件写了什么代码?
--  作者:lilywang
--  发布时间:2017/2/21 11:03:00
--  
请问还可以怎么改 如果需要切换表时能同步的话

DataColChanged应该不相关,我有好几个表写了重置的,DataColChanged没有写代码的,都很慢

--  作者:有点蓝
--  发布时间:2017/2/21 11:30:00
--  
重置列就是触发DataColChanged,DataColChanged没有写代码,重置列就没有任何意义

同步数据,直接通过DataColChanged事件即时更新即可,不是流水账这类特殊的用法,没有必要重置列


--  作者:lilywang
--  发布时间:2017/2/21 14:29:00
--  
老师,是我刚刚理解错了

我的B表DataColChanged下:

----------------------------------------------------------------------------------------------------

If e.DataCol.Name = "合同号" Then 
    Dim Filter As String = "[合同号] = \'" & e.NewValue & "\'"
    e.DataRow("到期款金额") = DataTables("A表).Compute("Sum(应付金额)", Filter)
End If

----------------------------------------------------------------------------------------------------

Select Case e.DataCol.Name
    Case "所属片区","合同签署人"        
        If e.DataRow.IsNull("所属片区") OrElse e.DataRow.IsNull("合同签署人")  Then
        Else
            Dim filter As String = CExp("所属片区=\'{0}\' and 合同签署人=\'{1}\'",e.DataRow("所属片区"),e.DataRow("合同签署人"))
            Dim dr As DataRow = DataTables("C表").Find(filter)
            If dr Is Nothing Then
                dr = DataTables("C表").AddNew()
                dr("所属片区") = e.DataRow("所属片区")
                dr("合同签署人") = e.DataRow("合同签署人")
            End If
            dr("总应收款") = e.DataTable.Compute("sum(未收款金额)",filter)
            dr("到期款") = e.DataTable.Compute("sum(到期款金额)",filter)
        End If
End Select

----------------------------------------------------------------------------------------------------


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

我看文档这样写,所以我这样做的,但是后期越来越慢了
[此贴子已经被作者于2017/2/21 14:40:02编辑过]

--  作者:有点色
--  发布时间:2017/2/21 15:35:00
--  

 这句代码 DataTables("B表").DataCols("合同号").RaiseDataColChanged()

 

 不要写。如果你希望重新计算,你可以重置列,或者单独做一个按钮执行。