Comment faire pour lier des formulaires Microsoft Access à des jeux d'enregistrements ADO

Traductions disponibles Traductions disponibles
Numéro d'article: 281998 - Voir les produits auxquels s'applique cet article
Ancien nº de publication de cet article : F281998
Cet article peut contenir des liens vers des informations en langue anglaise (pas encore traduites).
Utilisateurs confirmés : exige de très bonnes compétences en programmation, en interopérabilité et dans le domaine multi-utilisateur.

Cet article s'applique à une base de données Microsoft Access (.mdb) et à un projet Microsoft Access (.adp).

Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article décrit les éléments nécessaires à la création d'un formulaire pouvant être mis à jour, lié à un objet Recordset ADO (ActiveX Data Objects, objets de données ActiveX).

Plus d'informations

Pour lier un formulaire Microsoft Access à un jeu d'enregistrements, vous devez définir la propriété Recordset du formulaire sur un objet Recordset DAO (Data Access Objects, objets de données Access) ou ADO valide.

La propriété Recordset a été introduite dans Microsoft Access 2000 et vous permet de lier des formulaires à des objets Recordset DAO ou ADO. Cependant, les formulaires d'Access 2000 ne peuvent être mis à jour que si la connexion ADO est ouverte à l'aide des fournisseurs OLEDB MSDataShape et SQL Server. Pour plus d'informations sur cette limitation dans Access 2000, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
227053 ACC2000 : Les formulaires basés sur des jeux d'enregistrements ADO sont en lecture seule
Dans Microsoft Access 2002 ou version ultérieure, vous pouvez créer un formulaire pouvant être mis à jour, lié à un jeu d'enregistrements ADO qui utilise d'autres fournisseurs OLEDB. Un formulaire doit satisfaire à plusieurs conditions générales pour pouvoir être mis à jour lorsqu'il est lié à un jeu d'enregistrements ADO. Ces conditions générales sont les suivantes :
  1. Le jeu d'enregistrements ADO sous-jacent doit pouvoir être mis à jour.
  2. Le jeu d'enregistrements doit contenir un ou plusieurs champs indexés de façon unique, tels que la clé primaire d'une table.
Les autres conditions requises pour la mise à jour varient selon les différents fournisseurs. Cet article décrit les autres conditions requises lorsque vous utilisez les fournisseurs OLEDB Microsoft SQL Server, Jet, ODBC et Oracle.

Conditions requises pour Microsoft SQL Server

Il existe deux conditions principales pour pouvoir effectuer la mise à jour lorsque vous liez un formulaire à un jeu d'enregistrements ADO utilisant des données Microsoft SQL Server :
  • La connexion du jeu d'enregistrements ADO doit utiliser le fournisseur OLEDB Microsoft Access 10.0 en tant que fournisseur de services.
  • La connexion du jeu d'enregistrements ADO doit utiliser le fournisseur OLEDB Microsoft SQL Server en tant que fournisseur de données.
REMARQUE : le fournisseur OLEDB Microsoft Access 10.0 est un fournisseur de services OLEDB qui a été spécialement créé pour être utilisé dans Microsoft Access. Il n'a pas été conçu pour être utilisé dans d'autres applications que Microsoft Access et n'est pas pris en charge par ces autres applications.

Lorsque vous créez des jeux d'enregistrements ADO dans Microsoft Access, vous choisissez la connexion ADO qui sera utilisée par le jeu d'enregistrements. Votre code ADO peut partager la connexion ADO utilisée par Microsoft Access pour la base de données SQL Server ouverte dans un fichier projet Access (ADP) ; ou vous pouvez créer par programme une nouvelle connexion ADO à une base de données SQL Server différente.

Partage de la connexion ADO utilisée par Microsoft Access

Si vous utilisez un fichier projet Access (.adp) connecté à une base de données Microsoft SQL Server, votre code ADO peut partager la connexion ADO utilisée par Microsoft Access. Cette connexion est exposée par la propriété CurrentProject.AccessConnection.

