Vous êtes sur la page 1sur 65

Visual Basic pour Applications DAO - ADO

IQ2 BDD
Richard CHBEIR
: richard.chbeir@iut-dijon.u-bourgogne.fr
Bibliographie :
"VBA pour Access 2000", Edition Eyrolles, ISBN : 2-212-09100-1 "ASP 3.0 Professionnel", Edition Eyrolles, ISBN: 2-212-09151-6 "Programmation Access pour Windows 95", Edition Micro Application ISBN : 2-7429-0635-5 "Aide de Microsoft Access", F1

Plan du chapitre
Introduction Les composants Access Les mthodes d'accs aux donnes Le modle DAO Le modle ADO Quelques conseils

richard.chbeir@iut-dijon.u-bourgogne.fr

Introduction

richard.chbeir@iut-dijon.u-bourgogne.fr

Dfinition
VBA est un langage de programmation commun tous les produits Microsoft Moyen rapide de dvelopper Permet d'interagir avec l'environnement Windows
Programmation vnementielle
Souris: Dplacement, clique du bouton droit, glisser, dplacer, etc. Clavier: saisie, touche relche, etc.

Gestion des fentres Excution des commandes systmes

Capable de grer les erreurs

richard.chbeir@iut-dijon.u-bourgogne.fr

Distinction
VBA
Compltement li un des produits Microsoft office Ne pourra en aucun cas s'excuter de manire autonome. Permet de crer des applications indpendantes

VB

Access Basic

Il existe cependant une version "Run time" d'Access, nomme "Kit Office Dveloppement Environnement (Kit ODE)", qui permet de distribuer une application dveloppe sous Access sans avoir installer Access sur les postes destins faire fonctionner cette application.

Version 1 et 2 d'Access

richard.chbeir@iut-dijon.u-bourgogne.fr

Caractristiques de VBA
Syntaxe avec le code en couleur Explorateur dobjets Aide contextuelle syntaxique depuis les lignes de code Possibilit de dfinir des segments de code se compilant conditionnellement
Espions Points darrt
richard.chbeir@iut-dijon.u-bourgogne.fr

Environnement de dveloppement IDE


Dclaration Exploration Fonction Fentre Code Procdure

Proprits

richard.chbeir@iut-dijon.u-bourgogne.fr

Comment tester
Excution dune procdure Fentre dexcution

Print ou ?

richard.chbeir@iut-dijon.u-bourgogne.fr

Les composants Access

richard.chbeir@iut-dijon.u-bourgogne.fr

Composants majeurs
Access comporte deux composants :
Microsoft Jet
Contrle le stockage des donnes Dfinit les objets de la BD

Le moteur de lapplication
Contrle la programmation Contrle linterface

Comment a fonctionne ?
Quand vous ouvrez une BD, le moteur de lapplication utilise Microsoft Jet pour dterminer les noms des tables, des requtes, etc.

richard.chbeir@iut-dijon.u-bourgogne.fr

Microsoft Jet 4.0


C'est le Gestionnaire de fichiers Il possde les caractristiques suivantes :
Moteur 32 bits Support Unicode
Jeux de caractres deux octets par caractre

Types de donnes compatibles avec SQL Server SQL 92 Verrouillage amlior des donnes

richard.chbeir@iut-dijon.u-bourgogne.fr

Structure simplifie du modle Application


Application Reports Screen

DoCmd Control Debug Forms Properties

richard.chbeir@iut-dijon.u-bourgogne.fr

Le langage VBA

richard.chbeir@iut-dijon.u-bourgogne.fr

Types de donnes
Byte
entiers positifs compris entre 0 et 255,

Boolean
True et False,

Integer ou %
entiers entre -32 768 et 32 767,

Currency ou @
valeurs entre -922 337 203 685 477,5808 et 922 337 203 685 477,5807

String ou $
Entre 0 et environ 63 Ko de caractres

Long ou &
entier -2 147 483 648 et 2 147 483 647

richard.chbeir@iut-dijon.u-bourgogne.fr

