Sql 使用通配符查找链接到查询的文本框的记录

Sql 使用通配符查找链接到查询的文本框的记录,sql,ms-access,vba,ms-access-2003,Sql,Ms Access,Vba,Ms Access 2003,我有一个文本框,要求我键入一个数字,然后单击按钮查找相关值。但现在我需要它做的是,如果我键入3个数字,比如“123”,它将返回所有与任何以“123”开头的记录相关的数字。我不确定这是否可能。我正在使用下面的代码,但是当我运行它时,它会给我一个类型错误匹配 Private Sub Command35_Click() If IsNull(Me.Text22.Value) = True Then MsgBox "You need to enter a reference number"

我有一个文本框,要求我键入一个数字,然后单击按钮查找相关值。但现在我需要它做的是,如果我键入3个数字,比如“123”,它将返回所有与任何以“123”开头的记录相关的数字。我不确定这是否可能。我正在使用下面的代码,但是当我运行它时,它会给我一个类型错误匹配

Private Sub Command35_Click()
  If IsNull(Me.Text22.Value) = True Then
    MsgBox "You need to enter a reference number"
  ElseIf IsNull(Me.Text22.Value) = False Then
    Me.List28.RowSource = "SELECT dbo_Typesofmaterial.[MATERIAL NAME], dbo_Inventory.[REFF NUMBER], dbo_Whse.[NAME], dbo_Inventory.NO_IN, dbo_Inventory.[POSITION], dbo_Inventory.[PO NO], dbo_Inventory.[REF NO2], dbo_Suppliers.SUPPLIERID, dbo_Inventory.DATE, dbo_Inventory.MATTYPE FROM (dbo_OrderDetails INNER JOIN (((dbo_Inventory INNER JOIN dbo_PurchaseOrders ON dbo_Inventory.[PO NO] = dbo_PurchaseOrders.[PO NO]) INNER JOIN dbo_Suppliers ON dbo_PurchaseOrders.ID = dbo_Suppliers.ID) INNER JOIN dbo_Typesofmaterial ON dbo_Inventory.MATTYPE = dbo_Typesofaterial.ID) ON dbo_OrderDetails.[REFF NUMBER] = dbo_Inventory.[REFF NUMBER]) INNER JOIN dbo_Whse ON dbo_Inventory.[FINAL DESTN ] = dbo_Whse.[WHSE NO] WHERE (((dbo_Inventory.[REF NO2])= " * "  & [Forms]![Ref No Locator]![Text22] &  " * " ));"
  Else
  End If
End Sub

你的违规标准如下:

其中(((dbo_Inventory.[REF NO2])=“*”&[Forms]![REF No Locator]![Text22]&“*”)

我想你有几个问题。首先,对于通配符搜索,您需要像
一样使用
,而不是
=
。其次,
dbo_Inventory.[REF NO2]
是一个数字字段,您试图使用字符串作为标准值。因此,您需要使用
CStr
将数字字段转换为字符串,以匹配所使用的标准。此外,在开始时不需要通配符,因为要匹配前3个字符


其中((CStr(dbo_库存。[参考编号2])如“&[Forms]![REF No Locator]![Text22]&“*”)
您的违规标准如下:

其中(((dbo_Inventory.[REF NO2])=“*”&[Forms]![REF No Locator]![Text22]&“*”)

我认为您有两个问题。首先,您需要使用
而不是
=
进行通配符搜索。其次,
dbo_目录。[参考文献2]
是一个数字字段,您试图使用字符串作为标准值。因此,您需要使用
CStr
将数字字段转换为字符串,以匹配所使用的标准。此外,在开始时不需要通配符,因为您匹配的是前3个字符


其中((CStr(dbo_库存。[参考编号2])如“&[Forms]![REF No Locator]![Text22]&“*”)
您的违规标准如下:

其中(((dbo_Inventory.[REF NO2])=“*”&[Forms]![REF No Locator]![Text22]&“*”)

我想你有几个问题。首先,对于通配符搜索,您需要像
一样使用
,而不是
=
。其次,
dbo_Inventory.[REF NO2]
是一个数字字段,您试图使用字符串作为标准值。因此,您需要使用
CStr
将数字字段转换为字符串,以匹配所使用的标准。此外,在开始时不需要通配符,因为要匹配前3个字符


其中((CStr(dbo_库存。[参考编号2])如“&[Forms]![REF No Locator]![Text22]&“*”)
您的违规标准如下:

其中(((dbo_Inventory.[REF NO2])=“*”&[Forms]![REF No Locator]![Text22]&“*”)

我认为您有两个问题。首先,您需要使用
而不是
=
进行通配符搜索。其次,
dbo_目录。[参考文献2]
是一个数字字段,您试图使用字符串作为标准值。因此,您需要使用
CStr
将数字字段转换为字符串,以匹配所使用的标准。此外,在开始时不需要通配符,因为您匹配的是前3个字符


WHERE((CStr(dbo_Inventory.[REF NO2])如“&[Forms]![REF No Locator]![Text22]&“*”)

谢谢@Matt Weller这正是我所缺少的!我不知道我必须使用CStr转换成字符串。我一定会记住这一点。再次感谢你的帮助。谢谢你@Matt Weller这正是我所缺少的!我不知道我必须使用CStr转换成字符串。我一定会记住这一点。再次感谢你的帮助。谢谢你@Matt Weller这正是我所缺少的!我不知道我必须使用CStr转换成字符串。我一定会记住这一点。再次感谢你的帮助。谢谢你@Matt Weller这正是我所缺少的!我不知道我必须使用CStr转换成字符串。我一定会记住这一点。再次感谢你的帮助。