在Access VBA中如何对包含#特殊字符的数据使用“喜欢”?

时间:2018-12-29 14:40:34

标签: ms-access access-vba

我正在使用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

1 个答案:

答案 0 :(得分:0)

从strIN中删除单引号,并用双引号将每个项目括起来。这有效>>

SELECT *
FROM myTable
WHERE InventoryTag  In  ("#Tools",  "#Kit")