Types de donnes
Decimal Single ou ! Double ou # Date
pour stocker les dates (1/01/100 31/12/9999) et les heures

Object
Tous types d'objets,

Variant (Par dfaut)


Type de donnes particulier pouvant contenir des donnes numriques, des chanes ou des dates, des types dfinis par l'utilisateur ainsi que les valeurs spciales Empty et Null

richard.chbeir@iut-dijon.u-bourgogne.fr

Dclarations
Des variables (DIM)
DIM entier as INTEGER DIM type as Variant DIM x(10, 25) as Single
REDIM x(10, 40) as INTEGER

Des constantes (CONST)


Const PI As Single = 3.14

Des structures de donnes dfinies par lutilisateur


Type Adresse
Numero as Integer NomRue as String * 30 Ville as String * 50 CodePostal as INTEGER

End TYPE .. DIM Adresse_client as Adresse

richard.chbeir@iut-dijon.u-bourgogne.fr

Dclarations
Des procdures (SUB)
Sub Attribution_Note_Aleatoire() Dim Notes As Recordset . . . End Sub

Des fonctions (function)


Function NoteAleatoire() As Single Dim ValeurAlea As Single ValeurAlea = Rnd() * 20 NoteAleatoire = Format(ValeurAlea, "0.0") End Function

richard.chbeir@iut-dijon.u-bourgogne.fr

Porte d'une variable


Private
Permet de dfinir des variables prives Une procdure prive englobe des variables prives

Public (ou Global)


Permet de dfinir des variables publiques

Static
Permet de (re)dfinir des variables dont le contenu est non modifiable

richard.chbeir@iut-dijon.u-bourgogne.fr

Oprateurs
Mathmatiques
+, -, *, /, ^

De comparaison
<, <, =, <=, >=, <>

Logiques
AND, OR, NOT, EQV

richard.chbeir@iut-dijon.u-bourgogne.fr

Branchement et boucles
Instruction IF
IF (a=5) Then Else ENDIF

Instruction IIf(condition, truepart, falsepart) Instruction GOTO


GoTO Fin .. :FIN

Instruction FORNEXT
For i=1 to 10 --Next i

Instruction While
While i<=10 --Wend

richard.chbeir@iut-dijon.u-bourgogne.fr

Branchement et boucles
Instruction DO..LOOP
Do [{While | Until} condition] [statements] Loop Vous pouvez galement utiliser la syntaxe suivante : Do [statements] Loop [{While | Until} condition]

Instruction Select Case


Select CASE valeur
Case 0 to 2 . Case 3 to 5 Case 6 Case ELSE

END SELECT

Linstruction CALL
Transfre le contrle une procdure ou une Fonction (interne ou externe) Call MyProc(0)

richard.chbeir@iut-dijon.u-bourgogne.fr

Rfrencer des objets


Plusieurs mthodes :
NomCollection![Nom de lObjet]
Ex: Forms![Clients]

NomCollection("Nom de lObjet")
Ex: Forms("Clients")

NomCollection(Numro de lObjet)
Ex: Forms(0) et Forms(Forms.Count-1)

Pour accder un sous-object ou une mthode, on utilise aussi le .


Ex: DBEngine.Workspaces(0).CurrentDB()
richard.chbeir@iut-dijon.u-bourgogne.fr

Gestion derreurs
On error Gnration d'une constante Err Resume NEXT
Le programme continue sans abandonner

ERL
Renvoie le numro de la ligne o lerreur sest produite

Err.Number
Contient le code de lerreur

Error$(Err) ou Err.Description
Donne les dtails de ERR
On Error GoTo Err_Click . Err_Click: MsgBox Err.Number & " : " & Err.Description
richard.chbeir@iut-dijon.u-bourgogne.fr

Fonctions intgres
Sur les chanes
Left (chane, taille), Right, Replace, etc.

Arithmtiques
ABS, LOG, EXP, etc.

Commandes
CHDIR, CHDRIVE, DIR, MKDIR, RMDIR, etc.

Heure/date
Date$, Now, etc.

