Foxtable(狐表)用户栏目专家坐堂 → 如何同步更新目录树内容


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

主题:如何同步更新目录树内容

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/4/10 17:13:00 [显示全部帖子]

楼主,你功能分类表的DataColChanged事件代码非常糟糕,DataColChanged事件通常只处理发生变化的行,而你的代码处理表中所有的行。

如果你有1万行,某行发生变化,常规的DataColChanged代码就是处理此行而已,而你却要处理整个1万行。如果执行RaseDtaColChanged事件的话,等于就处理了1万*1万,也就是1亿次。

也就是说,你目前的代码,效率比常规差了一万倍,不慢是不正常的。

 

我帮你将代码稍微改看一下,细节你再自己调整,修改后你会发现,下载刷新一次是瞬间完成的:

 

If e.DataCol.Name = "功能分类_代码"  Then
    Dim dr,dr0,dr1 As DataRow
    dr = e.DataRow
    If dr("功能分类_代码").length= 3
        dr("科目全称") = dr("功能分类_科目名称")
        dr("功能分类_类") = dr("功能分类_代码") & ":" & dr("功能分类_科目名称")
    ElseIf dr("功能分类_代码").length = 5
        dr0 = DataTables("功能分类").Find("[功能分类_代码] =  '" & left(dr("功能分类_代码"),3) & "'")
        If dr0 IsNot Nothing
            dr("科目全称") = dr0("功能分类_科目名称") & "-" & dr("功能分类_科目名称")
            dr("功能分类_类") = dr0("功能分类_代码") & ":" & dr0("功能分类_科目名称")
            dr("功能分类_款") = dr("功能分类_代码") & ":" & dr("功能分类_科目名称")
        End If
    ElseIf dr("功能分类_代码").length = 7
        dr0 = DataTables("功能分类").Find("[功能分类_代码] =  '" & left(dr("功能分类_代码"),3) & "'")
        dr1 = DataTables("功能分类").Find("[功能分类_代码] =  '" & left(dr("功能分类_代码"),5) & "'")
        If dr1 IsNot Nothing
            dr("科目全称") = dr0("功能分类_科目名称") & "-" & dr1("功能分类_科目名称") & "-" & dr("功能分类_科目名称")
            dr("功能分类_类") = dr0("功能分类_代码") & ":" & dr0("功能分类_科目名称")
            dr("功能分类_款") = dr1("功能分类_代码") & ":" & dr1("功能分类_科目名称")
            dr("功能分类_项") = dr("功能分类_代码") & ":" & dr("功能分类_科目名称")
        End If
    End If
End If

 

DataColChanged事件代码是FoxTable的核心,非常重要,一个项目的大部分代码会写在这里,务必要了解其作用原理。

另科目名称不能自动更新是什么意思?

[此贴子已经被作者于2011-4-10 17:20:41编辑过]

 回到顶部