设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1362|回复: 8
打印 上一主题 下一主题

[模块/函数] 如何优化TREE代码,这是我加载(约5000笔数据,只有7个字段值)时需要10多秒的代码

[复制链接]
跳转到指定楼层
1#
发表于 2009-8-22 20:26:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
On Error Resume Next
        Dim NodeIndex As Node
        Dim Stra As String
        Dim I As Integer
        Dim rs As ADODB.Recordset
        Dim Rs1 As ADODB.Recordset
        
        Dim opSQL As String
        
        opSQL = "SELECT 塑胶件存货档案.存货大类编码, 塑胶件存货档案.存货大类名称, 塑胶件存货档案.规格型号 " & _
                "FROM 塑胶件存货档案 " & _
                "ORDER BY val(塑胶件存货档案.存货大类名称); "
        
    Set rs = New ADODB.Recordset
    Set Rs1 = New ADODB.Recordset
   
    Dim intI As Integer
   
    Set NodeIndex = TreeView.Nodes.Add(, , "塑胶件存货档案", "塑胶件存货档案", "K1", "K2")
   
    Rs1.Open opSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
      
       For I = 1 To Rs1.RecordCount
          Set NodeIndex = TreeView.Nodes.Add(, tvwChild, "A" & Rs1("存货大类编码"), Rs1("存货大类名称"), "K1", "K2")
          NodeIndex.Sorted = True
          Rs1.MoveNext
       Next I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2009-8-22 21:05:17 | 只看该作者
需要时才载入,才能节省几秒钟
3#
 楼主| 发表于 2009-8-22 22:10:58 | 只看该作者
本帖最后由 luhao 于 2009-8-22 22:12 编辑

2# djt
但用了以下的代码,加载时就超快。。。。。但提示:type mismatch 出错,只加载一部分,不能完全加载完数据。。。。。
    '***********************************************************************************************
    ' 用数据库表中数据填充树控件
        Dim Conn As New ADODB.Connection
        Dim Rec As New ADODB.Recordset
        Dim nodIndex As Node
        Dim strSQL As String
        Dim objList As ListItem
        Dim i As Integer
        
On Error GoTo Err_cw
    Set Conn = CurrentProject.Connection
    '***********************************************************************************************
    '设置业务员
    strSQL = "SELECT DISTINCT 存货大类名称 FROM 塑胶件存货档案;"
        
        Rec.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
        
        Rec.MoveFirst
   
    With Rec
         Do While Not .EOF
         
            Set nodIndex = TreeView.Nodes.Add(, , "a" & Rec.Fields("存货大类名称"), Rec.Fields("存货大类名称"), 1, 2)
            nodIndex.Sorted = True
            
            .MoveNext
        Loop
    End With
   
            Rec.Close
    '***********************************************************************************************
    '设置地区
     strSQL = "SELECT DISTINCT 存货大类名称,规格型号 FROM 塑胶件存货档案;"
        
        Rec.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
        
        Rec.MoveFirst
   
    With Rec
         Do While Not .EOF
         
            Set nodIndex = TreeView.Nodes.Add("a" & Rec.Fields("存货大类名称"), tvwChild, "b" & Rec.Fields("存货大类名称") & Rec.Fields("规格型号"), Rec.Fields("规格型号"), 1, 2)
            nodIndex.Sorted = True
            
            .MoveNext
        Loop
    End With
   
            Rec.Close
'***********************************************************
        Set Conn = Nothing
        Set Rec = Nothing
        
Exit_cw:
    Set Conn = Nothing
    Set Rec = Nothing
    Exit Sub
Err_cw:
    MsgBox Err.Description
    Resume Exit_cw
End Sub
4#
 楼主| 发表于 2009-8-24 06:44:10 | 只看该作者
1# luhao
不要让它沉沦
5#
发表于 2009-8-24 07:29:44 | 只看该作者
需要的时候才加载,不要一股脑全部加载。速度会是你以前的N倍。
6#
发表于 2009-8-24 08:04:01 | 只看该作者
转一个例子啊,总比猜容易些吧
7#
 楼主| 发表于 2009-8-24 18:08:14 | 只看该作者
5# fan0217
打开窗体就加载,要不,版主有何高见。。。。。。。。
8#
发表于 2009-8-24 21:21:26 | 只看该作者
打开窗体的时候加载一级节点,单击节点的时候加载当前节点的下级节点,同时展开即可。论坛上我发表的有例子,自己找找。
9#
 楼主| 发表于 2009-8-24 22:20:12 | 只看该作者
8# fan0217

那怕我用第一级的也很慢,可能函数有关。请帮看下,函数有没问题.......
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-9-28 13:09 , Processed in 0.128079 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表