Foxtable(狐表)用户栏目专家坐堂 → 重置列很慢


  共有1340人关注过本帖树形打印复制链接

主题:重置列很慢

美女呀,离线,留言给我吧!
lilywang
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:81 积分:627 威望:0 精华:0 注册:2016/7/29 11:24:00
重置列很慢  发帖心情 Post By:2017/2/21 9:52:00 [只看该作者]

在MainTableChanged中重置列 表变得很慢才刷新出来
用着用着就变得很慢了,不知道什么原因

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

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107304 积分:545781 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/2/21 10:49:00 [只看该作者]

不要频繁重置列。另外datacolchanged事件写了什么代码?

 回到顶部
美女呀,离线,留言给我吧!
lilywang
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:81 积分:627 威望:0 精华:0 注册:2016/7/29 11:24:00
  发帖心情 Post By:2017/2/21 11:03:00 [只看该作者]

请问还可以怎么改 如果需要切换表时能同步的话

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

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107304 积分:545781 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/2/21 11:30:00 [只看该作者]

重置列就是触发DataColChanged,DataColChanged没有写代码,重置列就没有任何意义

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


 回到顶部
美女呀,离线,留言给我吧!
lilywang
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:81 积分:627 威望:0 精华:0 注册:2016/7/29 11:24:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/21 15:35:00 [只看该作者]

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

 

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

 


 回到顶部