2014-06-09 30 views
0

我试图让这个工作?我怎样才能设置一个文本框在IN()声明中使用?我希望用户能够列出他们想要查询的国家在IN语句中使用textbox值

SELECT * 
FROM Table 
WHERE CountryID IN (forms!frmImport!txtCountries) 
+0

什么技术? ASp.NET? PHP? HTML吗?手机应用? –

+0

使用SQL或VBA访问Oops – user3150260

回答

1

您不能直接将文本框的名称直接放入SQL字符串中。
相反,你需要使用文本框的内容建立一个SQL字符串是这样的:

SELECT * FROM Table WHERE CountryID IN (1,2,3) 

如果用户输入一个逗号分隔CountryIDs列表插入文本框,你可以建立这样的SQL :

Dim SQL As String 

SQL = "SELECT * FROM Table WHERE CountryID IN (" & Forms!frmImport!txtCountries & ")" 

但因为它很简单,我不会做这种方式,但易出现输入错误和SQL注入。

一个更好的办法是使用一个列表框,设置Multi Select属性(使多个条目可以选择)和所有可用的国家名单填充它。

然后,用户可以选择他想要的,你可以建立一个使用所选的项目从列表框中的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 & ")"