Accès aux données avec Visual Basic

Qu'est-ce qu'ADO

ADO désigne un groupe de contrôles ActiveX qui permettent de tirer parti des techniques Microsoft les plus récentes en matière d'accès aux données. Cet accès peut être effectué via pratiquement tout langage de programmation, ou de script, autorisant la création et l'utilisation des contrôles ActiveX (qui sont en réalité des objets COM).

ADO repose sur la technique d'accès aux données OLE DB. Il s'agit d'un groupe d'interfaces que toutes les sources de données peuvent mettre en oeuvre, de manière uniforme au moyen de pilotes spéciaux (ou fournisseurs). OLE DB s'articule autour d'une API de niveau peu élevé, conçue pour être utilisée avec les langages tels le C++. ADO &#laquo;empaquette» ces interfaces dans des objets ActiveX/COM susceptibles d'être employés par une panoplie de langages. En fait ADO est relativement indépendant des langages de programmation dans la mesure où la seule exigence est que le langage permette la création d'objets ActiveX/COM. Ceci nous permet donc d'utiliser ADO dans des langages tels que le Visual Basic, C++, Java, J++ et Delphi. ADO peut également être utilisé dans des langages de script tels que JavaScript et VBScript. De plus, ADO est utilisé dans la programmation ASP côté serveur, et dans le navigateur côté client.

ADO propose un mode standard de gestion des données issues de toutes sources dont relationnelles et ISAM. Par ailleurs, le rôle croissant d'Internet a mis en lumière le besoin d'accéder à des données à distance où qu'elles se trouvent. Cela a fortement influencé le concept d'ADO qui permet donc l'accès aux sources de données distantes via des navigateurs Web ou des applications personnalisées.

