访问docmd.openform文本复杂标准

时间:2017-09-02 14:47:43

标签: vba ms-access criteria

以下代码对我不起作用:

DoCmd.OpenForm "frm8SerialsByModel", acFormDS,,"[Serial Number] like '" & Me.txtserialap & "' or like '*" & Me.txtserialap & "' or like '" & Me.txtserialap & "*' or like '*" & Me.txtserialap & "*'"

无论以下哪种方法在查询条件中都完美无缺:

Like [Forms]![frm8Serials]![txtserialap] Or 
Like "*" & [Forms]![frm8Serials]![txtserialap] Or 
Like [Forms]![frm8Serials]![txtserialap] & "*" Or 
Like "*" & [Forms]![frm8Serials]![txtserialap] & "*"

所以我知道之前很可能会问过这个问题,所以我想请你推荐一篇文章,在编写包含不同类型数据的字符串标准时正确解释标点符号?

提前谢谢。

2 个答案:

答案 0 :(得分:1)

您需要将DoCmd.OpenForm中的 WhereCondition 参数视为SQL中的任何WHERE子句。因此,需要为每个条件重复您的字段序列号。首先LIKE是多余的,因为它不使用通配符,因此可以替换为等式=

strfilter = "[Serial Number] = '" Me.txtserialap & "'" & _
            " OR [Serial Number] LIKE '*" & Me.txtserialap & "'" & _
            " OR [Serial Number] LIKE '" & Me.txtserialap & "*'" & _
            " OR [Serial Number] LIKE '*" & Me.txtserialap & "*'"

DoCmd.OpenForm "frm8SerialsByModel", acFormDS, ,strfilter

答案 1 :(得分:0)

谢谢你,Wayne G. Dunn。所以你建议我不需要比较它3次,以下就足够了我的目的并且它有效: DoCmd.OpenForm“frm8SerialsByModel”,acFormDS,“[序列号]如'”& Me.txtserialap& “'”

但是,如果您建议任何资源来阅读VBA中的复杂标准,我将非常感激。非常感谢。