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


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

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

帅哥哟,离线,有人找我吗?
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

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/9 9:00:00 [只看该作者]

For Each c As Object In e.Form.Controls
    If Typeof c Is WinForm.Table Then
        c.Table.DataTable.load
    End If
Next

 回到顶部
帅哥哟,离线,有人找我吗?
ZJZK2018
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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()  '恢复绘制窗口

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/9 16:50:00 [只看该作者]

参考这里写加载代码

 

http://www.foxtable.com/webhelp/scr/2228.htm

 


 回到顶部
帅哥哟,离线,有人找我吗?
ZJZK2018
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

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
    tb1.DataTable.LoadFilter = "项目编号 in ('" & String.Join("','",lst.ToArray)  & "')"
End If
msgbox(tb1.DataTable.LoadFilter)
tb1.DataTable.Load()

 回到顶部