以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  filter 两个条件同时符合,该怎么写  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=125269)

--  作者:淡月斜阳
--  发布时间:2018/9/25 10:33:00
--  filter 两个条件同时符合,该怎么写
条件字符串通过,dropdownform生成如:
PC000001|1号,PC000001|2号,PC000002|3号,PC000002|4号,PC000003|1号,PC000003|2号

查询代码如:
Dim tb As WinForm.Table = e.Form.Controls("Table1")
Dim b As New SQLCrossTableBuilder("统计表1","生产数据总查表")
b.C
b.HGroups.AddDef("日龄")
b.VGroups.AddDef("批次号")
b.VGroups.AddDef("舍号")
b.Totals.AddDef("采食")
b.Totals.AddDef("死淘_合计")
b.Filter= "舍号=\'1号\'"
b.OrderByTotal=True
tb.Table.DataSource =  b.BuildDataSource

怎么写filter:(批次号 = PC000001 且舍号=1号) 或 (批次号=PC000001 and 舍号=2号) 或  (批次号=PC000003 and 舍号=1号)

--  作者:goodhawk
--  发布时间:2018/9/25 10:45:00
--  
b.Filter= " (舍号=\'1号\' AND 批次号 = \'PC000001\') or .... "
--  作者:淡月斜阳
--  发布时间:2018/9/25 10:49:00
--  
Dim str As String = "PC000001|1号,PC000001|2号,PC000002|3号,PC000002|4号,PC000003|1号,PC000003|2号"
Dim fx1() As String = str.Split(",")
Dim fil As String
For Each s As String In fx1
    Dim fx2() As String = s.Split("|")
    fil =fil & "or (批次号=\'" & fx2(0) & "\' And 舍号=\'" & fx2(1) & "\') "
Next
fil=fil.TrimStart("o","r"," ")
Output.Show(fil)

结果如下:
(批次号=\'PC000001\' And 舍号=\'1号\') or (批次号=\'PC000001\' And 舍号=\'2号\') or (批次号=\'PC000002\' And 舍号=\'3号\') or (批次号=\'PC000002\' And 舍号=\'4号\') or (批次号=\'PC000003\' And 舍号=\'1号\') or (批次号=\'PC000003\' And 舍号=\'2号\') 


我是想问问,看有没有更简单的办法

--  作者:有点甜
--  发布时间:2018/9/25 11:50:00
--  
Dim str As String = "PC000001|1号,PC000001|2号,PC000002|3号,PC000002|4号,PC000003|1号,PC000003|2号"
str = "(批次号=\'" & str.replace(",", "\') or (批次号=\'").replace("|", "\' And 舍号=\'") & "\')"
msgbox(str)

--  作者:淡月斜阳
--  发布时间:2018/9/25 12:11:00
--  
图片点击可在新窗口打开查看原来这么简单。搞复杂了