以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  目录树与表对应问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=128846)

--  作者:deliangzhaoe
--  发布时间:2018/12/16 16:32:00
--  目录树与表对应问题
目录树由表A的列1、列2、列3、列4、列5生成,想要实现点击目录树的任一节点时,表A都筛选出对应的唯一一行。
nodemouseclick事件代码:
Dim tr As WinForm.TreeView = e.Form.Controls("TreeView4")
Dim pd As WinForm.TreeNode = tr.SelectedNode
Dim pf As winform.treenode = pd.parentnode
Dim ph As winform.treenode = pf.parentnode
If e.node.level = 0 Then
    Tables("年度安全目标").filter = "企业名称 = \'" & e.node.name & "\' and 部门设置 is null and 岗位设置 is null and 第四层机构设置 is null and 第五层机构设置 is null and 第六层机构设置 is null"
ElseIf e.node.level = 1 Then
    Tables("年度安全目标").filter = "企业名称 = \'" & pf.name & "\' and 部门设置 = \'" & e.node.name & "\' and 岗位设置 is null and 第四层机构设置 is null and 第五层机构设置 is null and 第六层机构设置 is null"
ElseIf e.node.level = 2 Then
    Tables("年度安全目标").filter = "企业名称 = \'" & ph.name & "\' and 部门设置 = \'" & pf.name & "\' and 岗位设置 = \'" & e.node.name & "\' and 第四层机构设置 is null and 第五层机构设置 is null and 第六层机构设置 is null"
End If

用上面的代码时,level1、level2都可以筛选出唯一一行来,level 0 筛选不出来,错误代码如下:

图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看

总体想要实现:点击目录树的任一节点时,表A都筛选出对应的唯一一行,同时,点击level0节点的时候,右侧页面集合打开第一个页面,点击level1节点的时候,右侧页面集合打开第二个页面,点击level2节点的时候,右侧页面集合打开第三个页面,实例如下:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:目录树-测试.foxdb


请老师帮忙看一下,或者代码如何简化一下。谢谢

[此贴子已经被作者于2018/12/16 18:14:38编辑过]

--  作者:有点甜
--  发布时间:2018/12/16 20:22:00
--  

1、参考

 

http://www.foxtable.com/webhelp/scr/2690.htm

 

2、参考

 

http://www.foxtable.com/webhelp/scr/0831.htm

 

 


--  作者:deliangzhaoe
--  发布时间:2018/12/17 7:48:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:2.jpg
图片点击可在新窗口打开查看
只找出图中第一行如何对应?

--  作者:有点甜
--  发布时间:2018/12/17 9:06:00
--  

1、参考2楼改写了代码了没有?

 

2、你希望点击【雷达】,显示什么结果?多行的【雷达】?还是一行的【雷达】?

 


--  作者:deliangzhaoe
--  发布时间:2018/12/17 15:49:00
--  
可以了,谢谢

--  作者:deliangzhaoe
--  发布时间:2018/12/18 19:00:00
--  
又报错:

图片点击可在新窗口打开查看此主题相关图片如下:捕获.jpg
图片点击可在新窗口打开查看

tree4的nodemouseclick代码:

Dim Filter As String
Dim dr As DataRow = e.Node.DataRow \'获取生成此节点的行
Select Case e.Node.Level
    Case 0
        Filter = "[企业名称] = \'" & dr("企业名称") & "\' and [部门设置] is null and [岗位设置] is null and [第四层机构设置] is null and [第五层机构设置] is null and [第六层机构设置] is null"
        Forms("安全信息化系统主窗口").Controls("TabControl5").SelectedIndex = 0
    Case 1
        Filter = "[企业名称] = \'" & dr("企业名称") & "\' and [部门设置] = \'" & dr("部门设置") & "\' and [岗位设置] is null and [第四层机构设置] is null and [第五层机构设置] is null and [第六层机构设置] is null"
        Forms("安全信息化系统主窗口").Controls("TabControl5").SelectedIndex = 1
    Case 2
        Filter = "[企业名称] = \'" & dr("企业名称") & "\' and [部门设置] = \'" & dr("部门设置") & "\' and [岗位设置] = \'" & dr("岗位设置") & "\' and [第四层机构设置] is null and [第五层机构设置] is null and [第六层机构设置] is null"
        Forms("安全信息化系统主窗口").Controls("TabControl5").SelectedIndex = 2
Case 3
        Filter = "[企业名称] = \'" & dr("企业名称") & "\' and [部门设置] = \'" & dr("部门设置") & "\' and [岗位设置] = \'" & dr("岗位设置") & "\' and [第四层机构设置] = \'" & dr("第四层机构设置") & "\' And [第五层机构设置] Is null And [第六层机构设置] Is null"
        Forms("安全信息化系统主窗口").Controls("TabControl5").SelectedIndex = 3
Case 4
        Filter = "[企业名称] = \'" & dr("企业名称") & "\' and [部门设置] = \'" & dr("部门设置") & "\' and [岗位设置] = \'" & dr("岗位设置") & "\' and [第四层机构设置] = \'" & dr("第四层机构设置") & "\' and [第五层机构设置] = \'" & dr("第五层机构设置") & "\' and [第六层机构设置] is null"
        Forms("安全信息化系统主窗口").Controls("TabControl5").SelectedIndex = 4
Case 5
        Filter = "[企业名称] = \'" & dr("企业名称") & "\' and [部门设置] = \'" & dr("部门设置") & "\' and [岗位设置] = \'" & dr("岗位设置") & "\' and [第四层机构设置] = \'" & dr("第四层机构设置") & "\' and [第五层机构设置] = \'" & dr("第五层机构设置") & "\' and [第六层机构设置] = \'" & dr("第六层机构设置") & "\' "
        Forms("安全信息化系统主窗口").Controls("TabControl5").SelectedIndex = 5
End Select
Tables("年度安全目标").Filter = Filter


请帮忙看一下是怎么回事?


--  作者:有点蓝
--  发布时间:2018/12/18 20:20:00
--  
如果生成tree4的表重新加载了数据,那么对应的tree4也要重新生成,不然使用e.Node.DataRow就会有这个问题