以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何生成一对多表的筛选条件?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=161161)

--  作者:guosheng
--  发布时间:2021/3/8 17:21:00
--  如何生成一对多表的筛选条件?

 表1 和表2为1对多关系,表2和表3为1对多。

  如何获取 张三 对应的所有角色的某个业务需要的筛选条件啊?

即:拼接以下条件,(部门=‘行政部’ and (角色=‘工程师’ or 角色=‘资料员’) )  or (部门=\'财务部\' and (角色=\'前台\') )



         1

人员ID

姓名

密码

101

张三

123

102

李四

456

 

 

 

 

          2

ID

关联人员ID

部门

1

101

行政部

2

101

财务部

 

 

 

 

         3

关联部门ID

角色

1

工程师

1

资料员

2

前台


--  作者:有点蓝
--  发布时间:2021/3/8 17:28:00
--  
要对哪个表做筛选?
--  作者:guosheng
--  发布时间:2021/3/8 17:51:00
--  
是表4。主要想根据用户信息,很方便的生成筛选条件啊,以便供表4使用啊。 表4的字段有,部门 ,角色 及其他字段。是要筛选出当前用户,例如筛选出 张三 对应所有部门及部门对应角色的所有行。
--  作者:有点蓝
--  发布时间:2021/3/8 20:17:00
--  
dim dr as datarow = datatables("表1").find("姓名=\'张三\'")
if dr isnot nothing then
dim s1 as string = DataTables("表2").GetComboListString("部门","关联人员ID = \'" & dr("人员ID") & "\'")
dim s2 as string = DataTables("表2").GetComboListString("ID","关联人员ID = \'" & dr("人员ID") & "\'")

dim s3 as string = DataTables("表3").GetComboListString("角色","关联部门ID in (\'" & s2.replace("|","\',\'") & "\')")
Tables("表3").Filter = "部门 in (\'" & s1.replace("|","\',\'") & "\') or 角色 in (\'" & s3.replace("|","\',\'") & "\')"
end if