2013-07-17 59 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

相關問題