以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助] 在单元格输入,查询下拉窗口中几十列的内容,怎么组织过滤字符串好呢?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=145113)

--  作者:龙潭春早
--  发布时间:2020/1/8 21:07:00
--  [求助] 在单元格输入,查询下拉窗口中几十列的内容,怎么组织过滤字符串好呢?

按照帮助中“窗口设计 … 自定义录入界面之三”的内容,设计了录入窗口。

为了动态筛选出可能的客户,系统的帮助在订单表的ChangeEdit事件给出了设置代码:

If e.Col.Name = "客户ID" Then \'如果编辑的是客户ID列
If e.Col.DroppedDown Then \'如果下拉窗口已经打开
Dim tbl As Table = Tables("窗口1_Table1")
If e.Text = "" Then \'如果内容为空
tbl.Filter = "" \'显示所有客户
Else \'否则,根据输入内容进行模糊筛选
Dim txt As String = "‘ %" & e.Text & "%\'"
tbl.Filter = "客户ID Like " & txt & " Or 公司名称 Like " & txt & " Or 地址 Like " & txt & " Or 联系人 Like " & txt
End If
End If
End If

遇到的问题是,开发中要查询的列有几十个,不能像上述代码那样的一一列出。

所以,想用遍历的方式解决,写出了以下代码:

Dim str, strs, flt As String
strs = "A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,……" ’客户表的列名字符串
If e.Col.Name = "客户ID" Then \'如果编辑的是客户ID列
If e.Col.DroppedDown Then \' 如果 下拉窗口 已经打开
Dim t As Table = Tables("窗口1_Table1")
If e.Text = "" Then \' 如果 内容为空
t.Filter = "" \' 显示 所有客户
Else            
For Each str In strs.Split(",")
flt & = "Or [" & str & "] Like \'%" & e.Text & "%\'"
Next
flt = flt.SubString(3)
t.Filter = flt
msgBox(flt)
End If
End If
End If

但是,执行时出错如下截屏。
知道可能是过滤字符串 flt & = "Or [" & str & "] Like \'%" & e.Text & "%\'" 中的 [" & str & "] 有问题。
要怎么改呢?

图片点击可在新窗口打开查看此主题相关图片如下:在单元格下拉窗口中进行多列的模糊查询.png
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2020/1/9 9:13:00
--  
strs = "A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,……" ’这里都必须是字符列,数值列和逻辑列有必要查询吗!