使用通配符在查询之间运行

时间:2015-07-30 19:03:35

标签: access-vba

使用Microsoft Access 2010

我有[box_no]的字段。我需要运行一个查询来获取范围内所有框号的列表。这是我的问题....几个盒子号码前面有一个字母(通常是字母“T”),有几个没有。如果我在查询中使用*Like* '*'+[Search Box Number]+'*',我在搜索带或不带字母的方框时没有问题。我可以在查询中使用*Between [beginning box number] And [ending box number]*来检索一系列的箱号,只要我包含相应的字母即可。是否有一个字符串或者我可以写的东西来获得我想要的结果?

示例:我想检索包装箱号为732913000到732914000的报告.732913000到73213055在开头没有字母。 73213056在开头有字母T(T73213056)。无论起始字符如何,我都需要确保所有框号都出现在报告中。

我希望这是有道理的! : - )

1 个答案:

答案 0 :(得分:0)

您可以在VBA中设置一个函数,如果它不是数字,则去除前导字符,然后在查询中使用该函数。

该功能将是;

Function StripChar(BoxNumber As String) As String

    If IsNumeric(Left(BoxNumber, 1)) Then
        StripChar = BoxNumber
    Else
        StripChar = Right(BoxNumber, Len(BoxNumber) - 1)
    End If

End Function

然后,您可以在查询中使用该功能;

SELECT BoxNumber, StripChar([BoxNumber]) AS Stripped
FROM <YourTable> WHERE (StripChar([BoxNumber]) Between 100 And 200));

您可以使用SQL将整个事物放在一起,但是使用它可能更容易,因为您可以轻松修改VBA函数以进行调整。