VBA et ADO 01/03/08 1



Documents pareils
Excel et les bases de données

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

FileMaker 13. Guide ODBC et JDBC

LES ACCES ODBC AVEC LE SYSTEME SAS

Introduction à JDBC. Accès aux bases de données en Java

INSTALLATION DE L APPLICATION DU CONTEXTE ITASTE

Paginer les données côté serveur, mettre en cache côté client

Gestion de stock pour un magasin

2 Serveurs OLAP et introduction au Data Mining

Java et les bases de données

Connexion à une base de données. Connexion à une base de données. Connexion à une base de données Développement d'une application

Visual Basic et les Bases de Données

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

Microsoft OSQL OSQL ou l'outil de base pour gérer SQL Server

Notes de cours : bases de données distribuées et repliquées

Architectures web/bases de données

Compte-rendu de projet de Système de gestion de base de données

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Java DataBaseConnectivity

Service Systèmes et Réseaux

Comment Créer une Base de Données Ab Initio

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Logiciel Enterprise Guide Version 1.3 Windows

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Accès aux bases de données

Module BD et sites WEB

Cadastre du bruit SIT-JURA. Connecteur Arcview9.x - MSAccess. Mode d emploi. Appel formulaire. Page 1 sur 15

PDO : PHP Data Object 1/13

Mysql. Les requêtes préparées Prepared statements

.NET - Classe de Log

Manuel du logiciel PrestaTest.

Bases de SQL. Hacks 1-6 CHAPITRE UN

Phone Manager Soutien de l'application OCTOBER 2014 DOCUMENT RELEASE 4.1 SOUTIEN DE L'APPLICATION

OpenPaaS Le réseau social d'entreprise

PHP 4 PARTIE : BASE DE DONNEES

WDpStats Procédure d installation

Le langage SQL (première partie) c Olivier Caron

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

SQL MAP. Etude d un logiciel SQL Injection

MS SQL Express 2005 Sauvegarde des données

Le Système SAS et les accès via OLE DB : une introduction

1/ Présentation de SQL Server :

CREATION WEB DYNAMIQUE

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Whitepaper. Méthodologie de création de rapports personnalisés SQL Server Reporting Services

Test de HSQLDB et Comparatif avec Sqlite

Cours Bases de données 2ème année IUT

INTRODUCTION AUX TESTS DE PERFORMANCE ET DE CHARGE

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Les Utilisateurs dans SharePoint

SQL Server et Active Directory

Connexion à SQL server

Corrigé de l'atelier pratique du module 6 : Transfert de données

Corrigé de l'atelier pratique du module 5 : Analyse de SQL Server

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

Devoir Data WareHouse

BIND : installer un serveur DNS

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

MEDIAplus elearning. version 6.6

Configurer la supervision pour une base MS SQL Server Viadéis Services

FileMaker 10. Guide ODBC et JDBC

contact@nqicorp.com - Web :

Mise en route et support Envision 10 SQL server (Avril 2015) A l'intention de l'administrateur SQL Server et de l administrateur Envision

Connaître la version de SharePoint installée

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Les bases de données

Le service FTP. M.BOUABID, Page 1 sur 5

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Bases de données Page 1 de 11. Bases de données. Prof. : Dzenan Ridjanovic

Formation VBA 3 Interagir

Kit ODBC 100. Version Référence

Initiation aux bases de données (SGBD) Walter RUDAMETKIN

Quick Start Guide This guide is intended to get you started with Rational ClearCase or Rational ClearCase MultiSite.

OpenOffice.org et les bases de données.

Comment Utiliser les Versions, les Modification, les Comparaisons, Dans les Documents

Gestion des utilisateurs et de leurs droits

Cours Bases de données 2ème année IUT

Attaques applicatives

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

PHP. PHP et bases de données

Bernard HAMM, Évelyne LAVOISIER

Mysql avec EasyPhp. 1 er mars 2006

Sql Server 2005 Reporting Services

Transcription:

VBA et ADO 01/03/08 1

Un tour rapide d'ado: ADO (ActiveX Data Object) est un composant ActiveX permettant d'accéder aux bases de données de façon beaucoup plus facile sans se soucier de tout ce qui est allocation des environnements de travail. ADO fournit des objets qui permettent de se connecter à une base et de réaliser des requêtes SQL sur cette base. 1.1 - Active Data Objects (ADO). 01/03/08 2

