Propriété Form.Recordset (Access)
Renvoie ou définit l’objet Recordset ADO ou DAO Recordset qui représente la source d’enregistrement de l’objet spécifié. Objet en lecture/écriture.
Syntaxe
expression. Recordset
expressionVariable qui représente un objetForm.
Remarques
La propriété Recordset renvoie l’objet Recordset qui fournit les données parcourues dans un formulaire, un état, un contrôle de zone de liste ou une zone de liste déroulante. Si un formulaire est basé sur une requête, par exemple, faire référence à la propriété Recordset revient à cloner un objet Recordset à l'aide de la même requête. Toutefois, contrairement à l'utilisation de la propriété RecordsetClone, modifier l'enregistrement en cours dans le recordset renvoyé par la propriété Recordset du formulaire définit également l'enregistrement en cours du formulaire.
Le comportement en lecture/écriture de la propriété Recordset est déterminé par le type de recordset (ADO ou DAO) et le type de données (Access ou SQL) contenu dans le recordset identifié par la propriété.
Type d'objet Recordset | Basé sur des données SQL | Basé sur les données stockées par le moteur de base de données Access |
---|---|---|
ADO | Lecture/écriture | Lecture/écriture |
DAO | S/O | Lecture/écriture |
L'exemple suivant montre comment ouvrir un formulaire et un recordset, puis comment les lier en définissant la propriété Recordset du formulaire sur l'objet Recordset nouvellement créé.
Global rstSuppliers As ADODB.Recordset
Sub MakeRW()
DoCmd.OpenForm "Suppliers"
Set rstSuppliers = New ADODB.Recordset
rstSuppliers.CursorLocation = adUseClient
rstSuppliers.Open "Select * From Suppliers", _
CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Set Forms("Suppliers").Recordset = rstSuppliers
End Sub
Utilisez la propriété Recordset pour :
Utilisez des méthodes avec l’objet Recordset qui ne sont pas directement prises en charge sur les formulaires. Par exemple, vous pouvez utiliser la propriété Recordset des méthodes Rechercher ADO ou Rechercher DAO dans une boîte de dialogue personnalisée pour rechercher un enregistrement.
Encapsulez une transaction (qui peut être restaurée) autour d’un ensemble de modifications qui affectent plusieurs formulaires.
Modifier la propriété Recordset d'un formulaire peut également modifier les propriétés RecordSource, RecordsetType et RecordLocks. En outre, il se peut que certaines propriétés associées aux données soient remplacées, par exemple, les propriétés Filter, FilterOn, OrderBy et OrderByOn.
Appeler la méthode Actualiser du recordset d'un formulaire (par exemple,
Forms(0).Recordset.Requery
) peut remettre en cause la liaison. Pour actualiser les données d’un formulaire lié à un recordset, définissez la propriété RecordSource du formulaire sur elle-même :Forms(0).RecordSource = Forms(0).RecordSource
.Lier plusieurs formulaires à un jeu de données commun. Cela permet de synchroniser plusieurs formulaires. Par exemple :
Set Me.Recordset = Forms!Form1.Recordset
Remarque
Lorsqu’un formulaire est lié à un jeu d’enregistrements, une erreur se produit si vous utilisez la commande Filtrer par formulaire .
Exemple
L’exemple suivant utilise la propriété Recordset pour créer une copie de l’objet Recordset du formulaire actuel, puis imprime le nom des champs dans la fenêtre Débogage.
Sub Print_Field_Names()
Dim rst As DAO.Recordset, intI As Integer
Dim fld As Field
Set rst = Me.Recordset
For Each fld in rst.Fields
' Print field names.
Debug.Print fld.Name
Next
End Sub
L’exemple suivant utilise la propriété Recordset et l’objet Recordset pour synchroniser un recordset avec l’enregistrement actif du formulaire. Lorsqu'un nom de société est sélectionné dans la zone de liste modifiable, la méthode FindFirst permet de rechercher l'enregistrement correspondant à cette société, puis de l'afficher dans le formulaire.
Sub SupplierID_AfterUpdate()
Dim rst As DAO.Recordset
Dim strSearchName As String
Set rst = Me.Recordset
strSearchName = CStr(Me!SupplierID)
rst.FindFirst "SupplierID = " & strSearchName
If rst.NoMatch Then
MsgBox "Record not found"
End If
rst.Close
End Sub
Le code suivant permet de déterminer le type de recordset renvoyé par la propriété Recordset sous différentes conditions.
Sub CheckRSType()
Dim rs as Object
Set rs=Forms(0).Recordset
If TypeOf rs Is DAO.Recordset Then
MsgBox "DAO Recordset"
ElseIf TypeOf rs is ADODB.Recordset Then
MsgBox "ADO Recordset"
End If
End Sub
Assistance et commentaires
Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.