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

时间:2016-01-21 18:49:02

标签: vba ms-access

我从数据库查询中获取一组名称,然后将其重新格式化为逗号分隔列表。因为我在我的应用程序中使用此功能几个位置,我尝试将其编写为获取sql-query并返回字符串的函数。

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分配给结果,那么一切正常。当我如图所示重构代码时,当我尝试运行它时,我得到一个“编译错误,需要对象”,并且在子行的最后一行上有一个标记。 (设置String_from_query = results)。我无法看出有什么问题。有什么帮助吗?

1 个答案:

答案 0 :(得分:4)

仅在将变量分配给Set时才需要关键字Object。对于Access,这可以是FormsReportsRecordsets等。或者访问以外的其他对象(例如FileSystemObject)。

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

您也可以通过错误消息Object required推测这一点。