L'exemple suivant illustre comment lier un formulaire à un jeu d'enregistrements ADO basé sur des données SQL Server partageant une connexion ADO avec Microsoft Access.
  1. Ouvrez l'exemple de projet NorthwindCS.adp.
  2. Ouvrez le formulaire Customers en mode Création.
  3. Supprimez la propriété Source du formulaire pour désactiver les liens.
  4. Définissez la propriété SurOuverture du formulaire sur la procédure événementielle suivante :
    Private Sub Form_Open(Cancel As Integer)
       Dim cn As ADODB.Connection
       Dim rs As ADODB.Recordset
             
       'Use the ADO connection that Access uses
       Set cn = CurrentProject.AccessConnection
    
       'Create an instance of the ADO Recordset class, and
       'set its properties
       Set rs = New ADODB.Recordset
       With rs
          Set .ActiveConnection = cn
          .Source = "SELECT * FROM Customers"
          .LockType = adLockOptimistic
          .CursorType = adOpenKeyset
          .Open 
       End With
       
       'Set the form's Recordset property to the ADO recordset
       Set Me.Recordset = rs
    
       Set rs = Nothing
       Set cn = Nothing
    End Sub
    					
  5. Enregistrez puis fermez le formulaire.
  6. Ouvrez le formulaire Customers en mode Formulaire.
  7. Ajoutez, modifiez ou supprimez un enregistrement dans le formulaire.
Notez que le formulaire est lié à un jeu d'enregistrements pouvant être mis à jour, basé sur des données SQL Server.

Ouverture d'une connexion ADO distincte

À un certain moment, vous pouvez avoir à ouvrir et à gérer votre propre connexion ADO à SQL Server. Par exemple, vous devrez utiliser cette approche si vous avez écrit du code dans une base de données Access (.mdb) ou un fichier projet Access (.adp) qui était connecté à une base de données SQL Server différente de celle de votre application. Notez que lorsque vous utilisez cette approche, Microsoft vous recommande de fermer la connexion ADO que vous avez ouverte dès que vous n'en avez plus besoin. Par exemple, vous pouvez fermer la connexion ADO dans l'événement Libération du formulaire.

L'exemple suivant illustre comment ouvrir votre propre connexion ADO à une base de données Microsoft SQL Server et comment la lier à un formulaire :
  1. Ouvrez l'exemple de base de données Comptoir.mdb.
  2. Ouvrez le formulaire Customers en mode Création.
  3. Supprimez la propriété Source du formulaire pour désactiver les liens.
  4. Définissez la propriété SurOuverture du formulaire sur la procédure événementielle suivante :
    Private Sub Form_Open(Cancel As Integer)
       Dim cn As ADODB.Connection
       Dim rs As ADODB.Recordset
             
       'Create a new ADO Connection object
       Set cn = New ADODB.Connection
    
       'Use the Access 10 and SQL Server OLEDB providers to
       'open the Connection
       'You will need to replace MySQLServer with the name
       'of a valid SQL Server
       With cn
          .Provider = "Microsoft.Access.OLEDB.10.0"
          .Properties("Data Provider").Value = "SQLOLEDB"
          .Properties("Data Source").Value = "MySQLServer"
          .Properties("User ID").Value = "sa"
          .Properties("Password").Value = ""
          .Properties("Initial Catalog").Value = "NorthwindCS"
          .Open
       End With
    
       'Create an instance of the ADO Recordset class, and
       'set its properties
       Set rs = New ADODB.Recordset
       With rs
          Set .ActiveConnection = cn
          .Source = "SELECT * FROM Customers"
          .LockType = adLockOptimistic
          .CursorType = adOpenKeyset
          .Open 
       End With
       
       'Set the form's Recordset property to the ADO recordset
       Set Me.Recordset = rs
       Set rs = Nothing
       Set cn = Nothing
    End Sub
    					
  5. Ajoutez le code suivant à l'événement Libération du formulaire :
    Private Sub Form_Unload(Cancel As Integer)
       'Close the ADO connection we opened
       Dim cn As ADODB.Connection
       Set cn = Me.Recordset.ActiveConnection
       cn.Close
       Set cn = Nothing
    End Sub
    					
  6. Enregistrez, puis fermez le formulaire.
  7. Ouvrez le formulaire Customers en mode Formulaire.
  8. Ajoutez, modifiez ou supprimez un enregistrement dans le formulaire.
