以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助] 在单元格输入,查询下拉窗口中几十列的内容,怎么组织过滤字符串好呢? (http://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 & "] 有问题。 要怎么改呢? |
-- 作者:有点蓝 -- 发布时间:2020/1/9 9:13:00 -- strs = "A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,……" ’这里都必须是字符列,数值列和逻辑列有必要查询吗! |