2013-01-08 45 views
1

我試圖生成一個報告,其源是一個窗體並且只打印非空字段。僅在MS Access 2003報告中打印非空字段

爲此,我爲每個字段提供了兩個文本框。他們都resizealbe(可以縮小/增長)。 第一個文本框是用於字幕,並且其源極是

=IIf([record] Is Null,"","Caption:") 

第二是記錄值本身。如果記錄爲空,那麼兩個文本框的值都是「」並且爲空,並且它們不會出現,也不會在表單中佔用任何空間。

兩個問題:

  1. 這似乎並不喜歡做的最聰明的方式。任何人有更好的主意?
  2. 該報告還包含複選框,並且此方法僅適用於在生成報告之前選中/取消選中至少一個複選框。否則,無論如何所有字幕都會出現。這很奇怪 - 任何人都知道爲什麼會發生?

回答

1

這隻適用於打印預覽,而不適用於MS Access 2010報表或佈局視圖。您需要在控制器上收縮可以縮小差距。在Access 2010中,「* _Label」是分配給控件標籤的默認名稱。

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer) 
Dim ctl As Control 

    For Each ctl In Me.Controls 
     If ctl.ControlType = acLabel And ctl.Name Like "*_Label" Then 
      ctl.Visible = Not IsNull(ctl.Parent) 

      ''Bound checkboxes are never null, so hide false 
      If ctl.Parent.ControlType = acCheckBox Then 
       ctl.Visible = ctl.Parent 
       ctl.Parent.Visible = ctl.Parent 
      End If 

     End If 
    Next 

End Sub