ms-access - 如何在 Access VBA 中对包含 # 特殊字符的数据使用 Like?
问题描述
我正在使用 Access 2016 并有一个项目表,其中用户将每个项目的标签存储为用逗号分隔的字符串文本,每个标签都以一个#
字符开头。例如:
ItemTag:#Tools,#Perishable,#Kit,#Tool Kit,#Screws,#drill bit
我正在尝试创建一个表单,允许用户从多选列表框中选择一个或多个标签,并让表单显示ItemTag
字段包含用户选择的标签的所有项目记录。我正在尝试在 VBA 中执行此操作,但我似乎对这个#
角色很感兴趣。我可以创建一个查询并使用:
Like "*[#]drill bit*"
但这在 VBA 中不起作用。这是我目前正在使用的代码:
strsql = "SELECT * FROM [tmpTagSearch]"
With Me
'Filter by Tags selected in the Tags multi-select listbox
Dim varItm As Variant, strIN As String
If .cmbTags.ItemsSelected.count > 0 Then
For Each varItm In .cmbTags.ItemsSelected
If strIN = "" Then
strIN = "'" & .cmbTags.Column(0, varItm) & "'"
Else
strIN = strIN & ",'" & .cmbTags.Column(0, varItm) & "'"
End If
varItm = varItm + 1
Next varItm
If Len(strIN) > 0 And strIN <> "*" Then
strsql = strsql & " WHERE (([InventoryTag]) IN (" & strIN & "))"
Else
strsql = strsql & ")"
End If
Else
' strsql = strsql & ")"
End If
Me.RecordSource = strsql
End With
解决方案
从 strIN 中删除单引号并用双引号框住每个项目。这有效>>
SELECT *
FROM myTable
WHERE InventoryTag In ("#Tools", "#Kit")
推荐阅读
- azure - 获取没有元数据的 Blob
- arrays - CRUD:使用 mat-Dialog 作为 UI
- android - 无法使用 FirebaseUI 从 FirebaseDatabase 实时调用值
- typescript - 在 Typescript 中为 Intercom 显式设置窗口类型会引发错误
- python - 有没有办法用 int 隐藏所有列以浮动
- android - 以无线模式启动 adb 服务器,无需通过 USB 连接实际设备
- c++ - 我是 C++ 新手,我想知道,为什么在 C++ 中使用纯虚函数?为什么要使用纯虚函数?
- amazon-web-services - AWS 子网间路由问题
- sql - 为什么一个带有额外连接的查询比对规范化数据的相同查询(少一个连接)更快?
- javascript - 未捕获的 TypeError:jQuery(...).slick 不是 Wordpress 自定义模板中的函数