Vous êtes actuellement hors ligne, en attente de reconnexion à Internet.

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

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).

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 = NothingEnd 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 = NothingEnd 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 = NothingEnd 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 = NothingEnd 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 = NothingEnd 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 = NothingEnd 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 = NothingEnd 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 = NothingEnd 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 = NothingEnd 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 = NothingEnd 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.
OfficeKBHowTo inf ACC2002 reviewdocid
Propriétés

ID d'article : 281998 - Dernière mise à jour : 11/04/2003 16:47:56 - Révision : 4.1

  • Microsoft Office Access 2003
  • Microsoft Access 2002
  • kbhowto KB281998
Commentaires