【问题标题】:Filtering an MS Access form using code upon opening打开时使用代码过滤 MS Access 表单
【发布时间】:2014-03-23 14:13:56
【问题描述】:

我试图在表单“frmProjectCharter01”上放置一个过滤器,在打开它(通过单击按钮)时,它只会显示其基础表“tblProjectMasterList”中的字段“OnLoad”具有“非空”的记录"值。

我当前的代码是

DoCmd.OpenForm "frmProjectCharter01"

Me.Filter = [OnLoad] Is Not Null

不幸的是,我收到一条“编译错误”消息,其中突出显示了私有子打开行以及“[OnLoad]”字段。

【问题讨论】:

    标签: ms-access vba ms-access-2010


    【解决方案1】:

    Filter 属性是一个字符串表达式,因此您可以通过添加引号来避免编译错误。

    Me.Filter = "[OnLoad] Is Not Null"
    

    但是,从您的其余问题来看,我的印象是您应该使用 OpenForm WhereCondition 来执行此操作(有关详细信息,请参阅帮助主题),而不是设置 Filter

    DoCmd.OpenForm "frmProjectCharter01", WhereCondition:="[OnLoad] Is Not Null"
    

    【讨论】:

    • 非常感谢。那肯定奏效了。然而,我刚刚学到的一件事。在要打开的表单上,还有一个组合框,我想选择更改记录。我刚刚学到的是刚刚创建的过滤器将过滤器安装在“加载”事件上,因此一旦您进入表单(在过滤器“onload is not null”下,您不再可以选择更改记录.所以我在想的是我需要以某种方式编写代码,以便组合框更新过滤器中引用的字段.. ??
    • 您可以使用组合框的更新后事件将表单的Recordsource 更新为您需要的任何内容。
    • 谢谢汉斯。这就是我的想法。如果你有机会......你介意解释一下下面我用作事后更新的代码吗:
    • DoCmd.SearchForRecord , "", acFirst, "[ID Project] = " & Str(Nz(Screen.ActiveControl, 0))
    • 在 VB 编辑器中,将光标放在 SearchForRecord 上,然后按 F1 键。阅读“记录”参数并注意 acFirstAcRecord 枚举的成员。您还可以在帮助系统中找到有关Str()Nz() 的信息。
    猜你喜欢
    • 2016-01-04
    • 2020-03-25
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    相关资源
    最近更新 更多