我正在从数据库查询中获取一组名称,然后将其重新格式化为逗号分隔的列表。当我在应用程序中的几个地方使用此功能时,我尝试将其编写为获取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分配给结果,则一切正常。当我如图所示重构代码时,尝试运行它时出现“编译错误,需要对象”,并且在子句的最后一行显示了一个标记。(设置String_from_query =结果)。我看不到有什么问题。有什么帮助吗?
Set
仅在将变量分配给时才需要关键字Object
。对于Access,这将是Forms
,Reports
,Recordsets
等。或者访问以外的其他对象(FileSystemObject
例如)。
设置字符串,日期,数字等时,不需要Set
。
您也可以从错误消息中推测出这一点Object required
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句