注册 登录
编程论坛 VB6论坛

数据库的一张表怎么样用树型显出来?

dafunlang 发布于 2013-03-04 18:35, 403 次点击
[attach]69114[/attach]
表名称playlist 表字段Id tvclass tvclassid tvname tvurl 怎么样用树型控件显示出,俺水平有限,请各位老师指点一下

[ 本帖最后由 dafunlang 于 2013-3-5 19:49 编辑 ]
6 回复
#2
风吹过b2013-03-05 08:47
二次循环,二个查询。

第一圈循环。
select * from 表 where tvclassid=0
添加 tvclass 为根显示内容,ID 加个前缀为 根关键字。
  和二圈循环。
   select * from 表 where tvclassid= 根的ID
   添加为 子项
  二圈循环结束
一圈循环结束
#3
bczgvip2013-03-05 11:02
程序代码:
    rs.Open "select * from playlist ", Conn, adOpenKeyset, adLockReadOnly
    Do Until rs.EOF
        Dim cid As Long
        cid = rs("tvclassid")
        Select Case cid
        Case 0
            If Not IsNull(rs("tvclass")) Then
                Set nodX = TreeView1.Nodes.Add(, , "K" & rs("id"), rs("tvclass"))
            Else
                Set nodX = TreeView1.Nodes.Add(, , "K" & rs("id"), "(Null)")
            End If
        Case Is > 0 ' Is > 0 ' else ' 有负数?神马情况?
            If Not IsNull(rs("tvname")) Then
                Set nodX = TreeView1.Nodes.Add("K" & cid, tvwChild, "K" & rs("id"), rs("tvname")) 'TreeRelationshipConstants tvwChild
            Else
                Set nodX = TreeView1.Nodes.Add("K" & cid, tvwChild, "K" & rs("id"), "(Null)")
            End If
        End Select
        rs.MoveNext
    Loop
    rs.Close
也可以善用 Key。
#4
风吹过b2013-03-05 12:35
习惯了 ASP 写法,ASP 写法中,数据生成必须按顺序生成,忘了VB里的树不需要按顺序添加。

还是 bcZgvip 的方法好。
#5
dafunlang2013-03-05 12:46
回复 3楼 bczgvip
程序代码:
Private Sub TreeView1_NodeClick(ByVal myNode As Node)



Select Case TreeView1.Nodes.Item(TreeView1.SelectedItem.Index).Key

 
        Case "id"
      
           wmp1.URL = rs("tvurl")
      
   
  End Select

End Sub
双击节点,tvurl的值,怎么样响应传递给这个wmp1.URL ="",谢谢版主,谢谢楼上的好心人

[ 本帖最后由 dafunlang 于 2013-3-5 13:00 编辑 ]
#6
bczgvip2013-03-05 13:43
程序代码:

Private Sub TreeView1_NodeClick(ByVal myNode As MSComctlLib.Node)
    Dim rs As ADODB.Recordset
    If Not myNode.Parent Is Nothing Then
        Set rs = New ADODB.Recordset
        rs.Open "select * from playlist where id=" & Mid$(myNode.Key, 2), Conn, adOpenKeyset, adLockReadOnly
        'wmp1.URL = rs("tvurl")
        Debug.Print rs("tvurl")
        rs.Close
    End If
    Set rs = Nothing
End Sub
写这代码时咱想到了2楼。
#7
dafunlang2013-03-05 14:34
回复 6楼 bczgvip
谢谢
1