Events 每次预览/打印报告时将触发什么事件?

Events 每次预览/打印报告时将触发什么事件?,events,ms-access,report,vba,ms-access-2010,Events,Ms Access,Report,Vba,Ms Access 2010,我想计算textbox报表控件的值,并根据其值隐藏或显示它,这可以通过VBA轻松实现: If Me.Fixed.Value = 0 Then Me.Fixed.Visible = False End If 这很好,但是我使用的作为报告记录源的查询允许一次打印一系列记录(每页/报告1条),并且我希望为每页/报告运行上述代码。我不确定该把代码放在哪里,这样每张唱片都能按规则播放。目前,如果我选择了8条记录,只有第一条记录符合我的要求,当我在打印预览屏幕中浏览其他记录时,报告的格式在应该更改

我想计算textbox报表控件的值,并根据其值隐藏或显示它,这可以通过VBA轻松实现:

If Me.Fixed.Value = 0 Then
    Me.Fixed.Visible = False
End If
这很好,但是我使用的作为报告记录源的查询允许一次打印一系列记录(每页/报告1条),并且我希望为每页/报告运行上述代码。我不确定该把代码放在哪里,这样每张唱片都能按规则播放。目前,如果我选择了8条记录,只有第一条记录符合我的要求,当我在打印预览屏幕中浏览其他记录时,报告的格式在应该更改时保持不变

我尝试了以下活动:

报告:

  • 当前
  • 装载
  • 我得到了关注
  • 公开
  • 激活
  • 第页
第节:

  • 关于格式
  • 印刷品
  • 油漆上

在哪里可以放置VBA,以便每次滚动/浏览该报告上返回的记录范围时,我的代码都会运行?

您需要将
Visible
属性也设置为True,否则它将保持不可见

我正在使用详细信息部分的事件格式:

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
    If Me.Fixed = 0 Then
        Me.Fixed.Visible = False
    Else
        Me.Fixed.Visible = True
    End If
End Sub
这在打印预览中有效,但在报告视图中无效。可能有一种方法可以让它与Report视图一起工作,但我从不使用此视图

该声明可以简化为:

Me.Fixed.Visible = Not (Me.Fixed = 0)

请注意,
Visible
属性在
Detail\u Paint()
事件中不可用,您需要使用该事件在报告视图中应用条件格式。(如果您试图做一些花哨的事情,例如模拟超链接以获得深入效果,则可能需要这样做。)

解决方法是将文本框的
前景色
设置为与
背景色
相等。虽然文本在技术上仍然存在,但它不会在显示的报告上“显示”,因此模拟了隐藏字段

Private Sub Detail_Paint()
    ' Check for even numbers
    If (txtID Mod 2 = 0) Then
        txtID.ForeColor = vbBlack
    Else
        ' Set to back color to simulate hidden or transparent.
        ' (Assuming we are using a Normal BackStyle)
        txtID.ForeColor = txtID.BackColor
    End If
End Sub
示例输出:

谢谢你,安迪。DOH