Notez que le formulaire est lié à un jeu d'enregistrements pouvant être mis à jour, basé sur des données SQL Server.

Conditions requises pour Microsoft Jet

Même s'il est possible de lier un formulaire à un jeu d'enregistrements ADO utilisant des données d'une base de données Jet, Microsoft vous recommande d'utiliser plutôt DAO. DAO est hautement optimisé pour Jet et s'exécute généralement plus vite qu'ADO lorsqu'il est utilisé avec une base de données Jet.

Lorsque vous liez un formulaire à un jeu d'enregistrements ADO utilisant des données Microsoft Jet, il existe deux possibilités :
  • La propriété ActiveConnection du jeu d'enregistrements doit utiliser le fournisseur de services OLEDB Microsoft Access 10.0 ainsi que le fournisseur de données OLEDB Microsoft Jet 4.0 et le jeu d'enregistrements doit être un curseur côté serveur.

    - ou -
  • La propriété ActiveConnection du jeu d'enregistrements doit seulement utiliser le fournisseur de données OLEDB Microsoft Jet 4.0 et le jeu d'enregistrements doit être un curseur côté client.
Comme dans la section précédente "Microsoft SQL Server" de cet article, vous pouvez choisir la connexion ADO utilisée par le jeu d'enregistrements lorsque vous utilisez une base de données Jet. Votre code ADO peut partager la connexion ADO utilisée par Microsoft Access pour le fichier de base de données Jet (.mdb) actuellement ouvert ou vous pouvez créer par programme une nouvelle connexion ADO à un fichier de base de données Jet différent.

Partage de la connexion ADO utilisée par Microsoft Access

Si vous créez le code dans la même base de données Microsoft Access (.mdb) que celle contenant les données requises par votre jeu d'enregistrements, votre code ADO peut partager la connexion ADO utilisée par Microsoft Access. Cette connexion est exposée par la propriété CurrentProject.AccessConnection. L'exemple suivant illustre comment lier un formulaire à un jeu d'enregistrements ADO dans une base de données Jet en partageant la connexion ADO utilisée par Microsoft Access :
  1. Ouvrez l'exemple de base de données Comptoir.mdb.
  2. Ouvrez le formulaire Customers en mode Création.
  3. Supprimez la propriété Source du formulaire pour désactiver les liens.
  4. Définissez la propriété SurOuverture du formulaire sur la procédure événementielle suivante :
    Private Sub Form_Open(Cancel As Integer)
       Dim cn As ADODB.Connection
       Dim rs As ADODB.Recordset
                    
       Set cn = CurrentProject.AccessConnection
    
       'Create an instance of the ADO Recordset class, and
       'set its properties
       Set rs = New ADODB.Recordset
       With rs
          Set .ActiveConnection = cn
          .Source = "SELECT * FROM Customers"
          .LockType = adLockOptimistic
          .CursorType = adOpenKeyset
          .CursorLocation = adUseServer
          .Open 
       End With
       
       'Set the form's Recordset property to the ADO recordset
       Set Me.Recordset = rs
       Set rs = Nothing
       Set cn = Nothing
    End Sub
    					
  5. Enregistrez, puis fermez le formulaire.
  6. Ouvrez le formulaire Customers en mode Formulaire.
  7. Ajoutez, modifiez ou supprimez un enregistrement dans le formulaire.
Notez que le formulaire est lié à un jeu d'enregistrements pouvant être mis à jour utilisant des données Jet.

Ouverture d'une connexion ADO distincte

À un certain moment, vous pouvez avoir à ouvrir et à gérer votre propre connexion ADO à une base de données Jet. Par exemple, vous devrez utiliser cette approche si vous créez votre code dans une base de données séparée de la base de données contenant les données requises pour l'accès. Notez que lorsque vous utilisez cette approche, Microsoft vous recommande de fermer la connexion ADO que vous avez ouverte dès que vous n'en avez plus besoin. Par exemple, vous pouvez fermer la connexion ADO dans l'événement Libération du formulaire.

