访问报告详细信息格式 - 默认值和参考

时间:2012-07-27 18:04:16

标签: ms-access ms-access-2007 access-vba

这个问题主要是出于好奇心,而且在描述中,我曾打算强调Access不常记录的行为。

背景

创建Access报告时,我们可以使用详细信息部分的On Format方法来修改每条记录的值或属性。例如,假设我们想要在值为空时隐藏字段标签:

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
    If (IsNull(Me.SomeField) Or Me.SomeField = "") Then
        Me.SomeFieldLabel.Visible = False
    Else
        Me.SomeFieldLabel.Visible = True
    End If
End Sub

直到今天我还没有意识到,作业.Visible = False不会修改详细信息部分中标签的实例,而是修改定义报告上的标签。

这可以通过以下对代码的修改来证明:

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
    If (IsNull(Me.SomeField) Or Me.SomeField = "") Then
        Me.SomeFieldLabel.Visible = False
    End If
End Sub

假设标签最初是可见的(在表单Designer中),该事件会产生一些意外的行为:标签将保持可见,直到第一个空记录;之后,对于所有其他记录,它将保持隐藏状态 - 我原本期望在Detail_Format每次调用时以默认定义开头的控件。

问题

有没有办法在Detail_Format事件中引用控件的特定实例?

在这个简单的可见真/假的情况下,只需一个简单的if-then-else即可轻松处理,但我可以设想更高级的场景,人们可能希望保留默认值。

1 个答案:

答案 0 :(得分:1)

我不相信,在我的所有经验中,报表对象的属性始终适用于整个报表,而不是特定的abject实例(如果对象重复)。

对于您的示例,我将使用文本框而不是标签来标记字段,并对控件源使用=IIf(IsNull(Field1), "", "Label:")之类的内容。这样,如果字段为空,它将不显示任何内容,但如果有值,则仍显示标签文本。