关于treeview的程序代码,谁知道哪的错?!

flowerknight 2002-06-20 01:27:43
Private Sub Form_Load()

'建立treeview对象
Dim mynod As Node

'建立连接数据库的类对象
Dim lan As New Class1

'建立类型数据源
Dim lxrs As ADODB.Recordset '类型表
Set lxrs = New ADODB.Recordset
Dim lxsql As String '类型表的sql字符串

'获得类型数据源
lxsql = "select lxmc from ydlx"
lan.lanserver
lxrs.Open lxsql, lan.cn, adOpenKeyset, adLockOptimistic

Dim str(20) As String

'建立父NODES
For i = 0 To lxrs.RecordCount - 1
str(i) = lxrs.Fields(0).Value
Set mynod = TreeView1.Nodes.Add(, , str(i), str(i))
lxrs.MoveNext
Next i
mynod.EnsureVisible

'建立子NODES
For i = 0 To lxrs.RecordCount - 1
'Debug.Print str(i)
Set mynod = TreeView1.Nodes.Add(str(i), tvwChild, "大陆", "大陆")'///////////////
Set mynod = TreeView1.Nodes.Add(str(i), tvwChild, "港台", "港台")'//////////////
Set mynod = TreeView1.Nodes.Add(str(i), tvwChild, "欧美", "欧美")'///////////////
Set mynod = TreeView1.Nodes.Add(str(i), tvwChild, "日韩", "日韩")'//////////////
Set mynod = TreeView1.Nodes.Add(str(i), tvwChild, "其它", "其它")'//////////////
Next i
mynod.EnsureVisible

End Sub

这是一个TREEVIEW的问题:
以上代码想要实现将“类型表”中的类型名作为父NODES,然后将“大陆”,“港台”,“欧美”,“日韩”,“其它”作为每个父NODE的子NODES.可是总提示'//////////////部分,“集合中的关键字不唯一”。
前面与数据库连接是没问题的;单独生成父NODES也是没问题的;唯独加上子NODES就出现问题。
...全文
35 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
flowerknight 2002-06-20
  • 打赏
  • 举报
回复
谢谢各位,立刻结账
ouyangke 2002-06-20
  • 打赏
  • 举报
回复
For i = 0 To lxrs.RecordCount - 1
'Debug.Print str(i)
Set mynod = TreeView1.Nodes.Add(str(i), tvwChild, "Node" & i, "大陆")'///////////////
Set mynod = TreeView1.Nodes.Add(str(i), tvwChild, "Node" & i, "港台")'//////////////
Set mynod = TreeView1.Nodes.Add(str(i), tvwChild, "Node" & i, "欧美")'///////////////
Set mynod = TreeView1.Nodes.Add(str(i), tvwChild, "Node" & i, "日韩")'//////////////
Set mynod = TreeView1.Nodes.Add(str(i), tvwChild, "Node" & i, "其它")'//////////////
Next i
luccy 2002-06-20
  • 打赏
  • 举报
回复
楼上的有道理,你在建立子节点的时候
for 循环中
当i取0时,第一批关键字分别为“大陆”,“港台”,“欧美”,“日韩”,“其它”
当i取1时,第二批关键字仍然是“大陆”,“港台”,“欧美”,“日韩”,“其它”
。。。。。。
这样关键字就不唯一了,肯定会出错
就像 footballboy(郑创斌) 给你说的那样去改就不会出错啦
footballboy 2002-06-20
  • 打赏
  • 举报
回复
to flowerknight (海豚)
因为你在每个类型表中类型名队应节点的下面都添加了大陆”,“港台”,“欧美”,“日韩”,“其它”等子节点,并且关键字也是“港台”,“欧美”,“日韩”,“其它”,造成关键字不唯一。在为第一个类型节点添加以上子节点时不会出错,因为没有重复的关键字,但是当你为第二个、第三个类型节点添加子节点时,各子节点仍然用“港台”,“欧美”,“日韩”,“其它”关键字,这就造成了有多个分别位于不同类型节点下的子节点有相同的关键字,因此系统提示“集合中的关键字不唯一”。解决的办法是用一个综合了父类型节点和子节点信息的字符串来作为子节点的Key值,例如:
Set mynod = TreeView1.Nodes.Add(str(i), tvwChild, str(i) & "_" & "大陆", "大陆"),当用鼠标点击各节点时,可以用字符串的函数instr()、left$()、mid$()、Right$()等将相应信息从Key中取出
footballboy 2002-06-20
  • 打赏
  • 举报
回复
因为你在每个类型表中类型名队应节点的下面都添加了大陆”,“港台”,“欧美”,“日韩”,“其它”等子节点,并且关键字也是“港台”,“欧美”,“日韩”,“其它”,造成关键字不唯一。在为第一个类型节点添加以上子节点时不会出错,因为没有重复的关键字,但是当你为第二个、第三个类型节点添加子节点时,各子节点仍然用“港台”,“欧美”,“日韩”,“其它”关键字,这就造成了有多个分别位于不同类型节点下的子节点有相同的关键字,因此系统提示“集合中的关键字不唯一”。解决的办法是用一个综合了父类型节点和子节点信息的字符串来作为子节点的Key值,例如:
Set mynod = TreeView1.Nodes.Add(str(i), tvwChild, str(i) & "_" & "大陆", "大陆"),当用鼠标点击各节点时,可以用字符串的函数instr()、left$()、mid$()、Right$()等将相应信息从Key中取出

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