以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  表的加载效率  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=50273)

--  作者:ndxfke
--  发布时间: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
--  发布时间:2014/5/4 8:41:00
--  
说明你的需求.例子发上来,这样能为帮助你的人,省下不少功夫,才能更加快速的帮到您
--  作者:有点甜
--  发布时间:2014/5/4 10:35:00
--  

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

 

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

 


--  作者:ndxfke
--  发布时间:2014/5/4 16:54:00
--  
以下是引用有点甜在2014-5-4 10:35:00的发言:

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

 

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

 

 

这样速度提升很多。

 

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


--  作者:Bin
--  发布时间:2014/5/4 16:56:00
--  
再操作改变值会触发DataColChanged的
--  作者:ndxfke
--  发布时间:2014/5/4 17:21:00
--  

好的,谢谢!