以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求助:简化查询表达式  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=154658)

--  作者:pyh6918
--  发布时间:2020/9/22 11:18:00
--  求助:简化查询表达式
Dim tja As String = ""
Dim tjb As String = ""
For Each dr As Row In Tables("专业目录").Rows
    tja  =  tja & "\'" & dr("专业名称") & "\',"
    If tjb > "" Then
        tjb = tjb & " or "
    End If
    tjb  =  tjb & "专业名称 like \'%、" & dr("专业名称") & "、%\'"
Next
DataTables("山东新高考_Table1").LoadFilter = "专业名称 in (" & tja.Trim(",") & ") Or " & tjb
MessageBox.Show("专业名称 in (" & tja.Trim(",") & ") Or " & tjb)
DataTables("山东新高考_Table1").Load

以上代码是根据专业目录表生成查询条件,会生成一个很长的条件表达式,行数多的时候还会出现错误提示“查询过于复杂”。各位大神有什么好办法简化一下查询条件?

--  作者:有点蓝
--  发布时间:2020/9/22 11:23:00
--  
表结构是怎么样的?要生成怎么样的查询条件?
--  作者:pyh6918
--  发布时间:2020/9/22 14:04:00
--  

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

图片点击可在新窗口打开查看此主题相关图片如下:092201.jpg
图片点击可在新窗口打开查看
通过筛选专业目录得出查询条件,加载山东新高考表。

--  作者:pyh6918
--  发布时间:2020/9/22 14:22:00
--  

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

这是生成的查询条件。

--  作者:y2287958
--  发布时间:2020/9/22 14:34:00
--  
这是太复杂了,传个实例给大家研究一下
--  作者:有点蓝
--  发布时间:2020/9/22 14:39:00
--  
这种表结构和数据也只能这样了。

增加一个明细表作为冗余存储,把山东新高考表格的专业拆分为行存储,即一行一个专业,然后直接in查询即可,不需要like了

--  作者:pyh6918
--  发布时间:2020/9/22 15:34:00
--  
实例就不传了,谢谢各位!