Access交流中心

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

树控件代码出错“运行时错误:35601 未发现元素” 是什么原因

风雨无阻  发表于:2013-09-24 11:32:07  
复制

Private Sub Form_Load()
    '* -----------------------------------------------------------------
    '* 用数据库表(查询也一样)中数据填充树控件
    '* -----------------------------------------------------------------
    Dim Rec As New ADODB.Recordset
    Dim stRecQL As String
    Dim Item As Integer
    Dim i As Integer
    Dim nodindex As Node
    '* -----------------------------------------------------------------
    '* 定义各类
    '* -----------------------------------------------------------------

    '设置最顶级的"爷"
    '* ---------------------------
    Set nodindex = TreeView.Nodes.Add(, , "爷", "销售客户", "K1", "K2")
    nodindex.Sorted = True
    '* -----------------------------------------------------------------
    '*这里的设置跟第一小时里基本是一样的
    '*但最后多了一个"K2"的参数,"K1"代表的是未被选中时的图标,"K2"代表是被选中后的图标
    '*仔细观察一下,你会发现选中和没选中的图标是不一样的,一个是一个文件夹,一个是一个打开的文件夹
    '* -----------------------------------------------------------------

    '设置第二级"父"
    '* ---------------------------
    Rec.Open "大区表", CurrentProject.Connection, adOpenKeyset, adLockOptimistic, adCmdTableDirect
    For i = 0 To Rec.RecordCount - 1
        Set nodindex = TreeView.Nodes.Add("爷", tvwChild, "父" & Rec.Fields("大区ID"), Rec.Fields("大区名称"), "K1", "K2")
        nodindex.Sorted = True
        Rec.MoveNext
    Next
    Rec.Close
    '* -----------------------------------------------------------------
    '*第一行意思是打开一个表去寻找数据(查询也是可以的)
    '*关键在与Add参数的变化
    '*大家看第三个参数,在第一小时里,这里是"父1",这里用Rec.Fields("大区ID")来代替"1",意思是用表的编号来代替手工编号
    '*第四个参数也是一样,直接用表中的名称字段来取代原来我们手工的命名
    '* -----------------------------------------------------------------

    '设置第三级"子"
    '* ---------------------------
    Rec.Open "省份表", CurrentProject.Connection, adOpenKeyset, adLockOptimistic, adCmdTableDirect
    For i = 0 To Rec.RecordCount - 1
        Set nodindex = TreeView.Nodes.Add("父" & Rec.Fields("所属大区"), tvwChild, "子" & Rec.Fields("省份ID"), Rec.Fields("省份名称"), "K1", "K2")
        nodindex.Sorted = True
        Rec.MoveNext
    Next
    Rec.Close
    '* -----------------------------------------------------------------
    '*不用再解释了吧
    '*要注意的是,定义第一个参数的时候,不是用"父" & Rec.Fields("大区ID"),而是用"父" & Rec.Fields("所属大区")
    '*这个意思是:用省份表中关联大区表的字段,而不是直接用大区表的ID
    '* -----------------------------------------------------------------

    '设置第四级"孙"
    '* ---------------------------

    Rec.Open "客户表", CurrentProject.Connection, adOpenKeyset, adLockOptimistic, adCmdTableDirect
    For i = 0 To Rec.RecordCount - 1
        Set nodindex = TreeView.Nodes.Add("子" & Rec.Fields("所属省份"), tvwChild, "孙" & Rec.Fields("客户ID"), Rec.Fields("客户名称"), "K1", "K2")
        nodindex.Sorted = True
        Rec.MoveNext
    Next
    Rec.Close

 


End Sub

'树控件的点击事件为NodeClick
Private Sub TreeView_NodeCheck(ByVal Node As Object)

    '* -----------------------------------------------------------------
    '*树控件的鼠标点击事件为NodeClick
    '* -----------------------------------------------------------------
    Dim str As String
    '* -----------------------------------------------------------------
    '*定义一个筛选
    '* -----------------------------------------------------------------
    If Node.Text = "销售客户" Or Node.Key Like "父*" Or Node.Key Like "子*" Then
        str = ""
        '* -----------------------------------------------------------------
        '*在第一小时里,我们说了Node有三个东西,图标,文本,索引值
        '*文本就是text,索引值就是Key
        '这里将就是说当我们点击"爷","父"或"子"层的时候,不筛选窗体
        '*这个条件也可写成:If Node.key = "爷" Or Node.Key Like "父*" Or Node.Key Like "子*" Then
        '* -----------------------------------------------------------------
    Else
        str = "[客户名称]='" & Node.Text & "'"
    End If
    Me.Form.FilterOn = True
    Me.Form.Filter = str
    '*按指定的条件进行窗体筛选


End Sub

 

Top
风雨无阻 发表于:2015-02-09 14:42:25
问题解决了。每个级的节点必须用代码不用字符名称。

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