以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  一个晚上学一条公式  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=33021)

--  作者:everybody
--  发布时间:2013/5/12 4:54:00
--  一个晚上学一条公式
如图,愿望很简单。

就是点击表a某列的时候,自动把 表b中第一列含有表a当前行(第一行)的行筛出来,思路知道,就是看下面公式怎么错了?
图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看
图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

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


    Tables("表b").Filter = "第一列 In  \'(" &  e.Table.Current("第一列")  & ")\'"


--  作者:lsy
--  发布时间:2013/5/12 9:19:00
--  

Tables("表b").Filter = ""
Dim flt As String
Dim str() As String
For Each r As Row In Tables("表b").Rows
    str = r("第一列").Split(",")   
    For Each s As String In str       
        If e.Table.Current("第一列") = s Then
            flt = flt & "\'" & r("第一列") & "\'" & ","           
        End If
    Next
Next

If flt > "" Then
   flt = "第一列 In (" & flt.TrimEnd(",") & ")"
   Tables("表b").Filter = flt

Else

   Tables("表b").Filter = (1 = 2)

End If

[此贴子已经被作者于2013-5-12 10:11:10编辑过]

--  作者:everybody
--  发布时间:2013/5/12 12:37:00
--  
一下子不理解,收藏学习先。谢谢!!
--  作者:jspta
--  发布时间:2013/5/12 13:17:00
--  
以下是引用lsy在2013-5-12 9:19:00的发言:

if e.table.current.isnull("第一列") then

Tables("表b").Filter = " 第一列 is null"

then

Tables("表b").Filter = " 第一列 like  *" &  e.table.current("第一列")& "*"

end if


 

[此贴子已经被作者于2013-5-12 10:11:10编辑过]

[此贴子已经被作者于2013-5-12 13:26:08编辑过]

--  作者:lsy
--  发布时间:2013/5/12 19:22:00
--  
以下是引用jspta在2013-5-12 13:17:00的发言:

[此贴子已经被作者于2013-5-12 13:26:08编辑过]

Like在这里,会筛选出你不想要的记录。


--  作者:everybody
--  发布时间:2013/5/12 20:21:00
--  
 like,是把包含的都列出来了
--  作者:jspta
--  发布时间:2013/5/12 20:30:00
--  
以下是引用everybody在2013-5-12 20:21:00的发言:
 like,是把包含的都列出来了

没考虑周全,加上分隔符“,”,应该改成

 

if e.table.current.isnull("第一列") then

Tables("表b").Filter = " 第一列 is null"

else

Tables("表b").Filter = " 第一列 like  *," &  e.table.current("第一列")& ",*"

end if


不过你这样设计表格式还不够合理的,呵呵


--  作者:everybody
--  发布时间:2013/5/12 20:37:00
--  
没办法,我翻译一下给你听,表一,实际是单位库;表二,是人员库。一个人有可能在两个或者三个单位里面有兼职。你说怎么办?
--  作者:jspta
--  发布时间:2013/5/12 23:14:00
--  
以下是引用everybody在2013-5-12 20:37:00的发言:
没办法,我翻译一下给你听,表一,实际是单位库;表二,是人员库。一个人有可能在两个或者三个单位里面有兼职。你说怎么办?

一行一条记录...很简单的一对多关系,无论你用单位筛选还是人员筛选都能得到正确结果,而不是用like来查找


--  作者:everybody
--  发布时间:2013/5/13 12:57:00
--  
以下是引用jspta在2013-5-12 23:14:00的发言:

一行一条记录...很简单的一对多关系,无论你用单位筛选还是人员筛选都能得到正确结果,而不是用like来查找

你说得对!人员库里,应该是一个人一条记录;单位库,也是一个单位一条记录。但是一个人,有可能是a单位的副总,同时是b单位的老总,这个时候,没法一对多啊