vba - 声明字符串变量时需要对象错误

标签 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 = 结果)。我看不出有什么问题。有什么帮助吗?

最佳答案

关键词Set仅在将变量分配给 Object 时才需要.对于 Access,这将是 Forms , Reports , Recordsets等或 Access 之外的其他对象(例如 FileSystemObject )。

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

您也可以从错误消息中推测这一点,Object required .

关于vba - 声明字符串变量时需要对象错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34931940/

相关文章:

sql - 按月统计的 Access 查询数

vba - 保护非空单元格VBA

excel - VBA 自动执行网页抓取进入单元格

Excel VBA - 在某些条件下删除行

sql - Access 2010 VBA : If no records match filter, 显示 "No records found"

sql - 将电子表格中的行与数据库中的记录进行比较

vba - 为什么我的 RecordCount 不应该是 0?

Excel 空白单元格列表

excel - OnKey "Delete"清除组合框

mysql - 无法通过 Workbench 或 MS Access 更新 MySQL View 中的数据