Affichage
MSGBOX, INPUTBOX$, etc.
richard.chbeir@iut-dijon.u-bourgogne.fr

Librairies
Les librairies proposes dans trs varies Pour les intgrer dans un module: Dans l'IDE de Visual Basic
Outils/rfrences

Intgrer seulement les librairies concernes, sinon


richard.chbeir@iut-dijon.u-bourgogne.fr

Mthodes d'accs aux donnes

richard.chbeir@iut-dijon.u-bourgogne.fr

Mthodes d'accs aux donnes


Plusieurs librairies sont proposes. Mais Principalement :
DAO (Data Access Objects)
Interface permettant l'accs aux donnes qui communique avec Microsoft Jet et des sources de donnes compatibles ODBC pour se connecter , rcuprer, manipuler et mettre jour des donnes et la structure de base de donnes.

ADO (ActiveX Data Objects)


Interface d'accs aux donnes qui communique avec des sources de donnes compatibles OLE DB pour la connexion, la rcupration, la manipulation et la mise jour de donnes (Via le Web par exemple ;)

richard.chbeir@iut-dijon.u-bourgogne.fr

Le modle DAO

richard.chbeir@iut-dijon.u-bourgogne.fr

Le modle DAO
Access VBA DAO

ODBCDirect

Microsoft JET ISAM dbase

ODBC ODBC SQL Server ODBC Oracle

*.mdb

*.dbf

SQL Server 2000

Oracle

richard.chbeir@iut-dijon.u-bourgogne.fr

Caractristiques de DAO
Adapt la gestion des BD htrognes
Oracle, SQL server, Access, Sybase, Paradox, etc.

Conu pour des applications client/serveur Dpend d'un groupe international (et pas de Microsoft )

richard.chbeir@iut-dijon.u-bourgogne.fr

Structure du modle DAO


DBEngine QueryDefs Connections Recordsets Workspaces Databases Errors Groups Users Containers Documents Fields Parameters

Relations

TableDefs

Indexes

richard.chbeir@iut-dijon.u-bourgogne.fr

Accs une BD
Ouverture
OpenDataBase(Name, Exclusif, ReadOnly)

Fermeture
Close

Exemple (Dclaration de trois bases)


Sub Accs_femeture_base() ' 1- Dclaration des bases DIM MaBD1 As DataBase DIM MaBD2, MaBD3 As DataBase
. . . .

' 2- Affectation des bases Set MaBD1 = OpenDataBase("c:\temp\fichierDB1.mdb") ' base locale Set MaBD2 = OpenDataBase("\\serveur_IUT\Partage\fichierDB2.mdb", TRUE) ' base partage en mode exclusif Set MaBD3 = OpenDataBase("fichierDB3.mdb", FALSE, TRUE) ' base locale ouverte en lecture seule
. . . .

' 3- Fermer les bases MaBD1.Close MaBD2.Close MaBD3.Close End Sub richard.chbeir@iut-dijon.u-bourgogne.fr

