Propiedad QueryDef.ReturnsRecords (DAO)
Se aplica a: Access 2013, Office 2013
Establece o devuelve un valor que indica si una consulta de paso a través SQL a una base de datos externa devuelve registros (únicamente áreas de trabajo de Microsoft Access).
Sintaxis
expresión . ReturnsRecords
expression Variable que representa un objeto QueryDef.
Comentarios
No todas las consultas de paso a través SQL a bases de datos externas devuelven registros. Por ejemplo, una instrucción UPDATE SQL actualiza registros sin devolver registros, mientras que una instrucción SELECT SQL sí devuelve registros. Si la consulta devuelve registros, establezca la propiedad ReturnsRecords en True; si no devuelve registros, establezca la propiedad ReturnsRecords en False.
Nota:
[!NOTA] Debe establecer la propiedad Connect antes de establecer la propiedad ReturnsRecords.
Ejemplo
En este ejemplo se utilizan las propiedades Connect y ReturnsRecords para seleccionar los cinco títulos de libros más vendidos de una base de datos de Microsoft SQL Server según los volúmenes de ventas de un año hasta la fecha. En el caso de una coincidencia exacta en los volúmenes de ventas, en el ejemplo se aumenta el tamaño de la lista que muestra los resultados de la consulta y se imprime un mensaje que explica lo ocurrido.
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
En este ejemplo se usan la propiedad ReturnsRecords y la propiedad personalizada LogMessagespara crear una consulta de paso a través que devolverá datos y los mensajes generados por el servidor remoto.
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