L'exemple suivant illustre comment ouvrir votre propre connexion ADO à une base de données Microsoft Jet et comment la lier à un formulaire :
  1. Créez une base de données vide.
  2. Importez le formulaire Customers à partir de la base de données Comptoir.mdb.
  3. Ouvrez le formulaire Customers en mode Création.
  4. Supprimez la propriété Source du formulaire pour désactiver les liens.
  5. Définissez la propriété SurOuverture du formulaire sur la procédure événementielle suivante :
    Private Sub Form_Open(Cancel As Integer)
       Dim cn As ADODB.Connection
       Dim rs As ADODB.Recordset
             
       'Create a new ADO Connection object
       Set cn = New ADODB.Connection
    
       With cn
          .Provider = "Microsoft.Access.OLEDB.10.0"
          .Properties("Data Provider").Value = "Microsoft.Jet.OLEDB.4.0"
          .Properties("Data Source").Value = _
              "C:\Program Files\Microsoft Office\Office10" & _
              "\Samples\Northwind.mdb"
          .Open
       End With
    
       'Create an instance of the ADO Recordset class, and
       'set its properties
       Set rs = New ADODB.Recordset
       With rs
          Set .ActiveConnection = cn
          .Source = "SELECT * FROM Customers"
          .LockType = adLockOptimistic
          .CursorType = adOpenKeyset
          .Open 
       End With
       
       'Set the form's Recordset property to the ADO recordset
       Set Me.Recordset = rs
       Set rs = Nothing
       Set cn = Nothing
    End Sub
    					
  6. Ajoutez le code suivant à l'événement Libération du formulaire :
    Private Sub Form_Unload(Cancel As Integer)
       'Close the ADO connection we opened
       Dim cn As ADODB.Connection
       Set cn = Me.Recordset.ActiveConnection
       cn.Close
       Set cn = Nothing
    End Sub
    					
  7. Enregistrez, puis fermez le formulaire.
  8. Ouvrez le formulaire Customers en mode Formulaire.
  9. Ajoutez, modifiez ou supprimez un enregistrement dans le formulaire.
Notez que le formulaire est lié à un jeu d'enregistrements pouvant être mis à jour utilisant des données Jet.

Conditions requises pour ODBC

Lorsque vous liez un formulaire à un jeu d'enregistrements ADO utilisant des données provenant d'une base de données ODBC, il existe deux conditions principales :
  • La connexion ADO utilisée par le jeu d'enregistrements doit utiliser le fournisseur Microsoft OLEDB pour ODBC.
  • Le jeu d'enregistrements ADO doit être un curseur côté client.
L'exemple suivant illustre comment ouvrir une connexion ADO à une base de données ODBC et comment la lier à un formulaire.

REMARQUE : ces étapes supposent que la base de données ODBC contient une table nommée CUSTOMERS identique en structure à la table Customers de l'exemple de base de données Comptoir.mdb. Elles supposent également que vous avez créé un DNS ODBC nommé MonDSN utilisant le pilote ODBC dont vous avez besoin pour vous connecter à la base de données principale.
  1. Ouvrez l'exemple de base de données Comptoir.mdb.
  2. Ouvrez le formulaire Customers en mode Création.
  3. Supprimez la propriété Source du formulaire pour désactiver les liens.
  4. Définissez la propriété SurOuverture du formulaire sur la procédure événementielle suivante :
    Private Sub Form_Open(Cancel As Integer)
       Dim cn As ADODB.Connection
       Dim rs As ADODB.Recordset
       Dim strConnection As String
    
       strConnection = "ODBC;DSN=MyDSN;UID=sa;PWD=;DATABASE=Northwind"
       'Create a new ADO Connection object
       Set cn = New ADODB.Connection
    
       With cn
          .Provider = "MSDASQL"
          .Properties("Data Source").Value = strConnection
          .Open
       End With
    
       'Create an instance of the ADO Recordset class, and
       'set its properties
       Set rs = New ADODB.Recordset
       With rs
          Set .ActiveConnection = cn
          .Source = "SELECT * FROM Customers"
          .LockType = adLockOptimistic
          .CursorType = adOpenKeyset
          .CursorLocation = adUseClient
          .Open 
       End With
       
       'Set the form's Recordset property to the ADO recordset
       Set Me.Recordset = rs
       Set rs = Nothing
       Set cn = Nothing
    End Sub
    					
  5. Ajoutez le code suivant à l'événement Libération du formulaire :
    Private Sub Form_Unload(Cancel As Integer)
       'Close the ADO connection we opened
       Dim cn As ADODB.Connection
       Set cn = Me.Recordset.ActiveConnection
       cn.Close
       Set cn = Nothing
    End Sub
    					
  6. Enregistrez, puis fermez le formulaire.
  7. Ouvrez le formulaire Customers en mode Formulaire.
  8. Ajoutez, modifiez ou supprimez un enregistrement dans le formulaire.