Tables
Cration (d'une table Etudiants avec deux champs Nom et Numro)
Sub Cration_Table() '1Dim '1Dim '1Dim dclaration de la base db As database dclaration d'une variable de type Table definition_table As TableDef dclaration d'une variable de type champ champ_Nom, Champ_Num As Field

....
'2- Affectation Set db = currentDb() Set definition_table = db.CreateTableDef("Etudiant") Set champ_Nom = definition_table.CreateField("Nom", dbText, 50) Set champ_Num = definition_table.CreateField("Numro", dbInteger) definition_table.Fields.append champ_Nom definition_table.Fields.append champ_Num . . . . '3- Sauvegarder Db.TableDefs.Append definition_table End Sub richard.chbeir@iut-dijon.u-bourgogne.fr

Tables
Suppression (de la table Etudiants)
Sub Suppresion_table() '1- dclaration de la base Dim db As database '2- Affectation Set db = currentDb() ' Suppresion de la table Db.TableDefs.Delete "Etudiants" End Sub

Dclaration (d'une variable qui reprsente la table Etudiants)


Sub Attribution_table() '1- dclaration de la base Dim db As Database Dim definition_table As Recordset '2- Affectation Set db = CurrentDb() Set definition_table = db.OpenRecordset("Etudiants", dbOpenDynaset) End Sub richard.chbeir@iut-dijon.u-bourgogne.fr

Requtes
Cration (d'une requte des Clients lyonnais)
Sub cration_requete() '1- dclaration Dim db As Database Dim definition_requete As QueryDef '2- Affectation Set db = CurrentDb() Set definition_requete = db.CreateQueryDef("Clients Lyonnais", "Select * from Clients where Ville='Lyon'") End Sub

Suppression (de la requte Client lyonnais)


Sub Suppresion_requte() '1- dclaration de la base Dim db As database '2- Affectation Set db = currentDb() ' Suppresion de la requete Db.QueryDefs.Delete "Clients Lyonnais" End Sub richard.chbeir@iut-dijon.u-bourgogne.fr

Requtes
Dclaration (de la requte Clients lyonnais)
Sub Attribution_requete() '1- dclaration de la base Dim db As Database Dim requete As Recordset '2- Affectation Set db = CurrentDb() Set requete = db.OpenRecordset("Clients lyonnais", dbOpenDynaset) End Sub Sub Attribution_requete_methode2 () '1- dclaration de la base Dim db As Database Dim requete As Recordset Dim definition_requete As QueryDef '2- Affectation Set db = CurrentDb() Set definition_requete = db.QueryDefs("Clients lyonnais") Set requete = definition_requete.OpenRecordset(dbOpenDynaset) End Sub

richard.chbeir@iut-dijon.u-bourgogne.fr

Accder aux enregistrement d'une table


Plusieurs moyens, mais principalement :

RecordSet

richard.chbeir@iut-dijon.u-bourgogne.fr

RecordSet
Applicable sur les tables et les requtes Trois lments sont essentiels
La base de donnes concerne Les enregistrements dans la base Le type de RecordSet

Dclaration d'une variable


Pour reprsenter la table "Clients"
'1- dclaration des variables

Dim db As Database Dim tb_clients As Recordset


'2- Affectation

Set db = CurrentDb() Set tb_client = db.OpenRecordset("Clients", dbOpenDynaset)


richard.chbeir@iut-dijon.u-bourgogne.fr

dbOpensnapshot) DbOpentable)

RecordSet
Propose plusieurs mthodes :
De positionnement
MoveFirst | MoveNext | MoveLast | MovePrevious | Move n BOF, EOF

De recherche
FindFirst | FindLast | FindNext | FindPrevious

De manipulation
Delete Update Edit Addnew Field Requery (mise--jour)

Diverses
Bookmark RecordCount
richard.chbeir@iut-dijon.u-bourgogne.fr

RecordSet
Positionnement sur un enregistrement
Proprit Bookmark
Indique lenregistrement courant Cette proprit mise jour chaque dplacement dans le recordset

Exemple
Dim db As Database Dim tb_clients As Recordset Dim enregistrement As Variant '2- Affectation Set db = CurrentDb() Set tb_client = db.OpenRecordset("Clients", dbOpenDynaset) tb_client.FindFirst "[Code Client] = 'ANTON'" enregistrement = tb_client.Bookmark ' on se dplace dans les enregistrements donc le bookmark change ' Pour se repositionner l'enregistrement ANTON tb_client.Bookmark = enregistrement
richard.chbeir@iut-dijon.u-bourgogne.fr

RecordSet
Mthodes FindFirst | FindLast | FindNext | FindPrevious
Permet de trouver un enregistrement selon un critre donn
utilisation des oprateurs de comparaison, logique, et/ou de loprateur LIKE

Exemple
On veut savoir si on a des clients dont le code commence par A
'1- dclaration des variables Dim db As Database Dim tb_clients As Recordset '2- Affectation Set db = CurrentDb() Set tb_client = db.OpenRecordset("Clients", dbOpenDynaset) '3- Rerchercher les clients dont le code commence par A tb_client.FindFirst "[Code Client] LIKE 'A*'" '4- Affichage d'un message quand l'enregistrement est trouv If Not tb_client.NoMatch Then MsgBox "trouv" End If
richard.chbeir@iut-dijon.u-bourgogne.fr

Comment accder un champ ?


En utilisant
Fields :
stocke les diffrents champs d un enregistrement. Chaque champ est reprsent par un objet instance de la classe Field Le nombre de Fields est dtermin par la mthode Count Remarque : la classe field permet de reprsenter un champ. On y trouve principalement les proprits name et value qui renvoie respectivement le nom et la valeur du champ.

Exemple
Dim rs As Recordset rs.Fields("nom_produit") rs ("nom_produit") rs.[nom_produit] rs![nom_produit] rs.Fields(1) rs(1) 'valeur 'valeur 'valeur 'valeur 'valeur 'valeur du du du du du du champ nom_produit champ nom_produit champ nom_produit champ nom_produit premier champ premier champ

richard.chbeir@iut-dijon.u-bourgogne.fr

Question 1
Comment afficher la liste des champs de la table "Etudiants" ainsi que le contenu de chaque champ ?
Sub afficher_contenu_table_clients() Dim db As Database Dim tb_clients As Recordset Set db = CurrentDb() Set tb_client = db.OpenRecordset("Clients", dbOpenDynaset) For i = 0 To tb_client.Fields.Count - 1 Debug.Print tb_client.Fields(i).Name Next i While Not tb_client.EOF For i = 0 To tb_client.Fields.Count - 1 Debug.Print tb_client.Fields(i).Value Next i tb_client.MoveNext Wend End Sub
richard.chbeir@iut-dijon.u-bourgogne.fr

Ajout d'un enregistrement


Elle se fait en respectant les tapes suivantes :
1. 2.

Utiliser la mthode AddNew du Recordset pour crer un nouvel enregistrement vide et sy positionner Donner une valeur aux champs (Fields) du Recordset
On peut galement passer ces valeurs comme paramtres de la mthode AddNew

3.

Utiliser la mthode Update du Recordset pour enregistrer le nouvel enregistrement dans la base
On peut utiliser la mthode CancelUpdate pour annuler la cration

richard.chbeir@iut-dijon.u-bourgogne.fr

RecordSet
Exemple d'ajout
On veut ajouter le client IQ2 ayant le code 'IUTIQ'
Dim db As Database Dim tb_clients As Recordset Set db = CurrentDb() Set tb_client = db.OpenRecordset("Clients", dbOpenDynaset) '1- Demander la cration Tb_client.AddNew '2- Fournir les valeurs des champs Tb_client.[Code Client] = "IUTIQ" Tb_client![Nom] = "IQ2" '3- Enregistrer les donnes Tb_client.Update

richard.chbeir@iut-dijon.u-bourgogne.fr

RecordSet
Modification d enregistrements
1. 2. 3. 4.

Se positionner sur l enregistrement modifier Utiliser la mthode Edit Modifier la valeur des champs Utiliser la mthode update

Exemple
On veut changer le nom du client dont le code est 'ANTON'
Dim db As Database Dim tb_clients As Recordset Set db = CurrentDb() Set tb_client = db.OpenRecordset("Clients", dbOpenDynaset) tb_client.FindFirst "[Code Client] = 'ANTON'" ' On aurait pu faire directement 'Set tb_client = db.OpenRecordset("Select * from Clients where [Code client] = 'ANTON'") If Not tb_client.NoMatch Then 'If (tb_client.RecordCount != 0) Then MsgBox "trouv" tb_client.Edit tb_client.[Nom] = "Richard CHBEIR" tb_client.Update End If richard.chbeir@iut-dijon.u-bourgogne.fr

RecordSet
Suppression d enregistrements
Se positionner sur l enregistrement supprimer 2. Utiliser la mthode delete Remarque : l enregistrement courant n est plus valide pensez donc le dplacer (avec MoveNext ou autres)
1.

Exemple
Supprimer le client dont le Code est ANTON
Dim db As Database Dim tb_clients As Recordset Set db = CurrentDb() Set tb_client = db.OpenRecordset("Clients", dbOpenDynaset) tb_client.FindFirst "[Code Client] = 'ANTON'" ' On aurait pu faire directement 'Set tb_client = db.OpenRecordset("Select * from Clients where [Code client] = 'ANTON'") tb_client.delete tb_client.MoveNext

richard.chbeir@iut-dijon.u-bourgogne.fr

RecordSet
Tri de donnes
1. 2. 3.

Ouvrir la table ou la requte avec RecordSet Utiliser la mthode Sort Copier le rsultat dans une autre RecordSet

Exemple
Trier les clients par ordre dcroissant
Dim db As Database Dim enregistrement, enregistrement_trie As Recordset Set db = CurrentDb() Set enregistrement = db.OpenRecordset("select * FROM Clients") ' ou Set enregistrement = db.OpenRecordset("Clients", dbOpenDynaset) ' Attention ' Set enregistrement = db.OpenRecordset("Clients") ne marche pas enregistrement.Sort = "Nom DESC" Set enregistrement_trie = enregistrement.OpenRecordset(dbOpenDynaset)

richard.chbeir@iut-dijon.u-bourgogne.fr

Filtre de donnes
Filtre de donnes
1. 2. 3.

Ouvrir la table ou la requte avec RecordSet Utiliser la mthode Filtre Copier le rsultat dans une autre RecordSet

Exemple
Trouver les clients dont le nom est IQ2 ou le code postal commence par 21
Dim db As Database Dim enregistrement, enregistrement_filtre As Recordset Set db = CurrentDb() Set enregistrement = db.OpenRecordset("Clients") , dbOpenDynaset) enregistrement.Filter = "[Nom] = 'IQ2' Or [Code Postal] like '21*'" Set enregistrement_filtre = enregistrement.OpenRecordset(dbOpenDynaset)