01/03/08 3

Les "data providers" sont des composants qui représente les sources de données comme les bases de données SQL, les fichiers séquentiel indexés, et les données issues d un tableur. Les "providers" expose les informations à OLE DB de manière uniforme en utilisant une abstraction commune appelée rowset. Les Services sont des composants qui exploite et produisent les données OLE DB. Un "cursor engine " est un composant "service" qui peut exploiter les données d un fichier séquentiel, pour produire une source de données "scrollable". Un "relational query engine" est un exemple de service qui surcharge les données OLE DB et qui produit des rowsets qui satisfont à une condition particulière. Les Consumers sont des composants qui exploite les données OLE DB, par exemples des services tels que les "query processor". 01/03/08 4

ADO (Schéma applicatif) Application Microsoft Ou Editeur Tiers ADO OLE DB Pilotes OLEDB MSDACSQL ODBC Source De donnée s 01/03/08

Installation des composants ADO est fourni avec la couche MDAC. Installée automatiquement avec les différentes mises à jour des systèmes d exploitation, elle est disponible à l adresse http://microsoft.com/data. Depuis la version 2.6 de MDAC, les composants pour MS Jet (ODBC et OLEDB) ne sont plus compris dans cette distribution et doivent être mis à jour séparément. 01/03/08

Ado Avantages Accès Universel aux données (UDA) Adapté pour les applications n-tiers Mise à jour par le système d exploitation Gestion des curseurs et des verrous Choix possible du protocole de communication Rapide avec les pilotes OLEDB Multi langages Proche de DbExpress, Jdbc et Ado.NET Support du mode déconnecté Mode asynchrone Inconvénients Connaissances approfondies du modèle pour une utilisation optimale Pilote OLEDB développé par l éditeur du SGBD, une société tierce (payant) ou pas du tout (rare) SGBD idéal fourni par Microsoft (Jet, SQL Server) 01/03/08

Modèle d objets ADO Objet Connection Command Parameter Recordset Field Error Property Record* Stream* Description Permet d établir les connexions entre le client et la source de données. Permet de réaliser des commandes, telles que requêtes SQL. Représente un paramètre d'une instruction SQL. Permet de voir et de manipuler les résultats d une requête. Représente une colonne d'un objet Recordset ou Record. Représente une erreur ADO accédée au travers de l objet Connection. Représente une des caractéristiques d'un objet ADO. Représente un répertoire ou un fichier. Représente le contenu d'un fichier ou d un flux. * Présent à partir de Mdac 2.5 01/03/08

Providers livrés avec Mdac * Les pilotes Jet (OLEDB et ODBC) ne sont plus diffusés par la couche MDAC mais à l aide d un Service Pack pour Jet. 01/03/08

Pour pouvoir utiliser ADO dans un projet Visual Basic ou Access vous avez deux solutions pour y parvenir : La première est de créer un Projet de données. La seconde est de rajouter dans le menu Projets - Références, Microsoft AtiveX Data Objects 2.x Library. ADO propose les objets suivants : Command : permet d'exécuter des requêtes Connection : connexion à une source de données (aussi bien un fichier texte, qu'un fichier Excel, ou une base de données) Error : ensemble des erreurs retournées par le SGBD Parameter : permet de définir un paramètre d'une requête Recordset : jeu d'enregistrements retournés lors de l'exécution d'un SELECT 01/03/08 10

Une connexion à une base de données se définit par : l'hôte sur lequel se trouve la base de données le nom de la base de données le nom de l'utilisateur le mot de passe L'ensemble de ces champs est appelé chaîne de connexion. Les champs "hôte" et "nom de la base de données" peuvent soit être définis dans le programme soit dans un DSN (Data Source Name). Un DSN se configure dans le panneau de configuration avec l'outil Source de données(odbc). Comment réaliser une connexion? Tout d'abord il faut déclarer la variable associée à la connexion. Dim cnx As New ADODB.Connection ou alors Dim cnx As ADODB.Connection Set cnx = New ADODB.Connection 01/03/08 11

