对象声明字符串变量时所需的错误

问题描述:

我从数据库查询中获取一组名称,然后将其重新格式化为逗号分隔列表。因为我在我的应用程序中使用了这个函数的几个位置,所以我尝试将它写为一个获取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

已回答。如果您将标题编辑为“声明字符串变量时的对象所需的错误”,则可能更容易搜索。只是一个想法 ... –

仅当将变量分配给Object时,才需要使用关键字Set。对于Access,这将是Forms,Reports,Recordsets等。或者Access以外的其他对象(例如FileSystemObject)。

设置字符串,日期,数字等时,您不需要Set

你也可以从错误消息中猜出这个,Object required