以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]关于筛选的问题! A表筛选根据B表来筛选的~~~~【例子已上传,商业版的】  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=19571)

--  作者:gaoyong30000
--  发布时间:2012/5/14 22:48:00
--  [求助]关于筛选的问题! A表筛选根据B表来筛选的~~~~【例子已上传,商业版的】

A表有一列是工号列  唯一的  同一工号只有1行记录

 

B表与A表可以说是关联的  B表也有工号列 但是同一个工号可以有多行记录

 

现在 A表目录树 双击事件有段代码

 

Dim Value() As String
Value = e.Node.FullPath.Split("\\")
Select Case e.Node.Level
    Case 1

If e.node.text <> "回聘"
                Tables("人事档案_人事档案Table1").Filter
  = "???"

 

 

???的筛选条件其实为  在B表中筛选出有重复的工号  然后在A表中筛选出对应工号的记录 Tables("人事档案_人事档案Table1")即为A表

 

请问该怎么办?  思路是什么?

[此贴子已经被作者于2012-5-15 10:14:34编辑过]

--  作者:程兴刚
--  发布时间:2012/5/15 7:54:00
--  
发文件,可能无需筛选,既然A、B表关联,利用代码选择A表符合条件的行,B表显示的就是相同工号的行(子表关联行)
--  作者:blackzhu
--  发布时间:2012/5/15 8:25:00
--  

Dim r As Row=Tables("表A").Current

Dim Value() As String
Value = e.Node.FullPath.Split("\\")
Select Case e.Node.Level
    Case 1

If e.node.text <> "回聘" Then
    Tables("表B").Filter
  = "工号 =\'" & r("工号") & "\'"

End if

 

这样试试


--  作者:程兴刚
--  发布时间:2012/5/15 8:53:00
--  

按理表A无需筛选:

Select Case e.Node.Level
    Case 1

       If e.node.text <> "回聘" Then
           Tables("表A").Position  = Tables("表A").FindRow("[工号] = \'" & e.node.text  &"\'")

       End if

End Select

 

如果表A确需筛选:

Select Case e.Node.Level
    Case 1

        If e.node.text <> "回聘" Then
            Tables("表A").Filter= "[工号] = \'" & e.node.text &"\'"

            Tables("表A").Position = 0

        End if

End Select

[此贴子已经被作者于2012-5-15 8:54:38编辑过]

--  作者:gaoyong30000
--  发布时间:2012/5/15 10:14:00
--  

 


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

以此项目为例   窗口里为A表  点击目录树中的【筛选】后  A筛选出B表中 工号有重复的行   B表中 工号1,8 有重复

 

 

A表中就筛选出1,8工号的记录

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar

[此贴子已经被作者于2012-5-15 10:15:18编辑过]

--  作者:程兴刚
--  发布时间:2012/5/15 10:44:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.table


--  作者:gaoyong30000
--  发布时间:2012/5/15 10:53:00
--  

程版麻烦了

 

但是有些出入  我意思是目录树就一个【筛选】节点  点击后 A表就筛选出1,8    2行   

 

筛选条件是根据B表有重复的工号1,8


--  作者:程兴刚
--  发布时间:2012/5/15 11:26:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.table


--  作者:程兴刚
--  发布时间:2012/5/15 12:31:00
--  

去掉判断好一点,这样的话去掉勾的时候也重新筛选:

 

Dim filter As String
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
For Each nd As WinForm.TreeNode In trv.AllNodes
    If nd.Checked = True
        Filter =Filter & "|" & nd.text
    End If
Next
Filter = "*" &Filter.Replace("|","\' or [工号] = \'") & "\'"
Filter =Filter.Replace("*\' or","")
Tables("表A").Filter=Filter
Tables("表B").Filter=Filter

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.table


--  作者:blackzhu
--  发布时间:2012/5/15 12:35:00
--  

程版,你没有理解他的说法,我已经帮他搞定了