【问题标题】:Access Form Combobox Partial Filter访问表单组合框部分过滤器
【发布时间】:2017-12-23 10:20:21
【问题描述】:

我正在尝试从组合框中编写部分文本匹配以过滤表单。

这是我正在写的:

"[FieldName1] Like '*" & Replace(Me.cboFindRecord.Text, "'", """) & "*' OR [FieldName2] Like '*" & Replace(Me.cboFindRecord.Text, "'", """) & "*'"

当我离开 VBA 代码的那一行时,我在第二个 & "*' 处收到错误,突出显示单引号 ',并显示编译错误:预期表达式。

有人知道我做错了什么吗?我一遍又一遍地检查引号和双引号。

【问题讨论】:

    标签: vba forms ms-access filter combobox


    【解决方案1】:
    , """)
    

    不是一个有效的字符串。

    如果你想使用双引号字符,那就是

    "[FieldName1] Like '*" & Replace(Me.cboFindRecord.Text, "'", """") & "*' OR ..."
    

    (字符串中的转义双引号)

    但是转义单引号的常用方法是使用两个单引号:

    "[FieldName1] Like '*" & Replace(Me.cboFindRecord.Text, "'", "''") & "*' OR ..."
    

    【讨论】:

    • 谢谢。我意识到我并不真的需要更换。人们不会试图在过滤器中加上单引号。我在浪费时间,但至少你帮助我摆脱了自己的方式哈哈哈。
    • 嘿 :) 但我不会依赖它,用户可以很聪明。在使用 SQL 连接变量时,您可以使用 Gustav 的 CSql() function,它使所有这些转义和格式化变得不那么痛苦。
    • 谢谢。我的东西仍然无法正常工作,但我可能会以错误的方式进行操作。只希望用户能够在组合中输入任何内容,并让它 1)自动扩展(属性设置为是)和 2)在显示的列过滤器中具有与字符串的任何部分匹配的任何值,所以用户可以就地过滤。不断收到错误,但我正在调试我的方式。不幸的是,当我输入时,我得到了错误,因为我没有达到可接受的值,所以我看不到它是否像我想要的那样自动扩展。
    猜你喜欢
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 2014-01-17
    • 2019-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多