问个问题 我有个数据库内容如下
 id         name     upid
 a          江苏        0
 a01        南京        a
 a0101      玄武区      a01
 b          安徽        0
 b01        合肥        b
 b0101      卢阳区      b01
  
请问这样的数据我怎么用vb6 的treeview来读取(这里的层次是可以自己添加的)

解决方案 »

  1.   

    Private Sub Form_Load()
    TreeView1.LabelEdit = tvwManual
    Call Tree_change
    End SubPublic Sub Tree_change()
      Dim key, Text, strtemp As String
      Dim Nod As Node             '定义一个节点变量
      Dim StrSQL, StrSQLa As String
      StrSQL = "select * from 树视图主菜单 "
      If RsTreemenu.State = adStateClosed Then
            RsTreemenu.Open StrSQL, DBCON, adOpenKeyset, adLockPessimistic, adCmdText   '//打开记录集
        End If
         If RsTreemenu.RecordCount > 0 Then
            RsTreemenu.MoveFirst
              Do While RsTreemenu.EOF = False                 '循环读取第1层节点中的数据信息
                key = Trim(RsTreemenu.Fields(1))
                Text = RsTreemenu.Fields(1)
                strtemp = RsTreemenu.Fields(1)
                Set node1 = TreeView1.Nodes.Add(, tvwChild, key, Text, 0)   '给第1层节点赋与数值
           StrSQLa = "select * from 树视图子菜单 where 主菜单名称 = '" & strtemp & "'"
           If RsTreeminimenu.State = adStateClosed Then
             RsTreeminimenu.Open StrSQLa, DBCON, adOpenKeyset, adLockPessimistic, adCmdText   '//打开记录集
           End If
           If RsTreeminimenu.RecordCount > 0 Then
            RsTreeminimenu.MoveFirst
            Do While RsTreeminimenu.EOF = False        '循环读取第2层节点中的数据信息
            key = Trim(RsTreeminimenu.Fields(1))
            Text = RsTreeminimenu.Fields(1)
            Set Node2 = TreeView1.Nodes.Add(node1.Index, tvwChild, key, Text, 0)   '给第2层节点赋与数值
            RsTreeminimenu.MoveNext
            Loop
           Else
          End If
          RsTreemenu.MoveNext
          RsTreeminimenu.Close
        Loop
        Else
      End If
    End Sub
      

  2.   

    先添加upid=0的
    然后添加length(upid)=1的
    然后根据展开结点添加
      

  3.   

    数据库是可以动态添加的如
    id        name    upid 
    a          江苏        0 
    a01        南京        a 
    a0101      玄武区      a01 
    可能我用户又添加了 
    a010101    长笑路      a0101
    a01010101   18号       a010101
    .....       ...       .........
    这样以此类推  无限制的读取,数据库的层次是动态可变的 可能这有一层 也可能有N层
      

  4.   

    数据库是可以动态添加的如 
    id        name    upid 
    a          江苏        0 
    a01        南京        a 
    a0101      玄武区      a01 
    可能我用户又添加了 
    a010101    长笑路      a0101 
    a01010101  18号      a010101 
    .....      ...      ......... 
    b          安徽        0 
    b01        合肥        b 
    b0101      卢阳区      b01
    .....      ...      ......... 这样以此类推  无限制的 读取,数据库的层次是动态可变的 可能这有一层 也可能有N层
      

  5.   

    你本身就是一个很标准的树啊,代码非常好写:    Dim DB As New ADODB.Connection
        Dim RS As ADODB.Recordset
        
        
        DB.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\temp.mdb"
        Set RS = DB.Execute("SELECT * FROM tb1 ORDER BY id")
        Do While Not RS.EOF
            If RS.Fields("upid") = 0 Then
                Me.TreeView1.Nodes.Add , , RS.Fields("id"), RS.Fields("name")
            Else
                Me.TreeView1.Nodes.Add RS.Fields("upid").Value, tvwChild, RS.Fields("id"), RS.Fields("name")
                
            End If
            RS.MoveNext
        Loop
        RS.Close
        DB.Close
        Set RS = Nothing
        Set DB = Nothing