我试图让它发挥作用?如何设置要在IN()
语句中使用的文本框?我希望用户能够列出他们想要查询的国家/地区
SELECT *
FROM Table
WHERE CountryID IN (forms!frmImport!txtCountries)
答案 0 :(得分:1)
您不能直接将文本框的名称放入SQL字符串中 相反,您需要使用文本框的内容来构建如下的SQL字符串:
SELECT * FROM Table WHERE CountryID IN (1,2,3)
如果您的用户在文本框中输入逗号分隔的CountryID列表,您可以像这样构建SQL:
Dim SQL As String
SQL = "SELECT * FROM Table WHERE CountryID IN (" & Forms!frmImport!txtCountries & ")"
但我不会这样做,因为它很简单,但容易出现输入错误和SQL注入。
更好的方法是使用列表框,设置Multi Select
属性(以便可以选择多个条目)并填写所有可用国家/地区的列表。< / p>
然后,用户可以选择他想要的那些,并且可以使用列表框中的选定项构建SQL字符串:
Dim ListItem As Variant
Dim CountryList As String
Dim SQL As String
For Each ListItem In Forms!frmImport!lstCountries.ItemsSelected
If CountryList > "" Then
CountryList = CountryList & ","
End If
CountryList = CountryList & ListItem
Next
SQL = "SELECT * FROM Table WHERE CountryID IN (" & CountryList & ")"