【问题标题】:How do I call a Form's class function or access its property from a conditional formatting expression如何调用表单的类函数或从条件格式表达式访问其属性
【发布时间】:2017-12-11 00:06:24
【问题描述】:

在 Access 2003 中的 Form 类上具有以下代码:

Public currentId As Integer

Private Sub Form_Current()
  Me.currentId = Me.id
  ' The following works fine
  Debug.Print Forms!my_form_name.currentId
End Sub

...和相同连续形式的未绑定文本框(在设计视图中创建),如何从条件格式表达式访问.currentId 属性?

我想通过将表单的.currentId 值与其自身记录的实际[id] 值进行比较,使用未绑定的文本框突出显示当前选择的记录。

我尝试过的一些表达方式:

[id] = Me.currentId
[id] = Me!currentId
[id] = Me.Form.currentId
[id] = Forms!my_form_name.currentId
[id] = Forms!my_form_name!currentId
[id] = Forms!my_form_name!Form.[currentId]
[id] = Forms!my_form_name!Form!currentId
[id] = Forms!my_form_name!Form[currentId]
[id] = Forms!my_form_name![currentId]
[id] = Forms![my_form_name].[currentId]
[id] = Forms![my_form_name]![currentId]

...等等,等等,等等。基本上我能想到的任何变体。

我也尝试过创建Public Function getCurrentId(),但这也无济于事。当我在表达式中添加括号时它甚至会抱怨,如下所示:

[id] = Forms!my_form_name.getCurrentId()

...我或许应该将其视为条件格式表达式可能不允许使用这些更复杂的表达式。

那么,我错过了什么吗?或者,在这些条件格式表达式中,除了当前记录字段之外,确实根本不可能引用任何内容?


另一个可能很重要的细节是,在我使用的荷兰语版本中,Access 2003 在条件格式表达式对话框中将Forms 部分本地化为Formulieren。

【问题讨论】:

    标签: ms-access vba expression conditional-formatting ms-access-2003


    【解决方案1】:

    如果您的详细信息行上有一个名为 say txtCurrRec 的隐藏未绑定文本框,请使用 on current event by

    进行设置
    Me.txtCurrRec = Me.Id 
    

    那么你需要的条件格式就是

    Expression is [txtCurrRec] = [YourIDField]
    

    【讨论】:

    • 是的,我现在也是这么做的。 :-) 仍然想知道条件格式中允许使用什么语法和/或为什么我的尝试失败了。
    • 出于兴趣,您是否尝试简单地 [CurrentID] = [ID] ?
    • 这可能只是我没有尝试的一件事,不。 :-) 如果我再次从事该项目,我会在今天晚些时候试一试,并告诉你它是否有效。
    • 好的,我刚试了下,可惜没用。我认为这与它是类的一种全局属性而不是当前记录的字段有关。我怀疑条件格式表达式仅允许您访问其自身记录范围内的属性,或者其他范围内的属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多