Foxtable(狐表)用户栏目专家坐堂 → 行刷新数据速度很慢?


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

主题:行刷新数据速度很慢?

帅哥哟,离线,有人找我吗?
ZJZK2018
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
行刷新数据速度很慢?  发帖心情 Post By:2018/11/9 3:29:00 [显示全部帖子]

为什么执行下面代码,速度很慢,有没有其他办法?


        For Each c As Object In e.Form.Controls
            If Typeof c Is WinForm.Table Then
                For Each dr As DataRow In c.Table.DataTable.DataRows
                    dr.Load()
                Next
            End If
        Next

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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2018/11/9 16:09:00 [显示全部帖子]

为什么我加了红色代码,一执行变没有数据
需求是:如果Tables("项目信息")中“选中”项为true,则加载与“项目编号”相同的数据,如查没有“选中”的行,则不加载数据

e.Form.StopRedraw() '停止绘制窗口
For Each c As Object In e.Form.Controls
    If Typeof c Is WinForm.Table Then
        c.Table.DataTable.StopRedraw() '停止绘制表
        For Each dr As Row In Tables("项目信息").Rows
            If dr("选中") = True Then
                c.Table.DataTable.LoadFilter = "项目编号 = '" & dr("项目编号") & "'"
                c.Table.DataTable.Load()
            Else
                c.Table.DataTable.LoadFilter = "[_Identify] Is Null"
                c.Table.DataTable.Load()
            End If
            If c.Table.Rows.Count > 0 Then
                c.Table.Select(0,0) '光标在第一行第一列位置
            End If
        Next
        c.Table.DataTable.ResumeRedraw() '恢复绘制表
    End If
Next
e.Form.ResumeRedraw()  '恢复绘制窗口

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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2018/11/9 22:53:00 [显示全部帖子]

老师为什么下面代码测试没问题,但筛选不出数据来,写在AfterLoad事件中

Dim tb1 As Table = Tables(e.Form.Name & "_Table1")
Dim lst As New List(Of String)
lst = Tables("项目信息").DataTable.GetValues("项目编号","选中 = 1")
If lst.Count = 0 Then
    tb1.DataTable.LoadFilter = "项目编号 is Null"
Else
    Dim ids As String
    For Each dr As DataRow In tb1.DataTable.DataRows
        ids = ids & ",'" & dr("项目编号") & "'"
    Next
    ids = ids.Trim(",")
    tb1.DataTable.LoadFilter = "项目编号 in (" & ids & ")"
End If
tb1.DataTable.Load()
[此贴子已经被作者于2018/11/9 23:01:04编辑过]

 回到顶部