2016-01-21 64 views
1

我從數據庫查詢中獲取一組名稱,然後將其重新格式化爲逗號分隔列表。因爲我在我的應用程序中使用了這個函數的幾個位置,所以我嘗試將它寫爲一個獲取sql查詢並返回字符串的函數。對象聲明字符串變量時所需的錯誤

Public Function String_from_query(StrSQL As String) As String 

Dim dbs As Database 
Dim rs As Recordset 
Set dbs = CurrentDb 
Dim results As String 
results = "" 
Set rs = dbs.OpenRecordset(StrSQL) 
If Not (rs.EOF And rs.BOF) Then 
    rs.MoveFirst 
    Do While Not rs.EOF 
     If results > "" Then 
      results = results & ", " 
     End If 
     results = results & rs("Navn") 
     rs.MoveNext 
    Loop 
End If 
Set String_from_query = results 
End Function 

然後,這是從事件處理函數調用:

Private Sub Detalj_Format(Cancel As Integer, FormatCount As Integer) 
Dim StrSQL As String 
StrSQL = "SELECT Personer.Navn FROM Personer INNER JOIN Personoppgaver ON Personer.Initialer = Personoppgaver.Initialer WHERE Personoppgaver.Oppgaveid =" & Me.Oppgaveid.Value 
Me.Tekst52.Value = String_from_query(StrSQL) 
End Sub 

如果非要從事件處理程序中的String_from_query函數的代碼,然後直接分配到Me.Tekst52結果,一切工作正常。當我重構所示的代碼時,當我嘗試運行它時,出現「Compile Error,Object required」,並在子文件的最後一行顯示一個標記。 (Set String_from_query = results)。我無法看到有什麼問題。任何幫助?

+0

刪除'Set'。只有對象需要。不是字符串 –

+0

Bah,太愚蠢了......在閱讀了一下後,我得到了這樣的印象,即它太少會讓你陷入困境......工作得很好,如果你將它重寫爲答案,我可以接受它。 – MortenSickel

+0

已回答。如果您將標題編輯爲「聲明字符串變量時的對象所需的錯誤」,則可能更容易搜索。只是一個想法 ... –

回答

2

僅當將變量分配給Object時,才需要使用關鍵字Set。對於Access,這將是Forms,Reports,Recordsets等。或者Access以外的其他對象(例如FileSystemObject)。

設置字符串,日期,數字等時,您不需要Set

你也可以從錯誤消息中猜出這個,Object required