Access交流中心

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

做树控件时遇到的问题是 “运行时错误‘35601’ 未发现元素” 是什么原因啊?

风雨无阻  发表于:2013-09-24 11:15:44  
复制

做树控件时遇到的问题是   “运行时错误‘35601’   未发现元素” 是什么原因啊?

源代码: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
麥田 发表于:2013-09-24 11:25:05
引用树控件了没

风雨无阻 发表于:2013-09-24 13:48:16

引用:Microsoft Windows Common Controls 6.0 (sp6)

工具控件:microsoft Treewview Control, version 6.0

               Microsoft Imagelist Control,version 6.0



cspa 发表于:2013-09-25 19:48:47
查查你的省份表中有无"所属大区", "省份ID", "省份名称", 这几个字段,且字段值是否有为空的情况?

风雨无阻 发表于:2013-09-26 11:10:25


西出阳关无故人 发表于:2013-09-29 17:20:12

那是第三层的某个人没有父亲吧?

设置第二层的时候是:

Set nodindex = TreeView.Nodes.Add("爷", tvwChild, "父" & Rec.Fields("大区ID"), Rec.Fields("大区名称"), "K1", "K2")

用到【"父" & Rec.Fields("大区ID")】

设置第三层的时候:

Set nodindex = TreeView.Nodes.Add("父" & Rec.Fields("所属大区"), tvwChild, "子" & Rec.Fields("省份ID"), Rec.Fields("省份名称"), "K1", "K2")

显然,“大区ID”和“所属大区”是不同的文本,肯定找不到“爹”,因此有那个提示【注意紫色和红色的地方必须相同】



西出阳关无故人 发表于:2013-09-29 17:32:33
要不同时使用“大区ID”,要不同时使用“所属大区”,别无他法。

cspa 发表于:2013-09-30 00:32:37
查查你的省份表中"所属大区"字段的内容,应用"大区ID"的编号,不能用"大区名称"中的文字名称。



风雨无阻 发表于:2014-12-23 21:59:41
谢谢CSPA,你说得对。

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