设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 5342|回复: 14
打印 上一主题 下一主题

[窗体] 请教!查询Treeview控件中父节点与子节点中代码问题?(已上传附件问题未解决)

[复制链接]
跳转到指定楼层
1#
发表于 2008-7-22 20:07:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教!查询Treeview控件中父节点与子节点中代码问题?(前提这个窗体是在一个表的基础上做的)treeview控件窗体,想在上面加一个查询节点功能(两个文本框一个是图纸编号,一个是产品名称,图纸编号就是父节点,产品名称就是子节点)查询父节点AND子节点时候,展开对应父子节点的节点,当单独输入的时候图纸编号或产品名称的时候是一个模糊查询,展开相应的父子节点.下面用两种方法的代码,一个能查询到父节点代码,一个能查询到子节点的代码,但这两种方法都不能实现模糊查询,还不能实现AND的关系.请教!看有什么方法既能实现模糊查询也能实现AND关系,谢谢
这个方法查询到父节点,不能实现模糊查询,必须要从开始输入.代码如下:
Private Sub cmd_查询_Click()
 Dim intLen As Long
   Dim i As Long
   intLen = Len(Me.tuzhibianhao)
    For i = 1 To Me.TreeView.Nodes.Count
If UCase(Mid(Me.TreeView.Nodes(i), 1, intLen)) = Me.tuzhibianhao Then
   Me.TreeView.Nodes(i).Expanded = True
End If
Next
TreeView.SetFocus
end sub
这种方法能查询到子节点,不能实现模糊查询,必须要输入完整的字段
Private Sub cmd_查询_Click()
dim i as long
  'strwhere = ""     
'If Not IsNull(Me.chanpinmingcheng) Then
    ' strwhere = strwhere & "([chanpinmingcheng] like '* " & Me.chanpinmingcheng & " *') and "
' End If
    'If Len(strwhere) > 0 Then
  'strwhere = Left(strwhere, Len(strwhere) - 5)
  'End If
经过下面老师提示,上面红色代码无效

  For i = 1 To Me.TreeView.Nodes.Count
   If Me.TreeView.Nodes(i) = Me.chanpinmingcheng Then
      Me.TreeView.Nodes(i).Selected = True
   End If
Next
TreeView.SetFocus
end sub

[ 本帖最后由 wjw8216 于 2008-7-23 16:15 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2008-7-22 23:04:22 | 只看该作者
strwhere 好像在程序中没有实际用到?
3#
 楼主| 发表于 2008-7-23 08:24:14 | 只看该作者
原帖由 tmtony 于 2008-7-22 23:04 发表
strwhere 好像在程序中没有实际用到?

谢谢您的提醒.把代码变成这个是查不到产品名称
Private Sub cmd_查询_Click()
dim i as long
  strwhere = ""     
If Not IsNull(Me.chanpinmingcheng) Then
     strwhere = strwhere & "([chanpinmingcheng] like '* " & Me.chanpinmingcheng & " *') and "
  End If
    If Len(strwhere) > 0 Then
  strwhere = Left(strwhere, Len(strwhere) - 5)
  End If
我在这边能测试到Strwhere  debug.print strwhere
  For i = 1 To Me.TreeView.Nodes.Count
   If Me.TreeView.Nodes(i) = Strwhere Then   '为什么把这句变变,就不能展开相应的子节点呢
      Me.TreeView.Nodes(i).Selected = True
   End If
Next
TreeView.SetFocus
end sub

[ 本帖最后由 wjw8216 于 2008-7-23 08:37 编辑 ]
4#
 楼主| 发表于 2008-7-23 11:50:24 | 只看该作者
帮自己顶下
5#
 楼主| 发表于 2008-7-23 13:40:24 | 只看该作者
[:30] [:30] [:30]
6#
发表于 2008-7-23 13:57:22 | 只看该作者
你这样的问题最好上传示例文件,直接这样看又不能调试,很不好看出有什么问题的。
7#
 楼主| 发表于 2008-7-23 16:10:37 | 只看该作者
原帖由 liwen 于 2008-7-23 13:57 发表
你这样的问题最好上传示例文件,直接这样看又不能调试,很不好看出有什么问题的。

老师附件已上传,请指教!
8#
 楼主| 发表于 2008-7-23 19:40:44 | 只看该作者
自己在顶下
9#
发表于 2008-7-24 13:19:30 | 只看该作者
不知你是否想要这样的效果:

   If InStr(Me.TreeView.Nodes(i), Me.chanpinmingcheng) > 0 Then
      Me.TreeView.Nodes(i).Selected = True
   End If

输入任意一个字,即含该字的子节点会展开?
10#
 楼主| 发表于 2008-7-24 15:56:00 | 只看该作者
谢谢您的回复,这个还和我想要的效果有点偏差,您这个能实现查找子节点,满足我3种情况的一种.第一种情况当输入图纸编号,就可以模糊查询展开相应的子节点,第二种输入产品名称的时候就可以模糊找到子节点(也就是你您现在这个效果).第三种情况就是同时输入图纸编号和产品名称的时候展开对应的一个父子节点

[ 本帖最后由 wjw8216 于 2008-7-24 16:23 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-14 12:15 , Processed in 0.107289 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表