QueryDef.ReturnsRecords property (DAO)
Applies to: Access 2013, Office 2013
Sets or returns a value that indicates whether an SQL pass-through query to an external database returns records (Microsoft Access workspaces only).
Syntax
expression .ReturnsRecords
expression A variable that represents a QueryDef object.
Remarks
Not all SQL pass-through queries to external databases return records. For example, an SQL UPDATE statement updates records without returning records, while an SQL SELECT statement does return records. If the query returns records, set the ReturnsRecords property to True; if the query doesn't return records, set the ReturnsRecords property to False.
Note
You must set the Connect property before you set the ReturnsRecords property.
Example
This example uses the Connect and ReturnsRecords properties to select the top five book titles from a Microsoft SQL Server database based on year-to-date sales amounts. In the event of an exact match in sales amounts, the example increases the size of the list displaying the results of the query and prints a message explaining why this occurred.
Sub ClientServerX1()
Dim dbsCurrent As Database
Dim qdfPassThrough As QueryDef
Dim qdfLocal As QueryDef
Dim rstTopFive As Recordset
Dim strMessage As String
' Open a database from which QueryDef objects can be
' created.
Set dbsCurrent = OpenDatabase("DB1.mdb")
' Create a pass-through query to retrieve data from
' a Microsoft SQL Server database.
Set qdfPassThrough = _
dbsCurrent.CreateQueryDef("AllTitles")
' Note: The DSN referenced below must be set to
' use Microsoft Windows NT Authentication Mode to
' authorize user access to the Microsoft SQL Server.
qdfPassThrough.Connect = _
"ODBC;DATABASE=pubs;DSN=Publishers"
qdfPassThrough.SQL = "SELECT * FROM titles " & _
"ORDER BY ytd_sales DESC"
qdfPassThrough.ReturnsRecords = True
' Create a temporary QueryDef object to retrieve
' data from the pass-through query.
Set qdfLocal = dbsCurrent.CreateQueryDef("")
qdfLocal.SQL = "SELECT TOP 5 title FROM AllTitles"
Set rstTopFive = qdfLocal.OpenRecordset()
' Display results of queries.
With rstTopFive
strMessage = _
"Our top 5 best-selling books are:" & vbCr
Do While Not .EOF
strMessage = strMessage & " " & !Title & _
vbCr
.MoveNext
Loop
If .RecordCount > 5 Then
strMessage = strMessage & _
"(There was a tie, resulting in " & _
vbCr & .RecordCount & _
" books in the list.)"
End If
MsgBox strMessage
.Close
End With
' Delete new pass-through query because this is a
' demonstration.
dbsCurrent.QueryDefs.Delete "AllTitles"
dbsCurrent.Close
This example uses the ReturnsRecords property and the custom LogMessages property to create a pass-through query that will return data and any messages generated by the remote server.
Sub LogMessagesX()
Dim wrkAcc As Workspace
Dim dbsCurrent As Database
Dim qdfTemp As QueryDef
Dim prpNew As Property
Dim rstTemp As Recordset
' Create Microsoft Access Workspace object.
Set wrkAcc = CreateWorkspace("", "admin", "", dbUseJet)
Set dbsCurrent = wrkAcc.OpenDatabase("DB1.mdb")
' Create a QueryDef that will log any messages from the
' server in temporary tables.
Set qdfTemp = dbsCurrent.CreateQueryDef("NewQueryDef")
' Note: The DSN referenced below must be configured to
' use Microsoft Windows NT Authentication Mode to
' authorize user access to the Microsoft SQL Server.
qdfTemp.Connect = _
"ODBC;DATABASE=pubs;DSN=Publishers"
qdfTemp.SQL = "SELECT * FROM stores"
qdfTemp.ReturnsRecords = True
Set prpNew = qdfTemp.CreateProperty("LogMessages", _
dbBoolean, True)
qdfTemp.Properties.Append prpNew
' Execute query and display results.
Set rstTemp = qdfTemp.OpenRecordset()
Debug.Print "Contents of recordset:"
With rstTemp
Do While Not .EOF
Debug.Print , .Fields(0), .Fields(1)
.MoveNext
Loop
.Close
End With
' Delete new QueryDef because this is a demonstration.
dbsCurrent.QueryDefs.Delete qdfTemp.Name
dbsCurrent.Close
wrkAcc.Close
End Sub