小弟新学vb,在修改的时候突然出现一下错误,是以前未曾有过的:实时错误'35602'
集合中的关键字不唯一
Public Sub Tree_change()     '声明一个树状显示数据的过程
 Dim key, text As String
 rs1.Open "select * from tslbb order by 类别编号", Cnn, adOpenKeyset, adLockOptimistic
 If rs1.RecordCount > 0 Then
    With rs1
         .MoveFirst
         Do While .EOF = False
            If Len(.Fields("类别编号")) = 2 Then
               key = Trim(.Fields("类别名称"))
               text = "(" & Trim(.Fields("类别编号")) & ")" & Trim(.Fields("类别名称"))
               Set Node1 = TreeView1.Nodes.Add(, , key, text, Val(.Fields("级别")))
            End If
            If Len(.Fields("类别编号")) = 5 Then
               key = Trim(.Fields("类别名称"))
               text = "(" & Trim(.Fields("类别编号")) & ")" & Trim(.Fields("类别名称"))
               Set Node2 = TreeView1.Nodes.Add(Node1.Index, tvwChild, key, text, Val(.Fields("级别")))
            End If
            If Len(.Fields("类别编号")) = 9 Then
               key = Trim(.Fields("类别名称"))
               text = "(" & Trim(.Fields("类别编号")) & ")" & Trim(.Fields("类别名称"))
               Set Node3 = TreeView1.Nodes.Add(Node2.Index, tvwChild, key, text, Val(.Fields("级别")))
            End If
            If Len(.Fields("类别编号")) = 14 Then
               key = Trim(.Fields("类别名称"))
               text = "(" & Trim(.Fields("类别编号")) & ")" & Trim(.Fields("类别名称"))
               Set Node4 = TreeView1.Nodes.Add(Node3.Index, tvwChild, key, text, Val(.Fields("级别")))
            End If
            If Len(.Fields("类别编号")) = 20 Then
               key = Trim(.Fields("类别名称"))
               text = "(" & Trim(.Fields("类别编号")) & ")" & Trim(.Fields("类别名称"))
               Set Node5 = TreeView1.Nodes.Add(Node4.Index, tvwChild, key, text, Val(.Fields("级别")))
            End If
            .MoveNext
         Loop
    End With
 End If
 rs1.Close
End Sub黄线在 set note3这句,请问应该如何修改,先行谢过.

解决方案 »

  1.   

    说明树节点中key重复了你的建树方法要改,Node1.Index、Node2.Index这些东西不能作为key来用的
      

  2.   

    同意楼上,key应该是保证相互不会重复的字符串
      

  3.   

    也不一定非要给节点加个Key值,放在Tag里也不错。加入子节点也可以这样做:
    Set ChildNode=TreeView1.Nodes.Add(ParentNode,tvwChild,,Text)
    第一个参数可以接受Node对象。
      

  4.   

    虽然很久不用VB了,但我记得Add的第一个参数应是关联节点(如父节点)的Key
    用.Index显然是不可以的
      

  5.   

    如果你的key不重要,就全部留空
    Set Node3 = TreeView1.Nodes.Add(Node2.Index, tvwChild, , text, Val(.Fields("级别")))