2011-12-23 124 views
3

我想要執行的操作是將文本框或標籤的文本設置爲動態,只需單擊其他表單中的按鈕即可打開該報告。除了實際改變文字以外,我已經解決了一切。無法更改Report_Open中TextBox的文本

該代碼給出SetFocus的運行時錯誤2478:

Me.tFilial.SetFocus 
Me.tFilial.Text = filialen 

沒有SetFocus的我得到一個運行時錯誤消息,文本離不開切換控制有問題的控制來改變。

什麼是允許哪裏總是有問題在Access中,看來。我該如何解決這個問題?我可以設置出其它形式的buttonclick值與

Reports![rptPressSchema]![tFilial].text="Hello"? 

我會很樂意使用標籤來代替,是否能解決它。但底線是我可以嘗試以任何方式做到這一點,但我想我會問你最佳做法的建議,因爲這確實是一個非常普遍的任務。

+0

請稍後再發布一些代碼。您使用哪個事件來更改文字? – Simon 2011-12-23 10:09:49

+0

它在帖子標題 - Report_Open中。我嘗試按照第二個代碼粘貼的按鈕單擊來設置它,但是收到錯誤消息「報告未打開」。 – 2011-12-23 10:14:11

+2

有關事件的訪問報告確實非常繁瑣。報告打開可能不適合此操作。不要包含.Text屬性,它不是必需的,只適用於有焦點的控件。如果你必須有一個財產,你可以使用。值 – Fionnuala 2011-12-23 13:23:53

回答

3

從Access幫助:

在控件有焦點,Text屬性包含在控制目前的文本數據; Value屬性包含控件的上次保存的數據。將焦點移到另一個控件時,控件的數據將更新,並且Value屬性將設置爲此新值。 然後Text屬性設置不可用,直到控件再次獲得焦點。如果使用「記錄」菜單上的「保存記錄」命令將數據保存在控件中而不移動焦點,則Text屬性和Value屬性設置將相同。

基本上,.Text屬性在報表中沒有用處,因爲單個控件無法獲得焦點。但是,正如@Remou在他的評論中所述,您可以簡單地用.Value替換.Text,並且您的代碼應該可以正常工作(更新值時無需設置焦點)。

+1

現在我考慮通過在報告中使用VB代碼修改報告中的數據「太晚了」。我確保在打開它之前,所有的源數據都可用並且格式正確。我推薦這種方法,它節省了大量的頭部劃痕,並且報告生成變成了一種拖放式的輕而易舉的事情。 – 2012-10-17 08:54:05

+1

@HenrikErlandsson:這絕對是首選的方法。它通常更快,更不容易出錯。也就是說,有時候你唯一的選擇是更新報告事件中的值。 – mwolfe02 2012-10-17 14:24:21

1

花了很多時間進行搜索和嘗試。最後,圖的東西出來... 動態設置文本框的內容,可以很方便地使用 tbTest.Value =「你好」

但訣竅是,如果你使用這個On Open,它就會有麻煩。 ..

Run-time error '2448' You can't assign a value to this object.

所以要設置的值On Load

Private Sub Report_Load() 
Me.tbTest.Value = "hello" 
End Sub 

Private Sub Report_Open(Cancel As Integer) 
'Me.tbTest.Value = "hello" 
End Sub 

我見無處對於做任何解釋,我的猜測是對於Open事件,該對象仍未啓動(用於解釋加載和打開事件的document)...