Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

ACCESS运行提示错误:35602,key is not unique in collection,请各位大神帮忙解决

漫步者  发表于:2016-05-20 10:16:28  
复制

Private Sub TreeviewLoad()

    Set TreeView0.ImageList = ImageList.Object

    Me.TreeView0.Nodes.Clear

    Dim CONN As ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim strSql As String
    Dim nodIndex As Node

    Set nodIndex = TreeView0.Nodes.Add(, , "根", "NCR数据库", "K3")
    nodIndex.Sorted = True
    nodIndex.Expanded = True

    strSql = "SELECT DISTINCT 信息关联汇总表.专业 From 信息关联汇总表"
    Set CONN = CurrentProject.Connection
    CONN.CursorLocation = adUseClient

    rs.Open strSql, CONN, adOpenKeyset, adLockOptimistic, adCmdTableDirect
    Do Until rs.EOF = True
        Set nodIndex = TreeView0.Nodes.Add("根", tvwChild, "干" & rs.Fields("专业"), rs.Fields("专业"), "K1", "K2")
        nodIndex.Expanded = True
        rs.MoveNext
    Loop
    rs.Close

    strSql = "SELECT DISTINCT 信息关联汇总表.专业,信息关联汇总表.子专业 From 信息关联汇总表"
    rs.Open strSql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic, adCmdTableDirect
    Do Until rs.EOF = True
        Set nodIndex = TreeView0.Nodes.Add("干" & rs.Fields("专业"), tvwChild, "枝" & rs.Fields("专业") & rs.Fields("子专业"), rs.Fields("子专业"), "K1", "K2")
        'nodIndex.Expanded = True
        rs.MoveNext
    Loop
    rs.Close

    strSql = "SELECT * From 信息关联汇总表"
    rs.Open strSql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic, adCmdTableDirect
    Do Until rs.EOF = True
        Set nodIndex = TreeView0.Nodes.Add("枝" & rs.Fields("专业") & rs.Fields("子专业"), tvwChild, "叶" & rs.Fields("专业") & rs.Fields("子专业") & rs.Fields("问题分类4"), rs.Fields("问题分类4"), "K1", "K2")
        rs.MoveNext
    Loop
    rs.Close

    Set rs = Nothing

End Sub

Private Sub Treeview0_NodeClick(ByVal Node As Object)
    Dim str As String
    If Node.Text = "NCR数据库" Then
        str = ""
    ElseIf Node.Key Like "干*" Then
        str = "[专业]='" & Node.Text & "'"
    ElseIf Node.Key Like "枝*" Then
        str = "[子专业]='" & Node.Text & "'"
    Else
        str = "[问题分类4]='" & Node.Text & "'"
    End If
    Me.信息关联窗体.Form.FilterOn = True
    Me.信息关联窗体.Form.Filter = str
End Sub

 

Top
漫步者 发表于:2016-05-20 13:29:49
123木头人 发表于:2016-05-20 19:45:37

这样的错误是你的treeview的节点的key值重复时造成的,建立tree的原则是key不能重复。


下面信息重复了:

电气          接地系统安装  无

电气          接地系统安装  无

strSql语句用下面代码中的第一句替换就OK了:



    strSql = "SELECT DISTINCT 专业, 子专业, 问题分类4 From 信息关联汇总表"
    rs.Open strSql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic, adCmdTableDirect
    Do Until rs.EOF = True
        Set nodIndex = TreeView0.Nodes.Add("枝" & rs.Fields("专业") & rs.Fields("子专业"), tvwChild, "叶" & rs.Fields("专业") & rs.Fields("子专业") & rs.Fields("问题分类4"), rs.Fields("问题分类4"), "K1", "K2")
        rs.MoveNext
    Loop








总记录:2篇  页次:1/1 9 1 :