Syntax objrecordset.open source,actconn,cursortype,locktype,opt Parameter source actconn cursortype Description Optional. Specifies a data source. The source parameter may be one of the following: A URL A relative/full file path name A Command object An SQL statement A stored procedure A table name Optional. A connection string or a Connection object Optional. A CursorTypeEnum value that specifies the type of cursor to use when opening a Recordset object. Default is adopenforwardonly locktyp Optional. A LockTypeEnum value that specifies the type of locking on a Recordset object. Default is adlockreadonly opt Optional. Specifies how to evaluate the source parameter if it is not a Command object. Can be one or more CommandTypeEnum or ExecuteOptionEnum values. 01/03/08

CursorType (type curseur) Indique le type de curseur utilisé avec un objet Recordset. Constante Valeur Description ctforwardonly 0 Valeur par défaut. Utilise un curseur à défilement en avant. Identique à un curseur statique mais ne permettant que de faire défiler les enregistrements vers l'avant. Ceci accroît les performances lorsque vous ne devez effectuer qu'un seul passage dans un Recordset.

Curseur en avant seulement R eprésentation du Curseur Lignes plus disponibles A DO O L EDB P rovider Donné e s Base de données Lignes en cours de rapatriement v ers le cache ADO Lignes non encore r a patriées

CursorType (type curseur) Indique le type de curseur utilisé avec un objet Recordset. Constante Valeur Description ctforwardonly 0 Valeur par défaut. Utilise un curseur à défilement en avant. Identique à un curseur statique mais ne permettant que de faire défiler les enregistrements vers l'avant. Ceci accroît les performances lorsque vous ne devez effectuer qu'un seul passage dans un Recordset. ctstatic 3 Utilise un curseur statique. Copie statique d'un jeu d'enregistrements qui permet de trouver des données ou de générer des états. Les ajouts, modifications ou suppressions effectués par d'autres utilisateurs ne sont pas visibles.

Curseur Statique Représentation du Curseur ADO OLEDB Provider Donné e s Base de données Lignes en cours de rapatriement vers le cache ADO

