我正在使用Access 2016,并且有一个项目表,用户在其中存储每个项目的标签为用逗号分隔的字符串文本,每个标签都以#
字符开头。例如:
ItemTag:#工具,#易腐烂,#Kit,#Tool Kit,#螺丝,#钻头
我正在尝试创建一种表单,该表单允许用户从多选列表框中选择一个或多个标签,并让表单显示所有项目记录,其中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
答案 0 :(得分:0)
从strIN中删除单引号,并用双引号将每个项目括起来。这有效>>
SELECT *
FROM myTable
WHERE InventoryTag In ("#Tools", "#Kit")