richard.chbeir@iut-dijon.u-bourgogne.fr

Le modle ADO

richard.chbeir@iut-dijon.u-bourgogne.fr

Le modle ADO
co OL mm E ate DB u rs

VC++

Access

VBA/VB

ASP

Java

Co n

ADO

Fo u O rnis LE se DB urs

Jet OLE

MSIDXS

Object ADSDSO

SQLOLEDB

MSDASQL

ODBC

Pilote ODBC SQL Server Index Server SQL Server 2000

*.mdb

Annuaire

richard.chbeir@iut-dijon.u-bourgogne.fr

Fournisseurs OLE DB
Jet OLE DB 4.0
Pour les BD Access

SQL Server Oracle ODBC Drivers


Pour les sources de donnes ODBC

OLAP Services
Pour le serveur OLAP Microsoft (Exchange Server)

Simple Provider
Pour les fichiers de texte simples

Microsoft Directory Services


Pour Active Directory sous Windows 2000

Internet Publishing
Pour l'accs aux serveurs Web

DTS packages
Pour les services de conversion de donnes SQL server

richard.chbeir@iut-dijon.u-bourgogne.fr

Caractristiques de OLE DB et ADO


Adapts la gestion de toute source de donnes
BD, systmes de messagerie, service d'annuaires, serveurs Web, etc.

