这个问题主要是出于好奇,但在描述中,我曾打算强调 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
并没有修改 Detail 部分中标签的实例,而是修改了报表上标签的定义。
这可以通过对代码的以下修改来证明:
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
假设标签最初是可见的(在表单设计器中),该事件会产生一些意想不到的行为:标签将保持可见直到第一个空记录;之后,它将对所有其他记录保持隐藏 - 我最初预计在每次调用Detail_Format
控件时都会从它们的默认定义开始。
问题
有没有办法在事件中引用控件的特定实例Detail_Format
?
在这种可见真/假的简单情况下,只需一个简单的 if-then-else 即可轻松处理,但我可以想象更高级的场景,其中可能希望保留默认值。