【问题标题】:continually getting a parameter box "error" when I use an SQL query to grab a value?当我使用 SQL 查询获取值时不断收到参数框“错误”?
【发布时间】:2023-04-04 17:57:01
【问题描述】:

我正在尝试在 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,但是当一个值输入到文本框中时,访问会要求一个参数值,提示是我刚刚输入的值,并用百分比符号包围。如果我在“输入参数值”框中不输入任何内容,我的主窗体上的所有内容都会消失。

谁能解释发生了什么,以及如何解决它? 感谢您为我提供的任何帮助。

【问题讨论】:

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


    【解决方案1】:

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

    去掉方括号并将它们替换为单引号,您需要用单引号将文本表达式 '%" & vItem & "%'" 括起来。

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

    【讨论】:

    • Andy G,谢谢你的帮助,你肯定让我更进一步。但是,百分比符号是为了在整个字段中搜索包含您输入内容的字段。即使我包含“like”运算符,他们也没有这样做:' StrSQL = "Select * from tbl_Inventory where [Serial Number/UDID/IMEI] like '%" & vItem & "%'" ' 这个代码很好我是否想做一对一的搜索(如果是这种情况,我会做不同的事情),但我想在字段中搜索我输入的字符串,即使有大小写差异,即使有也是数字...
    • 对于 MS Access,wildcard character 是星号 * 不是百分号。
    【解决方案2】:

    您的代码行: StrSQL = "Select * from tbl_Inventory where [Serial Number/UDID/IMEI] like [%" & vItem & "%]"

    问:表的字段名是不是真的&准确?:序列号/UDID/IMEI

    代码行必须是这样的:

    StrSQL = "Select * from tbl_Inventory where [TableFieldName] like " * " & vItem & " * " "

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-02
      • 2018-04-27
      • 1970-01-01
      • 1970-01-01
      • 2019-12-06
      • 1970-01-01
      相关资源
      最近更新 更多