Foxtable(狐表)用户栏目专家坐堂 → 表的加载效率


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

主题:表的加载效率

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


加好友 发短信
等级:三尾狐 帖子:792 积分:5649 威望:0 精华:0 注册:2013/12/9 20:12:00
表的加载效率  发帖心情 Post By:2014/5/3 22:12:00 [只看该作者]

请教,

 

我有个颜色类别表,17行数据,加载数据时,持续时间达30秒。

 

而这个表,只写了一个 DataColChanged 事件。代码如下,请大神们帮分析下如何优化可提高效率。

 

Select Case e.DataCol.Name
    Case "颜色类别"
        Dim fdr As DataRow = DataTables("颜色类别").Find("颜色类别 = '" & e.DataRow("颜色类别") & "' and [_Identify] <> " & e.DataRow("_Identify"))
        If fdr IsNot Nothing Then
            e.DataRow("类别编码") = fdr("类别编码")
        Else
            Dim max As String
            max = e.DataTable.Compute("Max(类别编码)","[_Identify] < '" & e.DataRow("_Identify") & "'") '取得最大编号
            If max > "" Then
                e.DataRow("类别编码") = Format(CInt(max) + 1,"00")
            Else
                e.DataRow("类别编码") = "01"
            End If
        End If
    Case "颜色名称"
        Dim fdr As DataRow = DataTables("颜色类别").Find("颜色类别 = '" & e.DataRow("颜色类别") & "' and 颜色名称 = '" & e.DataRow("颜色名称") & "' and [_Identify] <> " & e.DataRow("_Identify"))
        If fdr IsNot Nothing Then
            e.DataRow("名称编码") = fdr("名称编码")
        Else
            Dim max As String
            max = e.DataTable.Compute("Max(名称编码)","[_Identify] < '" & e.DataRow("_Identify") & "' And 颜色类别 = '" & e.DataRow("颜色类别") & "'")  '取得最大编号
            If max > "" Then
                e.DataRow("名称编码") = Format(CInt(max) + 1,"00")
            Else
                e.DataRow("名称编码") = "01"
            End If
        End If
      e.DataTable.Save()
End Select

[此贴子已经被作者于2014-5-3 22:12:03编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/5/4 8:41:00 [只看该作者]

说明你的需求.例子发上来,这样能为帮助你的人,省下不少功夫,才能更加快速的帮到您

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


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

试试在加载的时候,控制一下不触发任何事件,参考。

 

 http://www.foxtable.com/help/topics/2218.htm

 


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


加好友 发短信
等级:三尾狐 帖子:792 积分:5649 威望:0 精华:0 注册:2013/12/9 20:12:00
  发帖心情 Post By:2014/5/4 16:54:00 [只看该作者]

以下是引用有点甜在2014-5-4 10:35:00的发言:

试试在加载的时候,控制一下不触发任何事件,参考。

 

 http://www.foxtable.com/help/topics/2218.htm

 

 

这样速度提升很多。

 

但我有个疑问,如果在启动项目加载表的时候,不执行表事件。如果启动完成后,用户在操作表的时候,表事件会生效吗?


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/5/4 16:56:00 [只看该作者]

再操作改变值会触发DataColChanged的

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


加好友 发短信
等级:三尾狐 帖子:792 积分:5649 威望:0 精华:0 注册:2013/12/9 20:12:00
  发帖心情 Post By:2014/5/4 17:21:00 [只看该作者]

好的,谢谢!


 回到顶部