我正在通過MS Access 2010開發數據庫應用程序。 我已將一個未綁定的二進制複選框添加到報告,目的是用戶可以從兩個記錄源(查詢)中選擇一個,報告。 複選框Control Source
屬性爲空,Triple State
設置爲No
。如何讓複選框在Access 2010報表上運行?
但是,在打開報告 時,複選框永久變灰,無論點擊多少次! 此外,在每個單個點擊複選框my_checkbox_Click()
觸發兩次其值在Null
和True
之間切換! Null值似乎被解釋爲False
,如果事件沒有在每次單擊時雙擊,則可能是OK。
如何讓我的複選框都出現正確 - 作爲一個二進制複選框,之間肯定和否定切換 - 和功能正常,發射_Click()
只有一次每次點擊? 如果這是一個沒有解決方案的已知問題,哪種方法是最佳的解決方案?
我的代碼:
Private Sub Report_Load()
Debug.Print vbCrLf & "Report_Load"
Me.my_chk.Value = False
set_data_source
End Sub
Private Sub my_chk_Click()
Debug.Print vbCrLf & "my_chk_Click"
set_data_source
End Sub
Private Sub set_data_source()
Debug.Print vbCrLf & "set_data_source"
Debug.Print "Me.my_chk.Value", Me.my_chk.Value
Debug.Print "Me.my_chk.ControlSource ", Me.my_chk.ControlSource
Debug.Print "Me.my_chk.TripleState ", Me.my_chk.TripleState
Me.RecordSource = IIf(Me.my_chk.Value, "my_yes_qry", "my_no_qry")
Me.Requery
Debug.Print "Me.RecordSource", Me.RecordSource
End Sub
立即窗口:
Report_Load
set_data_source
Me.my_chk.Value False
Me.my_chk.ControlSource
Me.my_chk.TripleState False
Me.RecordSource my_no_qry
' click once on checkbox
my_chk_Click
set_data_source
Me.my_chk.Value Null
Me.my_chk.ControlSource
Me.my_chk.TripleState False
Me.RecordSource my_no_qry
my_chk_Click
set_data_source
Me.my_chk.Value -1
Me.my_chk.ControlSource
Me.my_chk.TripleState False
Me.RecordSource my_yes_qry
' click once on checkbox
my_chk_Click
set_data_source
Me.my_chk.Value Null
Me.my_chk.ControlSource
Me.my_chk.TripleState False
Me.RecordSource my_no_qry
my_chk_Click
set_data_source
Me.my_chk.Value -1
Me.my_chk.ControlSource
Me.my_chk.TripleState False
Me.RecordSource my_yes_qry
唯一的好消息是,Requery
一個RecordSource
更改後不正確(如果使用過於簡單)影響的數據。
另一件事,儘管我的複選框沒有一個AfterUpdate
Events
下上市,如果我
Private Sub my_chk_AfterUpdate()
Debug.Print vbCrLf & "my_chk_AfterUpdate"
set_data_source
End Sub
替換上面my_checkbox_Click()
處理程序,我得到
Report_Load
set_data_source
Me.my_chk.Value False
Me.my_chk.ControlSource
Me.my_chk.TripleState False
Me.RecordSource my_no_qry
' click once on checkbox
my_chk_AfterUpdate
set_data_source
Me.my_chk.Value -1
Me.my_chk.ControlSource
Me.my_chk.TripleState False
Me.RecordSource my_yes_qry
' click once on checkbox
my_chk_AfterUpdate
set_data_source
Me.my_chk.Value -1
Me.my_chk.ControlSource
Me.my_chk.TripleState False
Me.RecordSource my_yes_qry
它,因爲你可以看,現在不起作用,因爲現在,即使AfterUpdate
每次點擊觸發一次,複選框值不會改變!
在在access-programmers.co.uk/forums 有人建議(關於形式,不報告)使用花哨的編碼
Nz(Me.my_chk = True, False)
,我試過,但它在結果沒有差異。
我的報告的複選框,從來沒有從灰色改變。我不知道這是一個普遍的事實,爲什麼是這樣,或者我應該知道的。 –
我想你的建議,但它不工作(用於報告)。 –
「......我應該知道的......」 - 嘿,我從你的帖子中瞭解到,報告可能包含點擊事件。總是要學習,永遠不要知道。 – Smandoli