Notez que le formulaire est lié à un jeu d'enregistrements pouvant être mis à jour, basé sur des données ODBC.

Conditions requises pour Oracle

Lorsque vous liez un formulaire à un jeu d'enregistrements ADO utilisant des données provenant d'une base de données Oracle, il existe deux conditions principales :

  • La connexion ADO utilisée par le jeu d'enregistrements doit utiliser le fournisseur Microsoft OLEDB pour Oracle.
  • Le jeu d'enregistrements ADO doit être un curseur côté client.
L'exemple suivant illustre comment ouvrir une connexion ADO à une base de données Oracle et comment la lier à un formulaire.

REMARQUE : ces étapes supposent que la base de données Oracle contient une table nommée CUSTOMERS identique en structure à la table Customers de l'exemple de base de données Comptoir.mdb.
  1. Ouvrez l'exemple de base de données Comptoir.mdb.
  2. Ouvrez le formulaire Customers en mode Création.
  3. Supprimez la propriété Source du formulaire pour désactiver les liens.
  4. Définissez la propriété SurOuverture du formulaire sur la procédure événementielle suivante :
    Private Sub Form_Open(Cancel As Integer)
       Dim cn As ADODB.Connection
       Dim rs As ADODB.Recordset
             
       'Create a new ADO Connection object
       Set cn = New ADODB.Connection
    
       With cn
          .Provider = "MSDAORA"
          .Properties("Data Source").Value = "MyOracleServer"
          .Properties("User ID").Value = "username"
          .Properties("Password").Value = "password"          
          .Open
       End With
    
       'Create an instance of the ADO Recordset class, and
       'set its properties
       Set rs = New ADODB.Recordset
       With rs
          Set .ActiveConnection = cn
          .Source = "SELECT * FROM Customers"
          .LockType = adLockOptimistic
          .CursorType = adOpenKeyset
          .CursorLocation = adUseClient
    
          .Open 
       End With
      
       'Set the form's Recordset property to the ADO recordset
       Set Me.Recordset = rs
       Set rs = Nothing
       Set cn = Nothing
    End Sub
    					
  5. Ajoutez le code suivant à l'événement Libération du formulaire :
    Private Sub Form_Unload(Cancel As Integer)
       'Close the ADO connection we opened
       Dim cn As ADODB.Connection
       Set cn = Me.Recordset.ActiveConnection
       cn.Close
       Set cn = Nothing
    End Sub
    					
  6. Enregistrez, puis fermez le formulaire.
  7. Ouvrez le formulaire Customers en mode Formulaire.
  8. Ajoutez, modifiez ou supprimez un enregistrement dans le formulaire.
Notez que le formulaire est lié à un jeu d'enregistrements pouvant être mis à jour, basé sur des données Oracle.

Références

Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
281784 Différences entre les propriétés Connection et AccessConnection
Les produits tiers mentionnés dans cet article sont fabriqués par des sociétés indépendantes de Microsoft. Microsoft exclut toute garantie, implicite ou autre, concernant les performances ou la fiabilité de ces produits.

Propriétés

Numéro d'article: 281998 - Dernière mise à jour: mardi 4 novembre 2003 - Version: 4.1
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Office Access 2003
  • Microsoft Access 2002
Mots-clés : 
kbhowto KB281998
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com