Le modèle objet ADO définit une collection d'objets programmables qui prennent en charge le Modèle Objet Composant (COM, Component Object Model) et Automation OLE pour exploiter la technologie partenaire appelée OLE DB. Par rapport aux autres objets d'accès aux données tels que DAO ou RDO, le modèle objet ADO est plus plat (composé de moins de strates d'objets). La puissance et la flexibilité d'ADO sont principalement dues au fait qu'une application peut se connecter à différents types de sources de données en utilisant le même modèle de programmation, quelles que soient les fonctionnalités inhérentes à la source de données.

Qu'est-ce qu'OLE DB

OLE DB se veut être une méthode universelle d'accès aux données qui devrait normalement succéder à ODBC. Les principales raisons qui ont poussé Microsoft à trouver un successeur à la méthode ODBC sont au nombre de trois :

La nature distribuée d'Internet ne nous permet plus de croire que nos données seront nécessairement locales. Cela nous oblige à ajouter aux techniques d'accès aux données, une nouvelle dimension, soit celle de concevoir des applications fonctionnant à l'échelle mondiale. De plus, le fait de devoir compter sur des liens de communication moins fiable que ceux composant les réseaux locaux nous oblige à tenir compte lors du développement des applications que le «Client» ne restera pas nécessairement connecté au «Serveur».

Étant donné la nature même des applications fonctionnant sur le WEB (commerce électronique, multimédia, ...), nos données ne sont plus seulement textuelles ou numériques, mais peuvent également comprendre d'autres types d'informations telles que des images et des séquences vidéo ou sonores. De plus, la définition d'une source de données a évolué dans la mesure où elles ne sont plus uniquement relationnelles ou ISAM, mais pourraient provenir de n'importe quel format imaginable (messagerie électronique, page HTML, graphique, ...).

De plus, OLE DB représente un jeu d'interfaces orientées objet de type COM. Cette interface est d'un maniement trop complexe pour la plupart des programmeurs et carrément inutilisable avec certains langages tels Visual Basic et les langages de script en général. ADO permet donc de simplifier (ou de rendre possible) l'utilisation d'OLE DB (voir le schéma ci-dessous).

OLE DB introduit deux nouvelles notions, soit celle des consommateurs de données et celle des fournisseurs de données.

Un consommateur de données utilise les données. Donc au sens strict du terme, ADO est un consommateur de données car il utilise les données fournies par OLE DB.

Un fournisseur de données peut obtenir les données directement à partir d'une source ou via l'intermédiaire d'un produit tiers tel ODBC. Le fournisseur n'est pas la source physique des données, mais plutôt un mécanisme qui nous y relie. Voici le groupe de fournisseurs initialement proposés par Microsoft avec ADO 2.0.

 

Fournisseur
Description
Base de données Microsoft® Jet
Il permet l'accès aux bases de données Access standard, y compris aux tables liées.
Base de données ODBC
Pour les pilotes ODBC existants. Il garantit que les progrès techniques ne laissent pas de côté les données existantes.
Base de données Oracle
Même si la connexion à Oracle n'a jamais été aisée avec les produits Microsoft, un pilote natif simplifie l'accès aux sources de données Oracle.
Data Shape
Pour les jeux d'enregistrements hiérarchisés. Il permet la création de jeux enregistrements de type entrée / détails, pour une recherche détaillée de données.
Microsoft® Active Directory Service
Pour les données de ressources stockées, comme Active Directory. Le Directory Service de Microsoft® Windows 2000 l'utilise pour permettre l'accès aux informations utilisateur, ainsi qu'aux périphériques de réseau.
Microsoft® Index Server
Pour Microsoft Index Server. Plus les sites Web se développeront et plus il sera utile, lorsque les données indexées seront disponibles.
Microsoft® SQL Server
Pour autoriser l'accès aux données stockées dans SQL Server.
Persisted Recordset
Pour les jeux d'enregistrements sauvegardés localement. Il ne s'agit pas réellement d'un fournisseur de données, mais il fonctionne comme tel avec ces jeux d'enregistrements.
Site Server Search
Pour Microsoft Site Server. Pour une utilisation avec les sites Web gérées par Site Server.

Chaque fournisseur est cependant unique et la façon dont votre application dialogue avec ADO peut varier légèrement, d'un fournisseur à un autre. Il convient donc de prendre en considération quelques différences appartenant généralement à l'une des trois catégories suivantes :

Pour chacune de ces trois catégories, vous trouverez des informations spécifiques aux fournisseurs Microsoft répertoriés ci-dessous.

Application

Provider

Base de données Microsoft® Jet
Microsoft.Jet.OLEDB.4.0
Base de données ODBC
MSDASQL
Base de données Oracle
MSDAORA
Data Shape
MSDataShape
Microsoft® Active Directory Service
ADSDSOObject
Microsoft® Index Server
MSIDXS
Microsoft® SQL Server
SQLOLEDB

Propriétés dynamiques spécifiques au fournisseur

Les collections Properties des objets Connection, Command et Recordset contiennent des propriétés dynamiques propres au fournisseur. Ces propriétés fournissent des informations sur des fonctionnalités spécifiques au fournisseur, au-delà des propriétés intégrées prises en charge par ADO.

Une fois que vous avez établi la connexion et créé ces objets, utilisez la méthode Refresh sur la collection Properties des objets pour accéder aux propriétés spécifiques au fournisseur.

Vous pouvez créer des objets Connection indépendamment de tout autre objet déjà défini.

Note: Vous pouvez exécuter des commandes ou des procédures stockées comme s'il s'agissait de méthodes natives sur l'objet Connection.

Accès aux données avec ADO

ADO contient une bibliothèque client de curseurs par lots qui prend en charge les mises à jours optimistes par lots. Les mises à jour par lots vous permettent de créer un ensemble de résultats, de modifier les données selon les besoins et d'apporter ensuite toutes les modifications à l'aide de la méthode de mise à jour par lots. Cela réduit la charge sur le serveur et sur le réseau et améliore les performances.

Une fonctionnalité importante apportée par l'utilisation d'ADO est la gestion avancée de la mémoire cache des jeux d'enregistrements proposée par RDS (Remote Data Services). RDS offre une mise en mémoire cache facultative des données sur la station de travail client. Avec RDS, vous pouvez effectuer le marshaling des mouvements de données entre le serveur et le client. Par exemple, votre application peut utiliser un ensemble de résultats volumineux côté client. Cela réduit le nombre de demandes de données de l'application côté client au serveur et résulte en une amélioration des performances l'application côté client. De plus, vous pouvez ouvrir et remplir en mode asynchrone un objet Recordset déconnecté. Cela améliore les performances en libérant le client pour l'exécution d'autres tâches pendant que les enregistrements sont renvoyés.

Pour accéder à une source de données, une application classique basée sur ADO utilise les opérations suivantes.

Création de l'objet Connection

Spécifie la chaîne de connexion (propriété ConnectionString) , soit des informations telles que le nom de la source de données, l'identification de l'utilisateur, le mot de passe, le délai de connexion, la base de données par défaut et l'emplacement du curseur. Un objet Connection représente une session unique avec une source de données. Vous pouvez même contrôler les transactions par l'objet Connection à l'aide des méthodes BeginTrans, CommitTrans et RollbackTrans.

Ouverture de la connexion

Ouvre la connexion ADO à la source de données.

Exécution d'une instruction SQL

Une fois la connexion ouverte, vous pouvez exécuter une requête. Vous pouvez exécuter cette requête en mode asynchrone et également choisir de traiter l'ensemble de résultats de la requête en mode asynchrone; ADO signale au pilote de curseur de remplir l'ensemble de résultats en arrière-plan. Cela permet à votre application d'effectuer d'autres processus en attendant.

Utilisation de l'ensemble de résultats

L'ensemble de résultats est désormais disponible pour votre application. Selon le type de curseur, vous pouvez parcourir et modifier les données des lignes côté serveur ou côté client.

Fin de la connexion

Met fin à la connexion à la source de données.

Modèle d'objets ADO

Résumé du modèle d'objets ADO

Le modèle objet ADO se compose des sept objets décrits ci-dessous.

Objet Command

Gère les informations relatives à une commande, comme une chaîne de requête, des définitions de paramètre, etc. Vous pouvez exécuter une chaîne de commande sur un objet Connection d'une chaîne de connexion comme partie intégrante de l'ouverture d'un objet Recordset, sans définir d'objet Command. L'objet Command est utile lorsque vous voulez définir des paramètres de requête ou exécuter une procédure stockée qui renvoie des paramètres en sortie. L'objet Command prend en charge plusieurs propriétés permettant de décrire le type et le but de la requête et d'aider ADO à optimiser l'opération.

Objet Connection

Gère les informations de connexion telles que le type de curseur, la chaîne de connexion, le délai de requête, le délai de connexion et la base de données par défaut.

Objet Error

Contient des informations étendues relatives aux conditions des erreurs générées par le fournisseur de données. Puisqu'une même instruction peut générer deux erreurs ou davantage, la collection Errors peut contenir simultanément plusieurs objets Error.

Objet Field

Contient les informations relatives à une seule colonne de données dans un jeu d'enregistrements. L'objet Recordset utilise la collection Fields pour rassembler tous ses objets Field. Ces informations incluent le type de données, la précision et l'échelle numérique.

Objet Parameter

Paramètre unique associé à une commande. L'objet Command utilise la collection Parameters pour rassembler tous ses objets Parameter. Les objets Parameter ADO peuvent être créés automatiquement par l'envoi de requêtes à la base de données. Cependant, vous pouvez également créer cette collection par programmation pour améliorer les performances lors de l'exécution.

Objet Property

Caractéristique d'un objet ADO définie par le fournisseur de données. Les objets ADO ont deux types de propriétés: intégrée et dynamique. Les propriétés intégrées sont celles qui sont mises en oeuvre dans ADO et disponibles pour tout nouvel objet ADO. Les propriétés dynamiques sont définies par le fournisseur de données sous-jacent et apparaissent dans la collection Properties de l'objet ADO approprié. Par exemple, une propriété peut indiquer si un objet Recordset prend en charge les transactions ou la mise à jour. C'est une des fonctions les plus intéressantes d'ADO car elle permet au fournisseur de services ADO de proposer des interfaces spéciales.

Objet Recordset

Ensemble de lignes renvoyé par une requête, y compris un curseur dans ces lignes. Vous pouvez ouvrir un objet Recordset (c'est-à-dire, exécuter une requête) sans ouvrir explicitement un objet Connection. Cependant, si vous créez un objet Connection au préalable, vous pouvez ouvrir plusieurs objets Recordset avec la même connexion.

Les objets ADO


Objet
Description
Connection
Permet l'échange de données. Un objet Connection représente une connexion ouverte à une source de données.
Command
Représente une instruction SQL. Un objet Command représente la définition d'une commande spécifique que vous allez exécuter sur une source de données.
Parameter
Représente un paramètre d'une instruction SQL. Un objet Parameter représente un paramètre ou un argument associé à un objet Command basé sur une requête paramétrée ou une procédure stockée.
Recordset
Un objet Recordset représente le jeu d'enregistrements complet d'une table de base de données ou les résultats d'une commande exécutée. L'objet Recordset fait toujours référence à un seul enregistrement du jeu comme étant l'enregistrement en cours.
Field
Représente une colonne d'un objet Recordset. Un objet Field représente une colonne de données avec un type de données commun.
Error
Représente une erreur de connexion. Un objet Error contient des informations relatives à des erreurs d'accès aux données au cours d'une opération du fournisseur.
Property
Représente une des caractéristiques d'un objet ADO. Un objet Property représente une caractéristique dynamique d'un objet ADO défini par le fournisseur.

Les collections ADO

Collection
Description
Errors
La collection Errors comprend tous les objets Error créés en réponse à un échec unique lié au fournisseur.
Parameters
Une collection Parameters comprend tous les objets Parameter associés à un objet Command.
Fields
Une collection Fields comprend tous les objets Field associés à un objet Recordset.
Properties
Une collection Properties comprend tous les objets Property associés à un objet Connection, Command, Recordset ou Field.

Les gestionnaires d'événements ADO

ConnectionEvents
Description
BeginTransComplete,
CommitTransComplete, RollbackTransComplete
Gestion de transactions
Notification que la transaction en cours a démarré, a été validée ou annulée.
WillConnect,
ConnectComplete,
Disconnect
Gestion de connexions
Notification que la connexion en cours va commencer, a commencé ou a abouti.
WillExecute,
ExecuteComplete
Gestion de l'exécution d'une commande
Notification que l'exécution de la commande en cours sur la connexion va commencer ou a abouti.
InfoMessage
Information
Notification qu'il existe des informations supplémentaires au sujet de l'opération en cours.


RecordsetEvents
Description
FetchProgress,
FetchComplete
État de l'extraction
Notification de la progression de l'extraction des données ou de l'aboutissement de l'opération.
WillChangeField,
FieldChangeComplete
Gestion de l'exploration
Notification que l'emplacement de la ligne active d'un objet Recordset va changer, a changé ou va atteindre la fin de l'objet Recordset.
WillChangeField,
FieldChangeComplete
Gestion de la modification des lignes
Notification qu'un élément de la ligne active de l'objet Recordset va changer ou a changé.
WillChangeField,
FieldChangeComplete
Gestion de la modification de l'objet Recordset
Notification qu'un élément de l'objet Recordset actif va changer ou a changé.

L'objet Connection

Un objet Connection représente une session unique avec une source de données. Dans le cas d'un système de base de données client/serveur, il peut correspondre à une connexion réseau au serveur. Selon la fonctionnalité prise en charge par le fournisseur, certaines collections, méthodes ou propriétés d'un objet Connection peuvent ne pas être disponibles.

Les collections, méthodes et propriétés d'un objet Connection permettent de :

Note:

Vous pouvez exécuter une requête sans utiliser d'objet Command en passant une chaîne d'interrogation à la méthode Execute d'un objet Connection. Un objet Command est cependant nécessaire si vous voulez conserver le texte de la commande et le ré-exécuter, ou si vous utilisez des paramètres de requête.


Propriétés et méthodes de l'objet Connection

Propriété
Description
Attributes
Indique les caractéristiques d'un objet.
CommandTimeout
Indique le délai à respecter lors de la tentative d'exécution d'une commande avant d'interrompre cette tentative et de générer un message d'erreur.
ConnectionString
Comporte les informations utilisées pour établir une connexion avec la source de données.
ConnectionTimeout
Indique le délai à respecter lors d'une tentative de connexion avant d'y mettre un terme et de générer un message d'erreur.
CursorLocation
Définit ou renvoie la position du moteur du curseur.
DefaultDatabase
Indique la base de données par défaut d'un objet Connection.
IsolationLevel
Indique le niveau d'isolation d'un objet Connection.
Mode
Précise les autorisations de modification de données d'un objet Connection.
Provider
Indique le nom du fournisseur d'un objet Connection.
State
Décrit pour tout objet applicable si l'objet est dans un état ouvert ou fermé.
Version
Indique le numéro de version d'ADO.


Méthodes
Description
BeginTrans
Commence une nouvelle transaction.
CommitTrans
Sauvegarde les modifications et arrête la transaction en cours. Il peut également démarrer une nouvelle transaction
RollbackTrans
Annule les modifications apportées à la transaction en cours et arrête celle-ci. Il peut également démarrer une nouvelle transaction. Il peut également démarrer une nouvelle transaction.
Cancel
Annule l'exécution de l'appel en attente, en mode asynchrone d'une méthode Execute ou Open.
Close
Ferme un objet ouvert ainsi que tous les objets dépendant de celui-ci.
Execute
Exécute la requête, l'instruction SQL, la procédure stockée ou le texte propre au fournisseur spécifiés.
Open
Ouvre une connexion à une source de données.
OpenSchema
Obtient des informations, en provenance du fournisseur, sur le schéma de la base de données.

L'objet Command

Un objet Command permet de consulter une base de données et de renvoyer des enregistrements dans un objet Recordset, d'exécuter une opération globale ou de manipuler la structure d'une base de données. Selon la fonctionnalité du fournisseur, certaines collections, méthodes ou propriétés Command peuvent provoquer une erreur lorsqu'elles sont référencées.

Les collections, méthodes et propriétés d'un objet Command permettent de :

Vous pouvez exécuter une requête sans utiliser d'objet Command en passant une chaîne d'interrogation à la méthode Execute d'un objet Connection ou à la méthode Open d'un objet Recordset. Un objet Command est cependant nécessaire si vous voulez conserver le texte de la commande et le ré-exécuter, ou si vous utilisez des paramètres de requête.

Pour créer un objet Command indépendamment d'un objet Connection déjà défini, sa propriété ActiveConnection doit correspondre à une chaîne de connexion valide. ADO crée alors un objet Connection mais il ne l'affecte pas à une variable objet. Si vous associez plusieurs objets Command à une même connexion, vous devez cependant créer et ouvrir explicitement un objet Connection. Ceci affecte l'objet Connection à une variable objet. Si la propriété ActiveConnection des objets Command n'est pas définie sur cette variable objet, ADO crée un nouvel objet Connection pour chaque objet Command, même si vous utilisez la même chaîne de connexion.

Pour exécuter un objet Command, il suffit de l'appeler à l'aide de sa propriété Name sur l'objet Connection associé. La propriété ActiveConnection de l'objet Command doit être définie sur l'objet Connection. Si l'objet Command comporte des paramètres, passez les valeurs de ceux-ci en tant qu'arguments de la méthode.

L'objet RecordSet

Un objet Recordset représente le jeu d'enregistrements complet d'une table de base de données ou les résultats d'une commande exécutée. L'objet Recordset fait toujours référence à un seul enregistrement du jeu comme étant l'enregistrement en cours.

Remarques : Les objets Recordset sont utilisés pour manipuler les données d'un fournisseur. Lors de l'utilisation d'ADO, les données sont manipulées principalement à l'aide d'objets Recordset. Tous les objets Recordset sont construits à partir d'enregistrements (lignes) et de champs (colonnes). Selon la fonctionnalité prise en charge par le fournisseur, certaines méthodes ou propriétés Recordset peuvent ne pas être disponibles.

ADOR.Recordset et ADODB.Recordset sont des noms de classes (ProgID) que vous pouvez utiliser pour créer un objet Recordset. Le fonctionnement des objets Recordset ainsi créés est identique, quel que soit leur ProgID. ADOR.Recordset est installé avec Microsoft® Internet Explorer et ADODB.Recordset avec ADO. Le comportement d'un objet Recordset est fonction de son environnement (client, serveur, Internet Explorer, etc.). Les différences applicables aux propriétés, aux méthodes et aux événements sont détaillées dans les rubriques d'aide correspondantes.

Curseurs

Il existe quatre types de curseur définis dans ADO :

Choisissez le type de curseur en définissant la propriété CursorType avant d'ouvrir l'objet Recordset ou passez un argument CursorType à l'aide de la méthode Open. Certains fournisseurs ne prennent pas tous les types de curseur en charge. Vérifiez la documentation livrée avec votre fournisseur. Si vous ne spécifiez pas un type de curseur, ADO ouvre par défaut un curseur à défilement en avant.

Lorsqu'utilisés avec certains fournisseurs (par exemple, le fournisseur ODBC Microsoft pour OLE DB avec Microsoft SQL Server), vous pouvez créer des objets Recordset indépendamment de tout autre objet Connection déjà défini en passant une chaîne de connexion à l'aide de la méthode Open. ADO crée alors un objet Connection mais il ne l'affecte pas à une variable objet. Si vous ouvrez plusieurs objets Recordset sur une même connexion, vous devez cependant créer et ouvrir explicitement un objet Connection afin que celui-ci soit assigné à une variable objet. Si vous n'utilisez pas cette variable objet lors de l'ouverture de vos objets Recordset, ADO crée un nouvel objet Connection pour chaque nouvel objet Recordset, même lorsque vous passez la même chaîne de connexion.

Vous pouvez créer autant d'objets Recordset que nécessaire.

Lorsque vous ouvrez un objet Recordset, l'enregistrement en cours est positionné sur le premier enregistrement (s'il existe) et les propriétés BOF et EOF sont sur False. S'il n'y a aucun enregistrement, les propriétés BOF et EOF sont sur True.

Si le fournisseur prend en charge cette fonctionnalité, vous pouvez repositionner l'enregistrement en cours à l'aide des méthodes MoveFirst, MoveLast, MoveNext, MovePrevious et Move, ou des propriétés AbsolutePosition, AbsolutePage et Filter. Les objets Recordset à défilement en avant gèrent uniquement la méthode MoveNext. Lorsque vous parcourez chaque enregistrement (ou énumérez l'objet Recordset) à l'aide des méthodes Move, les propriétés BOF et EOF vous permettent de vérifier si vous avez dépassé le début ou la fin de l'objet Recordset.

Les objets Recordset peuvent gérer deux types de mise à jour, à savoir la mise à jour immédiate et la mise à jour par lots. Lors d'une mise à jour immédiate, toutes les modifications apportées aux données sont écrites immédiatement dans la source de données sous-jacentes lorsque vous appelez la méthode Update. Vous pouvez également passer des tableaux de valeurs en tant que paramètres à l'aide des méthodes AddNew et Update et mettre à jour plusieurs champs d'un même enregistrement simultanément.

Si un fournisseur prend en charge la mise à jour par lots, celui-ci peut mettre les modifications effectuées sur plusieurs enregistrements en antémémoire puis les transmettre en un seul appel à la base de données à l'aide de la méthode UpdateBatch. Ceci est valable pour les modifications effectuées via les méthodes AddNew, Update et Delete. Une fois la méthode UpdateBatch appelée, vous pouvez utiliser la propriété Status pour vérifier et résoudre tout conflit éventuel entre les données.

Note:

Vous pouvez exécuter une requête sans utiliser d'objet Command en passant une chaîne d'interrogation à la méthode Open d'un objet Recordset. Un objet Command est cependant nécessaire si vous voulez conserver le texte de la commande et le ré-exécuter, ou si vous utilisez des paramètres de requête.

Fournisseur OLE DB pour Microsoft Jet

Le fournisseur OLE DB pour Microsoft Jet permet à ADO d'accéder aux bases de données Microsoft Jet.

Paramètres de la chaîne de connexion

Pour vous connecter à ce fournisseur, l'argument Provider de la propriété ConnectionString doit être :

Microsoft.Jet.OLEDB.4.0

La lecture de la propriété Provider renvoie également cette chaîne. Outre les paramètres de connexion définis par ADO, le fournisseur OLE DB pour Microsoft Jet prend en charge plusieurs paramètres de connexion spécifiques au fournisseur. Comme les autres paramètres de connexion, ceux-ci peuvent être définis via la collection Properties d'objets Connection ou dans la chaîne de connexion.

Paramètre

Description

Jet OLEDB: Base de données système
Chemin d'accès et nom du fichier d'informations du groupe de travail.
Jet OLEDB: Chemin de registre
Clé de la base de registres Windows contenant les valeurs du moteur de base de données Microsoft Jet
Jet OLEDB: Mot de passe base de données
Mot de passe de la base de données.

Par défaut, le fournisseur OLE DB pour Microsoft Jet ouvre les bases de données Microsoft Jet en mode lecture/écriture. Pour ouvrir une base de données en mode lecture seule, la propriété Mode sur l'objet Connection ADO doit être adModeRead.

Utilisation de l'objet Command

Le texte de commande de l'objet Command utilise le langage de Jet SQL. Dans le texte de commande, vous pouvez spécifier des requêtes renvoyant des lignes, des requêtes d'action et des noms de tables. Toutefois, les procédures stockées ne sont pas prises en charge et ne peuvent donc pas être spécifiées.

Pour exécuter une commande :

  1. Donnez un nom à la commande en utilisant la propriété Name de l'objet Command.
  2. Affectez la propriété ActiveConnection de l'objet Command à la connexion.
  3. Puis, créez une instruction dans laquelle le nom de la commande est utilisé comme s'il s'agissait d'une méthode sur l'objet Connection, suivi de paramètres de votre choix suivis d'un objet Recordset si aucune ligne n'est renvoyée.
  4. Spécifiez les propriétés de l'objet Recordset pour personnaliser le jeu d'enregistrements donné comme résultat.

Par exemple :

Dim cnn As New ADODB.Connection Dim cmd As New ADODB.Command Dim rst As New ADODB.Recordset ... cnn.Open cmd.Name = "yourCommandName" cmd.ActiveConnection = cnn ... 'Le nom de commande que vous avez choisi, des paramètres et un objet 'Recordset (facultatif). cnn.yourCommandName "parameter", rst

Pour exécuter une procédure stockée, créez une instruction dans laquelle la procédure stockée est utilisée comme s'il s'agissait d'une méthode sur l'objet Connection, suivie de tout paramètre. ADO effectuera l'"approximation la meilleure" des types de paramètres. Par exemple :

Dim cnn As New ADODB.Connection ... 'Le nom de procédure stockée de votre choix et tout paramètre. cnn.sp_yourStoredProcedureName "parameter"

Comportement d'un objet Recordset

Le moteur de la base de données Microsoft Jet ne prend pas en charge les curseurs dynamiques. Par conséquent, le fournisseur OLE DB pour Microsoft Jet n'est pas à même de gérer le type de curseur adLockDynamic. Lorsqu'un curseur dynamique est requis, le fournisseur renvoie un curseur à jeu de clés et redéfinit la propriété CursorType pour indiquer le type d'objet Recordset renvoyé. Par ailleurs, si un objet Recordset pouvant être mis à jour est requis (LockType est adLockOptimistic, adLockBatchOptimistic ou adLockPessimistic), le fournisseur renvoie également un curseur à jeu de clés et redéfinit la propriété CursorType.