按照帮助中“窗口设计 … 自定义录入界面之三”的内容,设计了录入窗口。
为了动态筛选出可能的客户,系统的帮助在订单表的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