2012-01-30 57 views
0

我得到了這個問題。我有一個表單使用表單的記錄源屬性檢索表數據。當窗體打開時,我將其記錄源屬性設置爲模塊的公共方法RetrieveMembers。以下是代碼。試圖麻煩VBA中的對象所需的錯誤

Private Sub Form_Open(Cancel As Integer) 
'set Form's record source property to retrieve a Members table 
Me.RecordSource = mod_JoinMember.RetrieveMembers 

End Sub 

'mod_JoinMember Class 
Public Function RetrieveMembers() As String 

Dim strSQL As String 
Set strSQL = "SELECT tbl_Member.Title, tbl_Member.Gender, tbl_Member.LastName, 
tbl_Member.DateofBirth, tbl_Member.Occupation, tbl_Member.PhoneNoWork, 
tbl_Member.PhoneNoHome, tbl_Member.MobileNo, tbl_Member.Email, 
tbl_Member.Address, tbl_Member.State, tbl_Member.Postcode FROM tbl_Member;" 
RetrieveMembers = strSQL 

End Function 

所需的對象引發錯誤。

我無法理解這個編譯錯誤。我看到我的代碼沒有錯,因爲recordsource是一個String類型的屬性。而我的模塊的函數Retrievemembers返回一個字符串值。

爲什麼它不滿意呢?

+0

什麼行是拋出的錯誤? (我懷疑在代碼中沒有顯示...) – 2012-01-30 04:49:01

+0

它被作爲字符串行引發到Public Function RetrieveMembers。只是一些信息 - 而數據庫應用程序是一個MS Access 2003,我在我的筆記本電腦上運行MS Access 2007軟件。 FYI – awongCM 2012-01-30 12:23:42

回答

2

感謝您的幫助。

我修好了。原因是因爲字符串不是真正的開始對象。所以'Set'關鍵字是不需要的 - 因爲你不需要顯式聲明String類型的對象!

現在一切都好!

+0

+1好了,我完全錯過了:)值得一提的是,您可以通過刪除strSQL並立即將RetrieveMembers設置爲SQL來縮短代碼。 – 2012-01-30 14:07:37

+0

@MattDonnan:是的,我可以這麼做。稍後再爲我排憂解難。此外,我不知道在這個問題第一次發生時Record Source是一個字符串類型的屬性,因此不得不編寫長代碼,認爲它可能需要一個記錄集對象......謝謝。 – awongCM 2012-02-02 11:49:57

0

由於您使用的是類模塊的工作我想你會需要使用:

Public Property Get RetrieveMembers() As String 

不是:

Public Function RetrieveMembers() As String 
+0

Matt。我試過了。但它不起作用。錯誤不斷拋出函數方法行,即Public Function RetrieveMembers()as String。 – awongCM 2012-01-30 12:22:14

+0

@ AW-GWTF899您是否嘗試過使用Access 03運行時而不是07運行它,存在兼容性問題。 – 2012-01-30 13:15:14