以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何同步更新目录树内容  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=9423)

--  作者:bl018
--  发布时间:2011/4/9 23:41:00
--  如何同步更新目录树内容

请帮手解决如下问题:

  1。如何在“功能分类”窗口中实现新增(或修改)记录后,左边的目录树项目同步更新。在那里设置。

  2。请试一下点窗口中“刷新”,点一下要时间很长,,可或帮手看一下公式是否出错。(其实也是上一个问题)只不过我将“重置功能”换一下按钮命。发现更新要很长时间。

  3。请试一下新增一个记录。。发现“科目全称”不会自动更新。可否帮手设置一下。

  4.如何关闭关联窗口。。。只显自己设置的窗口

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:如何同步更新.rar


--  作者:czy
--  发布时间:2011/4/10 11:26:00
--  

1、可以再加个按钮,还用窗口属性中的代码:e.Form.Controls("TreeView1").BuildTree("功能分类","功能分类_类|功能分类_款|功能分类_项")

2、两种方法,一,直接改在按钮中用进行计算。二,fill到辅助表进行计算,估计用fill时间会更短。

3、窗口中有两个新增按钮,不知所指哪一个?

4、右击关联表,停靠设置,去掉自动打开前面的勾即可。


--  作者:czy
--  发布时间:2011/4/10 11:37:00
--  

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:如何同步更新.rar

除上述方法外,还可能更改你的原代码,不过我没时间帮你搞。

 

 


--  作者:bl018
--  发布时间:2011/4/10 12:26:00
--  

3Q 

 


--  作者:bl018
--  发布时间:2011/4/10 12:44:00
--  
新增是左边目录树的那个。。。
--  作者:狐狸爸爸
--  发布时间: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编辑过]

--  作者:bl018
--  发布时间:2011/4/10 22:20:00
--  
我照老六的改了下,上传给大家看看,以后不明多指点。。。。。。。。。。。。。。。。
--  作者:bl018
--  发布时间:2011/4/11 20:31:00
--  
晕文件怎么就是传不上去