以文本方式查看主题 - 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 ---------------------------------------------------------------------------------------------------- 我看文档这样写,所以我这样做的,但是后期越来越慢了 [此贴子已经被作者于2017/2/21 14:40:02编辑过]
|
-- 作者:有点色 -- 发布时间:2017/2/21 15:35:00 -- 这句代码 DataTables("B表").DataCols("合同号").RaiseDataColChanged()
不要写。如果你希望重新计算,你可以重置列,或者单独做一个按钮执行。
|