Propriété QueryDef.ReturnsRecords (DAO)
S’applique à : Access 2013, Office 2013
Définit ou renvoie une valeur indiquant si une requête SQL directe sur une base de données externe renvoie des enregistrements (espaces de travail Microsoft Access uniquement).
Syntaxe
expression . ReturnsRecords
expression Variable représentant un objet QueryDef.
Remarques
Les requêtes SQL directes envoyées à des bases de données externes ne peuvent pas toutes renvoyer des enregistrements. Par exemple, une instruction SQL UPDATE met à jour des enregistrements sans en renvoyer tandis qu'une instruction SQL SELECT en renvoie. Si la requête renvoie des enregistrements, affectez à la propriété ReturnsRecords la valeur True; dans le cas contraire, affectez à ReturnsRecords la valeur False.
Remarque
[!REMARQUE] Vous devez définir la propriété Connect avant la propriété ReturnsRecords.
Exemple
Cet exemple utilise les propriétés Connect et ReturnsRecords pour sélectionner les cinq titres de livre les mieux vendus dans une base de données Microsoft SQL Server en fonction des ventes de l'année réalisées jusqu'à ce jour. Dans le cas d'un résultat identique dans les chiffres de vente, l'exemple augmente la taille de la liste affichant les résultats de la requête et en explique la raison.
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
Cet exemple utilise la propriété ReturnsRecords et la propriété personnalisée LogMessages pour créer une requête SQL directe qui renverra les données et les messages éventuellement générés par le serveur distant.
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