CursorType (type curseur) Indique le type de curseur utilisé avec un objet Recordset. Constante Valeur Description ctforwardonly 0 Valeur par défaut. Utilise un curseur à défilement en avant. Identique à un curseur statique mais ne permettant que de faire défiler les enregistrements vers l'avant. Ceci accroît les performances lorsque vous ne devez effectuer qu'un seul passage dans un Recordset. ctstatic 3 Utilise un curseur statique. Copie statique d'un jeu d'enregistrements qui permet de trouver des données ou de générer des états. Les ajouts, modifications ou suppressions effectués par d'autres utilisateurs ne sont pas visibles. ctkeyset 1 Utilise un curseur à jeu de clés. Identique à un curseur dynamique mais ne permettant pas de voir les enregistrements ajoutés par d'autres utilisateurs (les enregistrements supprimés par d'autres utilisateurs ne sont pas accessibles à partir de votre Recordset). Les modifications de données effectuées par d'autres utilisateurs demeurent visibles.

Curseur basé sur un jeu de clés Représentation du Curseur Valeur des clés ADO OLEDB Provider D o n n é e s Base de données Lignes en cours de rapatriement vers le cache ADO

CursorType (type curseur) suite Constante Valeur Description ctdynamic 2 Utilise un curseur dynamique. Les ajouts, modifications et suppressions effectués par d'autres utilisateurs sont visibles et tous les déplacements sont possibles dans le Recordset à l'exception des signets, s'ils ne sont pas pris en charge par le fournisseur.

Curseur dynamique Représentation du Curseur Valeur des clés générées à chaque accès aux données ADO OLEDB Provider D o n n é e s Base de données Lignes en cours de rapatriement vers le cache ADO

LockType (type verrouillage) Indique le type de verrou apposé sur les enregistrements en cours d'édition. Constante Valeur Description ltreadonly 1 Valeur par défaut. Enregistrements en lecture seule. Vous ne pouvez pas modifier les données. ltpessimistic 2 Verrouillage pessimiste, un enregistrement à la fois. Le fournisseur assure une modification correcte des enregistrements, et les verrouille généralement dans la source de données dès l'édition. ltoptimistic 3 Verrouillage optimiste, un enregistrement à la fois. Le fournisseur utilise le verrouillage optimiste et ne verrouille les enregistrements qu'à l'appel de la méthode Update. ltbatchoptimistic 4 Mise à jour par lot optimiste. Obligatoire en mode de mise à jour par lots. ltunspecified -1 Aucun type de verrou n'est spécifié. Le clone adopte le type de verrouillage de l'original

2.1 Connexion à une base de données Access sans DSN: 'Déclaration de la variable de connexion Dim cnx As ADODB.Connection Set cnx = New ADODB.Connection 'Définition du pilote de connexion cnx.provider = "Microsoft.Jet.Oledb.3.51" 'Définition de la chaîne de connexion cnx.connectionstring = "C:\maBase.mdb" 'Ouverture de la base de données cnx.open Le pilote 3.51 permet d'accéder à Access 95 et 97. Pour Access 2000, il faut utiliser la version 4.0. 01/03/08 22

2.2 Connexion à une base de données SQL Server sans DSN: 'Déclaration de la variable de connexion Dim cnx As ADODB.Connection Set cnx = New ADODB.Connection... 'Définition de la chaîne de connexion cnx.connectionstring = "UID=" & NomUtilisateur &";PWD=" & MotDePasse & ";" & "DRIVER={SQL Server};Server=" & NomServeur & ";Database=" & NomBaseDeDonnées & ";" 'Ouverture de la base de données cnx.open Comme vous avez pû le constater, il n'y a pas la ligne cnx.provider. En effet dans cet exemple le pilote à utiliser est décrit dans la chaîne de connexion :DRIVER={SQLServer}. 01/03/08 23

2.3 Connexion à une base de données Oracle sans DSN: 'Déclaration de la variable de connexion Dim cnx As ADODB.Connection Set cnx = New ADODB.Connection... 'Définition de la chaîne de connexion cnx.connectionstring = "UID=" + NomUtilisateur & ";PWD=" & MotDePasse & ";" & "DRIVER=msdaora;Server=" & NomServeur & ";Database=" & NomBaseDeDonnées & ";" 'Ouverture de la base de données cnx.open 01/03/08 24

2.5 Quelques informations supplémentaires sur les pilotes: Liste des pilotes ODBC sans DSN dbase Driver={Microsoft dbase Driver (*.dbf)};driverid=277;dbq=chemin\nombd.dbf; MS Access Driver={Microsoft Access Driver (*.mdb)};dbq=chemin\nombd.mdb;uid=nomutilisateur;pwd=motdepasse; MS SQL Server Driver={SQL Server};Server=NomDuServeur;Database=nombd;Uid=NomUtilisateur;Pwd=MotDePasse; MS Text Drive Driver={Microsoft Text Driver (*.txt; *.csv)};dbq=chemin\;extensions=asc,csv,tab,txt;persist Security Info=False; MySQL Driver={mysql}; database=nombd;server=nomduserveur;uid=nomutilisateur;pwd=motdepasse;option=16386; Oracle Driver={Microsoft ODBC for Oracle};Server=ServeurOracle.schema;Uid=NomUtilisateur;Pwd=MotDePasse; Visual Foxpro Driver={Microsoft Visual FoxPro Driver};SourceType=DBC;SourceDB=chemin\nombd.dbc;Exclusive=No; Liste des pilotes OLEDB MS Access Provider=Microsoft.Jet.OLEDB.4.0;Data Source=chemin\nombd.mdb;User Id=NomUtilisateur;Password=MotDePasse; MS SQL Server Provider=SQLOLEDB;Data Source=NomServeur;Initial Catalog=nombd;User ID=NomUtilisateur;Password=MotDePasse; MS SQL Server avec une adresse IP Provider=SQLOLEDB; Data Source=xx.xx.xx.xx,1433; Network Library=DBMSSOCN; Initial Catalog=dbname;User ID=NomUtilisateur;Password=MotDePasse; MS Text Driver "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=chemin;Extended Properties='text;FMT=Delimited'" Oracle Provider=OraOLEDB.Oracle;Data Source=nombd;User Id=NomUtilisateur;Password=MotDePasse; 01/03/08 25

2.4 Connexion à une base de données avec un DSN: 'Déclaration de la variable de connexion Dim cnx As ADODB.Connection Set cnx = New ADODB.Connection... 'Définition de la chaîne de connexion cnx.connectionstring = "DSN=" & NomDuDSN & ";UID=" & NomUtilisateur & ";PWD=" & MotDePasse & ";" 'Ouverture de la base de données cnx.open 01/03/08 26

3. Réaliser des requêtes avec l'objet Recordset Comme pour l'objet Connection vous devez commencer par déclarer une variable de type Recordset. Dim rst As New ADODB.Recordset ou alors Dim rst As ADODB.Recordset Set rst = New ADODB.Recordset 01/03/08 27

Une fois ces lignes de code tapées, vous pouvez exécuter votre requête. Pour cela vous devez utiliser la méthode Open de l'objet Recordset. Cette méthode prend en paramètre : la requête la connexion sur laquelle vous souhaitez exécuter la requête le type du curseur (je vous renvoie à des cours de SGBD) le type de blocage le type de requête L'ensemble de ces champs sont facultatifs, mais je vous conseille d'au moins passer les deux premiers paramètres à la méthode. Celà rend le code plus clair. 'Déclaration des variables Dim cnx As ADODB.Connection Dim rst As ADODB.Recordset 'Instanciation des variables Set cnx = New ADODB.Connection Set rst = New ADODB.Recordset 'Connexion à la base de données cnx.connectionstring = "Provider=" & PiloteDaccesAlaBaseDeDonnées & ";DSN=" & NomDuDSN & ";UID=" & NomUtilisateur & ";PWD=" & MotDePasse & ";" cnx.open 'Exécution de la requête rst.open "SELECT nom, prenom, adresse FROM Client", cnx Une fois le Open exécuté, l'ensemble des enregistrements retournés par le SELECT se trouvent dans l'objet Recordset, ici rst. 01/03/08 28

Pour accéder à ces enregistrements vous devez utiliser le champ Field. Chaque champ Field contient une colonne. Vous faites rst.fields(1) ou bien rst.fields("prenom"), rst(1) ou bien rst("prenom"). Accèder à un champ c'est bien, mais pouvoir naviguer dans l'ensemble des enregistrements c'est mieux. Pour celà, il existent des méthodes permettant de le faire : MoveFirst : sélectionne le premier enregistrement MoveLast : sélectionne le dernier enregistrement MoveNext : sélectionne l'enregistrement suivant MovePrevious : sélectionne l'enregistrement précédent Il y a deux propriétés de l'objet Recordset à connaître pour la navigation qui sont: BOF (Begin Of File) : est à vrai si l'objet Recordset pointe sur le début d'enregistrement EOF (End Of File) : est à vrai si l'objet Recorset pointe sur la fin de l'enregistrement Voici un exemple de boucle permettant de parcourir un jeu d'enregistrement et d'afficher le résultat : While Not(rst.EOF) MsgBox rst("nom") & " " & rst("prenom") & " habite au " & rst("adresse") & "." rst.movenext Wend 01/03/08 29

Il arrive que certaines fois, il y est un problème avec l'objet Recordset et il ne pointe pas au début de l'enregistrement. Donc pour remédier à ce problème vous pouvez tappez les lignes suivantes après avoir effectué le Open. rst.movelast rst.movefirst Une fois que vous n'utilisez plus le Recordset, pensez à le fermer avec la méthode Close. rst.close Il existe une autre propriété qui peut être intéressante qui est RecordCount. Elle vous permet de savoir le nombre d'enregistrements stockés dans l'objet Recordset. 01/03/08 30

Voici un petit exemple de fonction pouvant exécuter tout type de requêtes via un Recordset : '======================================================' ' FUNCTION : ExecSQL(...) ' DESCRIPTION : Execute une requête SQL ' PARAMS : * query : Requête à exécuter ' * rst : Variable permettant de stocker les enregistrements '======================================================' Public Function ExecSQL(query As String, ByRef rst As ADODB.Recordset, ByRef cnx As ADODB.Connection) As Boolean 'Initialisation du RecordSet If rst.state <> adstateclosed Then rst.close 'Ouvre une transaction pour ne pas à avoir à réaliser de commit en fin de traitement ADOCnx.BeginTrans 'Positionne le curseur côté client rst.cursorlocation = aduseclient 'Vérifie que la connexion passée est bonne Set rst.activeconnection = cnx On Error GoTo ErrHandle 'Exécute la requête rst.open query, ADOCnx 'Valide la transaction ADOCnx.CommitTrans ExecSQL = True Exit Function ErrHandle: ExecSQL = False MsgBox "ADOManager.ExecSQL:ErrHandle" & vbcr & vbcr & err.description, vbcritical End Function 01/03/08 31

4. Réaliser des requêtes avec l'objet Command Comme pour les autres objets, vous devez commencer par déclarer une variable de type Command. Dim rst As New ADODB.Command ou alors Dim rst As ADODB.Command Set rst = New ADODB.Command L'objet Command est un peu plus complexe que le Recordset quoique. L'avantage de l'objet Command par rapport à l'objet Recordset est de pouvoir facilement paramétrer les requêtes mêmes les SELECT. Pour pouvoir utiliser des requêtes paramétrables il faut utiliser le symbôle? dans la requête SQL puis rajouter un objet Parameter à l'objet Command. 01/03/08 32

'Déclaration des variables Dim cnx As ADODB.Connection Dim cmd As ADODB.Command Dim prm1 As ADODB.Parameter Dim rst As ADODB.Recordset 'Instanciation des variables Set cnx = New ADODB.Connection Set cmd = New ADODB.Command Set prm1 = New ADODB.Parameter Set rst = New ADODB.Recordset 'Connexion à la base de données cnx.connectionstring = "Provider=" & PiloteDaccesAlaBaseDeDonnées & ";DSN=" & NomDuDSN & ";UID=" & NomUtilisateur & ";PWD=" & MotDePasse & ";" cnx.open 'Préparation de l'objet Command cmd.commandtext = "SELECT * FROM Client WHERE nom =?" 'Préparation du paramètre prm1.name = "nom" 'Nom du champ correspondant prm.type = advarchar 'Type du champ prm.direction = adinput 'Type de paramètre : Entrée, Sortie, Entrée/Sortie prm.size = 40 'Taille maximale du champ prm.value = "Dupond" 'Valeur du paramètre 'Exécution de la requête Set rst = cmd.execute 01/03/08 33

Comme vous avez pû le remarquer, j'ai utilisé un Recordset dans cet exemple. Voici une façon de récupérer les enregistrements retournés par un SELECT. L'objet Recordset n'est nécessaire que dans le cas d'un SELECT. Dans les autres cas vous pouvez taper justecmd.execute. La méthode Execute de l'objet Command peut prendre trois paramètres qui sont falcutatifs: le premier est le nombre d'enregistrements affectés par la requête. Il est de type Long le deuxième est un tableau de Variant contenant les paramètres de la requête SQL le troisème indique le type de valeur que le fournisseur doit attribuer à la propriété CommandText La propriété CommandText contient la requête à exécuter. Ca peut être une requête standard comme une requête de modification de l'architecture d'une table ou de la base de données. 01/03/08 34

2 propriétés bien utiles.eof et.bof Leur type : booléen. Attention prennent la valeur Vrai si le pointeur d enregistrement est positionné après le dernier enregistrement, ou avant le premier enregistrement, et non pas sur le premier ou le dernier. 01/03/08

Mise à jour de la base On utilise la méthode.update Ce n'est qu'après son exécution que la mise à jour est reportée (qu'il s'agisse d'une modification de valeurs de champs, d'ajout ou de suppression d'enregistrements) Pour ces deux derniers cas, utiliser (avant ) les méthodes.addnew et.delete

Remarque : AddNew crée un nouvel enregistrement qui devient l'enregistrement courant. Si on avait commencé une modification, ADO lance Update avant l'ajout. Delete et Update ne modifient pas l'enregistrement en cours.

Déconnexion On utilise la méthode.close Après le contenu du Recordset n'est plus disponible. Attention : on ne peut pas rouvrir la requête avant de l'avoir fermée. Pour savoir si le Recordset est ouvert, utiliser la propriété.state, et la comparer à l'une des deux constantes adstateopen ou adstateclose.