Share via


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.