2013-07-17 54 views
2

我想evauluate一个文本框报表控件的值,并隐藏或基于它的价值,我可以用VBA轻松实现显示它:每次预览/打印报告时会触发什么事件?

If Me.Fixed.Value = 0 Then 
    Me.Fixed.Visible = False 
End If 

这工作正常,但我使用的查询该报告的记录来源允许一次打印所有记录(每页1份/报告),并且我希望上面的代码针对每个页面/报告运行。我不确定在哪里放置代码,以便每条记录都能按照规则进行播放。目前,如果我选择8条记录的范围,则只有第一条记录可以做我想要的内容,而当我浏览打印预览屏幕中的其他记录时,报告的格式在应该更改时保持不变。

我曾尝试以下事件:

报告:

  • 在当前
  • 在负载
  • 在得到众
  • 在打开
  • 在激活
  • 在页面

科:

  • 在格式
  • 在打印
  • 油漆

我在哪里可以把我的VBA使每一个我通过滚动时间/导航我的代码运行时在该报告上返回的记录范围?

回答

4

您需要将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 

这个工作在打印预览但不是在报表视图。有可能有一种方法可以使这个工作与报表视图,但我从来没有使用此视图。

语句可以简化为:

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

由于安迪。 ** ** DOH – prayingmantes

0

注意,Visible财产不在Detail_Paint()事件,这是你需要使用具有条件格式在报表视图申请的情况下可用。 (如果您尝试执行某些操作,例如模拟超链接以实现向下钻取效果,则可能需要这样做。)

解决方法是将文本框的ForeColor设置为等于BackColor。尽管文本在技术上仍然存在,但它不会在显示的报告中“显示”,从而模拟隐藏字段。

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 

示例输出:

Note hidden even numbers

相关问题