Conus pour des applications orientes Internet


Jeux d'enregistrements dconnects, meilleure gestion des utilisateurs, etc.

Dpend compltement de Microsoft

richard.chbeir@iut-dijon.u-bourgogne.fr

Structure simplifie
Excuter
Connection RecordSet

Source
Command

Connexion Active
Error Field

Excuter

Parameter

richard.chbeir@iut-dijon.u-bourgogne.fr

Instanciation des classes


Syntaxe
Dim nom_variable As [New] ADODB.nom_classe

Exemple
Dim cn As New ADODB.Connection Dim cmd As New ADODB.Command Dim rst As New ADODB.Recordset

richard.chbeir@iut-dijon.u-bourgogne.fr

La classe Connection
Permet la connexion une source de donnes. Un objet de cette classe identifie une et une seule connexion une source de donnes Permet l'excution de commandes
Requte de mise jour, d'insertion, de suppression, etc.

richard.chbeir@iut-dijon.u-bourgogne.fr

Les mthodes Connection


Open
Ouvre une connexion une source de donnes
Dim cn As New ADODB.Connection cn.open "Provider=Microsoft.Jet.OLEDB.4.0; Data source = c:\temp\Ma_Base.mdb"

Execute
Excute une requte et rcupre le rsultat dans un RecordSet
Dim rs1, rs2 As New ADODB.Recordset Set rs1 = cn.execute("select [nom Client] from Clients") cn.Execute("insert into ma_table values (5, abc, )")

