不断得到一个参数框"错误"当我使用SQL查询来获取值?

时间:2018-02-28 14:59:23

标签: sql vba access-vba ms-access-2016

我尝试在Microsoft Access 2016数据库中创建一个按钮,用于库存跟踪,点击后,会显示一个InputBox,询问相关设备的序列号,UDID和/或IMEI。我在私有子中嵌入了一个SQL查询,代码如下:

Private Sub cmdInventoryItems_Click()
On Error Resume Next

Dim vItem As String
vItem = InputBox("Type the Serial Number/UDID/IMEI of your device.", "Text 
Search")

Dim StrSQL As String
StrSQL = "Select * from tbl_Inventory where [Serial Number/UDID/IMEI] like 
[%" & vItem & "%]"
Me.RecordSource = StrSQL

End Sub

代码中的百分号表示允许将字符串与序列号/ UDID / IMEI字段的任何部分进行比较。

每当我单击cmdInventoryItems时,它会按计划抛出一个InputBox,但是当一个值输入到文本框中时,access会询问一个参数值,提示符是我刚输入的值,被百分比符号包围。如果我在"输入参数值"中没有输入任何内容。盒子里的东西都消失在我的主表格上。

任何人都可以解释发生了什么,以及如何解决这个问题? 感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:2)

Access期望方括号表示字段(或表)名称或参数。如果您使用somefield = [anything]进行测试,则会看到一个包含文字anything的参数框。

摆脱方括号并用单引号替换它们,你需要用文字表达式'%" & vItem & "%'"包围它们。

但是,MS Access的通配符是星号*而不是百分号。

答案 1 :(得分:0)

您的代码行: StrSQL =“从* tbl_Inventory中选择*,其中[序列号/ UDID / IMEI]就像 [%“& vItem&”%]“

问:该表的字段名称实际上是&完全?:序列号/ UDID / IMEI

代码行必须是:

StrSQL =“从tbl_Inventory中选择*,其中[TableFieldName]就像 “*”& vItem& “*”“

请注意星号周围不应有空格 - 但在这篇文章中没有空格,它们似乎没有正确显示:“”& vItem& “”,“