Close

Ferme une connexion


cn.close Set cn = nothing
richard.chbeir@iut-dijon.u-bourgogne.fr

La classe Command
Permet d'excuter des commandes sur une source de donnes (des instructions SQL)
Souvent avec des paramtres

richard.chbeir@iut-dijon.u-bourgogne.fr

La classe Command
Proprits
.CommandText : stocke le texte de la commande
Ex : objet_cmd.CommandText
= "select * from Clients"

.ActiveConnection : permet de choisir la connexion (donc la base) sur laquelle sexcutera la commande
Ex : set objet_cmd.ActiveConnection = cn

richard.chbeir@iut-dijon.u-bourgogne.fr

La classe Command
Mthode
Execute : permet d excuter la commande
Sans paramtre (stocke dans la proprit CommandText) Ex : objet_command.Execute Avec paramtre Ex : objet_command.Execute("select
produits")

* from

richard.chbeir@iut-dijon.u-bourgogne.fr

La classe Command
Exemple
Dim cn As New ADODB.Connection cn.open "DSN=Base_Clients" ' Cela signifie qu'une source de donnes nomme Base_Client existe dj dans ODBC Dim cmd As New ADODB.Command cmd.CommandText = "select * from Clients" Set cmd.ActiveConnection = cn Dim rs As New ADODB.recordset Set rs = cmd.Execute

richard.chbeir@iut-dijon.u-bourgogne.fr

La classe Recordset
Permet de contenir l'ensemble des donnes extraites des sources
Stocke le rsultat de lexcution dune commande sous forme dun ensemble de lignes Seule la ligne courante est visible (Notion de curseur)

richard.chbeir@iut-dijon.u-bourgogne.fr

La classe Recordset
Trois possibilits d'instanciation via la mthode
Execute de Connection
Dim rs As New ADODB.recordset set rs = de cn.execute ("select [nom Client] from Clients") Execute Command

Dim cmd As New ADODB.Command cmd.CommandText = "select * from Produits" set cmd.ActiveConnection = cn Dim rs As New ADODB.recordset set = cmd.Execute Open ders Recordset

Dim rs As New ADODB.recordset rs.open "select * from Clients", "Base_Clients"


richard.chbeir@iut-dijon.u-bourgogne.fr

Cration dun Recordset Syntaxe gnrale de la mthode open


objet_recordset.open une_instruction connection_active lock_type

requte sql, nom dune table,

une chane contenant le DSN ou une rfrence un objet de la classe connection

Une constante qui prend une des valeurs suivantes :


adLockReadOnly les donnes ne peuvent pas tre modifies adLockPessimisticles enregistrements sont verrouills ds le dbut adLockOptimistic les enregistrements ne sont verrouills quau moment de lappel de la mthode update

richard.chbeir@iut-dijon.u-bourgogne.fr

Conseils
Optimiser votre application
Rduire la consommation de mmoire
Utilisez le bon type de donnes Regroupez les procdures dans les modules Ne chargez pas les bibliothques inutiles

Augmenter la vitesse d'excution


Rduire les portions code Utilisez les constantes

Accrotre la vitesse perue


Pr-charger et masquer des formulaires Stocker localement les donnes dans un cache

Compacter la base Commentez votre code

richard.chbeir@iut-dijon.u-bourgogne.fr

Vous aimerez peut-être aussi