vba

65
Visual Visual Basic pour Applications Basic pour Applications DAO DAO - - ADO ADO IQ2 – BDD © Richard CHBEIR : [email protected] 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

Upload: ahouba

Post on 15-Sep-2015

10 views

Category:

Documents


5 download

DESCRIPTION

Apprendre le vba

TRANSCRIPT

  • VisualVisual Basic pour Applications Basic pour Applications DAO DAO -- ADOADO

    IQ2 BDD Richard CHBEIR

    : [email protected]

    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

  • [email protected]

    Plan du chapitrePlan du chapitreIntroductionLes composants AccessLes mthodes d'accs aux donnesLe modle DAOLe modle ADOQuelques conseils

  • [email protected]

    IntroductionIntroduction

  • [email protected]

    DDfinitionfinitionVBA est un langage de programmation commun tous les produits MicrosoftMoyen rapide de dvelopperPermet d'interagir avec l'environnement Windows

    Programmation vnementielleSouris: Dplacement, clique du bouton droit, glisser, dplacer, etc.Clavier: saisie, touche relche, etc.

    Gestion des fentresExcution des commandes systmes

    Capable de grer les erreurs

  • [email protected]

    DistinctionDistinction

    Ne pourra en aucun cas s'excuter de manire autonome.

    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.

    Permet de crer des applications indpendantes

    Compltement li un des produits Microsoft office

    VBVBA

    Version 1 et 2 d'Access

    Access Basic

  • [email protected]

    Syntaxe avec le code en couleurExplorateur dobjetsAide contextuelle syntaxique depuis les lignes de codePossibilit de dfinir des segments de code se compilant conditionnellement

    EspionsPoints darrt

    CaractCaractristiques de VBAristiques de VBA

  • [email protected]

    Environnement de Environnement de ddveloppement IDEveloppement IDE

    Dclaration Fonction

    Procdure

    Exploration

    Proprits

    Fentre Code

  • [email protected]

    Comment tester Comment tester

    Fentre dFentre dexexcutioncution

    ExExcution dcution dune procune procduredure

    Print ou ?

  • [email protected]

    Les composants AccessLes composants Access

  • [email protected]

    Composants majeursComposants majeursAccess comporte deux composants :

    Microsoft JetContrle le stockage des donnesDfinit les objets de la BD

    Le moteur de lapplicationContrle la programmationContrle 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.

  • [email protected]

    Microsoft Jet 4.0Microsoft Jet 4.0C'est le Gestionnaire de fichiersGestionnaire de fichiersIl possde les caractristiques suivantes :

    Moteur 32 bitsSupport Unicode

    Jeux de caractres deux octets par caractre

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

  • [email protected]

    Structure simplifiStructure simplifie du e du modmodle Applicationle Application

    Application

    Screen

    DoCmd

    Reports

    Forms

    Control Properties

    Debug

  • [email protected]

    Le langage VBALe langage VBA

  • [email protected]

    Types de donnTypes de donnesesByte

    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

  • [email protected]

    Types de donnTypes de donnesesDecimalSingle 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

  • [email protected]

    DDclarations clarations Des variables (DIM)

    DIM entier as INTEGERDIM type as VariantDIM x(10, 25) as Single

    REDIM x(10, 40) as INTEGERDes constantes (CONST)

    Const PI As Single = 3.14Des structures de donnes dfinies par lutilisateur

    Type AdresseNumero as IntegerNomRue as String * 30Ville as String * 50CodePostal as INTEGER

    End TYPE..DIM Adresse_client as Adresse

  • [email protected]

    DDclarations clarations Des procdures (SUB)

    Des fonctions (function)Function NoteAleatoire() As SingleDim ValeurAlea As Single

    ValeurAlea = Rnd() * 20NoteAleatoire = Format(ValeurAlea, "0.0")

    End Function

    Sub Attribution_Note_Aleatoire()Dim Notes As Recordset

    . . .

    End Sub

  • [email protected]

    PortPorte d'une variablee d'une variablePrivate

    Permet de dfinir des variables privesUne procdure prive englobe des variables prives

    Public (ou Global)Permet de dfinir des variables publiques

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

  • [email protected]

    OpOprateursrateursMathmatiques

    +, -, *, /, ^De comparaison

  • [email protected]

    Branchement et bouclesBranchement et bouclesInstruction IF

    IF (a=5) ThenElseENDIF

    Instruction IIf(condition, truepart, falsepart)Instruction GOTO

    GoTO Fin.. :FIN

    Instruction FORNEXTFor i=1 to 10---Next i

    Instruction WhileWhile i

  • [email protected]

    Branchement et bouclesBranchement et bouclesInstruction DO..LOOP

    Do [{While | Until} condition][statements]LoopVous pouvez galement utiliser la syntaxe suivante :Do[statements]Loop [{While | Until} condition]

    Instruction Select CaseSelect CASE valeur

    Case 0 to 2.Case 3 to 5Case 6Case ELSE

    END SELECT

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

  • [email protected]

    RRffrencer des objetsrencer des objetsPlusieurs 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()

  • [email protected]

    Gestion dGestion derreurserreursOn error Gnration d'une constante ErrResume NEXT

    Le programme continue sans abandonnerERL

    Renvoie le numro de la ligne o lerreur sest produiteErr.Number

    Contient le code de lerreurError$(Err) ou Err.Description

    Donne les dtails de ERR

    On Error GoTo Err_Click.

    Err_Click:MsgBox Err.Number & " : " & Err.Description

  • [email protected]

    Fonctions intFonctions intgrgresesSur 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.

  • [email protected]

    LibrairiesLibrairiesLes librairies proposes dans trs variesPour les intgrer dans un module:Dans l'IDE de Visual Basic

    Outils/rfrences

    Intgrer seulement les librairies concernes, sinon /

  • [email protected]

    MMthodes d'accthodes d'accs aux s aux donndonneses

  • [email protected]

    MMthodes d'accthodes d'accs aux s aux donndonneses

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

  • [email protected]

    Le modLe modle DAOle DAO

  • [email protected]

    Le modLe modle DAOle DAOAccess VBA

    DAO

    ODBCDirect

    ODBC

    ISAM dbase

    ODBC SQL Server

    ODBC Oracle

    *.mdb *.dbf SQL Server 2000 Oracle

    Microsoft JET

  • [email protected]

    CaractCaractristiques de DAOristiques de DAOAdapt la gestion des BD htrognes

    Oracle, SQL server, Access, Sybase, Paradox, etc.Conu pour des applications client/serveurDpend d'un groupe international (et pas de Microsoft )

  • [email protected]

    Structure du modStructure du modle DAOle DAO

    DBEngine

    Workspaces

    Errors

    Connections

    Databases

    Groups

    Users

    QueryDefs

    Recordsets

    TableDefs

    Containers

    Relations

    Parameters

    Fields

    Indexes

    Documents

  • [email protected]

    AccAccs s une BDune BDOuverture

    OpenDataBase(Name, Exclusif, ReadOnly)Fermeture

    CloseExemple (Dclaration de trois bases)

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

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

    ' 3- Fermer les basesMaBD1.CloseMaBD2.CloseMaBD3.Close

    End Sub

  • [email protected]

    TablesTablesCration (d'une table Etudiants avec deux champs Nom et Numro)Sub Cration_Table()

    '1- dclaration de la baseDim db As database'1- dclaration d'une variable de type TableDim definition_table As TableDef'1- dclaration d'une variable de type champDim champ_Nom, Champ_Num As Field

    . . . .'2- AffectationSet 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_Nomdefinition_table.Fields.append champ_Num. . . .

    '3- SauvegarderDb.TableDefs.Append definition_table

    End Sub

  • [email protected]

    TablesTablesSuppression (de la table Etudiants)

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

    Sub Suppresion_table()'1- dclaration de la baseDim db As database'2- AffectationSet db = currentDb()' Suppresion de la tableDb.TableDefs.Delete "Etudiants"

    End Sub

    Sub Attribution_table()'1- dclaration de la baseDim db As DatabaseDim definition_table As Recordset

    '2- AffectationSet db = CurrentDb()Set definition_table = db.OpenRecordset("Etudiants", dbOpenDynaset)

    End Sub

  • [email protected]

    RequtesRequtesCration (d'une requte des Clients lyonnais)

    Suppression (de la requte Client lyonnais)

    Sub cration_requete()'1- dclarationDim db As DatabaseDim definition_requete As QueryDef'2- AffectationSet db = CurrentDb()Set definition_requete = db.CreateQueryDef("Clients Lyonnais", "Select * fromClients where Ville='Lyon'")

    End Sub

    Sub Suppresion_requte()'1- dclaration de la baseDim db As database'2- AffectationSet db = currentDb()' Suppresion de la requeteDb.QueryDefs.Delete "Clients Lyonnais"

    End Sub

  • [email protected]

    RequtesRequtesDclaration (de la requte Clients lyonnais)

    Sub Attribution_requete()'1- dclaration de la baseDim db As DatabaseDim requete As Recordset

    '2- AffectationSet db = CurrentDb()Set requete = db.OpenRecordset("Clients lyonnais", dbOpenDynaset)

    End Sub

    Sub Attribution_requete_methode2 ()'1- dclaration de la baseDim db As DatabaseDim requete As RecordsetDim definition_requete As QueryDef'2- AffectationSet db = CurrentDb()Set definition_requete = db.QueryDefs("Clients lyonnais")Set requete = definition_requete.OpenRecordset(dbOpenDynaset)

    End Sub

  • [email protected]

    AccAccder aux enregistrement der aux enregistrement d'une tabled'une table

    Plusieurs moyens, mais principalement :

    RecordSet

  • [email protected]

    RecordSetRecordSetApplicable sur les tables et les requtesTrois lments sont essentiels

    La base de donnes concerneLes enregistrements dans la baseLe type de RecordSet

    Dclaration d'une variablePour reprsenter la table "Clients"

    '1- dclaration des variablesDimDim dbdb AsAs DatabaseDatabaseDimDim tb_clientstb_clients AsAs RecordsetRecordset'2- AffectationSetSet dbdb = = CurrentDbCurrentDb()()SetSet tb_clienttb_client = = db.OpenRecordsetdb.OpenRecordset("Clients",("Clients", dbOpenDynaset)dbOpenDynaset)

    dbOpensnapshot)dbOpensnapshot)DbOpentable)DbOpentable)

  • [email protected]

    RecordSetRecordSetPropose plusieurs mthodes :

    De positionnementMoveFirst | MoveNext | MoveLast | MovePrevious | Move nBOF, EOF

    De rechercheFindFirst | FindLast | FindNext | FindPrevious

    De manipulationDeleteUpdateEditAddnewFieldRequery (mise--jour)

    DiversesBookmarkRecordCount

  • [email protected]

    RecordSetRecordSetPositionnement sur un enregistrement

    Proprit BookmarkIndique lenregistrement courantCette proprit mise jour chaque dplacement dans le recordset

    Exemple

    DimDim dbdb AsAs DatabaseDatabaseDimDim tb_clientstb_clients AsAs RecordsetRecordsetDimDim enregistrement enregistrement AsAs VariantVariant'2'2-- AffectationAffectationSetSet dbdb = = CurrentDbCurrentDb()()SetSet tb_clienttb_client = = db.OpenRecordsetdb.OpenRecordset("Clients", ("Clients", dbOpenDynasetdbOpenDynaset))tb_client.FindFirsttb_client.FindFirst "[Code Client] = 'ANTON'""[Code Client] = 'ANTON'"enregistrement = enregistrement = tb_client.Bookmarktb_client.Bookmark' on se d' on se dplace dans les enregistrements place dans les enregistrements donc le donc le bookmarkbookmark changechange' Pour se repositionner ' Pour se repositionner l'enregistrement ANTONl'enregistrement ANTONtb_client.Bookmarktb_client.Bookmark = enregistrement= enregistrement

  • [email protected]

    RecordSetRecordSetMthodes FindFirst | FindLast | FindNext | FindPrevious

    Permet de trouver un enregistrement selon un critre donnutilisation des oprateurs de comparaison, logique, et/ou de loprateur LIKE

    ExempleOn veut savoir si on a des clients dont le code commence par A

    '1- dclaration des variablesDimDim db db AsAs DatabaseDatabaseDimDim tb_clients tb_clients AsAs RecordsetRecordset'2- AffectationSetSet db = CurrentDb()db = CurrentDb()SetSet tb_client = db.OpenRecordset("Clients", dbOpenDynaset)tb_client = db.OpenRecordset("Clients", dbOpenDynaset)'3'3-- Rerchercher les clients dont le code commence par ARerchercher les clients dont le code commence par Atb_client.FindFirst "[Code Client] LIKE 'A*'"tb_client.FindFirst "[Code Client] LIKE 'A*'"'4'4-- Affichage d'un message quand l'enregistrement est trouvAffichage d'un message quand l'enregistrement est trouvIfIf NotNot tb_client.NoMatch tb_client.NoMatch ThenThen

    MsgBox "trouvMsgBox "trouv""End IfEnd If

  • [email protected]

    Comment accComment accder der un un champ ?champ ?

    En utilisantFields :

    stocke les diffrents champs d un enregistrement. Chaque champ est reprsent par un objet instance de la classe FieldLe nombre de Fields est dtermin par la mthode CountRemarque : 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 Recordsetrs.Fields("nom_produit") 'valeur du champ nom_produitrs ("nom_produit") 'valeur du champ nom_produitrs.[nom_produit] 'valeur du champ nom_produitrs![nom_produit] 'valeur du champ nom_produitrs.Fields(1) 'valeur du premier champrs(1) 'valeur du premier champ

  • [email protected]

    Question 1Question 1Comment afficher la liste des champs de la table "Etudiants" ainsi que le contenu de chaque champ ?

    Sub afficher_contenu_table_clients()Dim db As DatabaseDim tb_clients As RecordsetSet db = CurrentDb()Set tb_client = db.OpenRecordset("Clients", dbOpenDynaset)For i = 0 To tb_client.Fields.Count - 1

    Debug.Print tb_client.Fields(i).NameNext iWhile Not tb_client.EOF

    For i = 0 To tb_client.Fields.Count - 1Debug.Print tb_client.Fields(i).Value

    Next itb_client.MoveNext

    WendEnd Sub

  • [email protected]

    Ajout d'un enregistrementAjout d'un enregistrementElle se fait en respectant les tapes suivantes :

    1. Utiliser la mthode AddNew du Recordset pour crer un nouvel enregistrement vide et sy positionner

    2. Donner une valeur aux champs (Fields) du Recordset On peut galement passer ces valeurs comme paramtres de la

    mthode AddNew3. Utiliser la mthode Update du Recordset pour enregistrer le

    nouvel enregistrement dans la base On peut utiliser la mthode CancelUpdate pour annuler la cration

  • [email protected]

    RecordSetRecordSetExemple d'ajout

    On veut ajouter le client IQ2 ayant le code 'IUTIQ'

    DimDim db db AsAs DatabaseDatabaseDimDim tb_clients tb_clients AsAs RecordsetRecordset

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

    '1'1-- Demander la crDemander la crationationTb_client.AddNewTb_client.AddNew

    '2'2-- Fournir les valeurs des champsFournir les valeurs des champsTb_client.[Code Client] = "IUTIQ"Tb_client.[Code Client] = "IUTIQ"Tb_client![Nom] = "IQ2"Tb_client![Nom] = "IQ2"

    '3'3-- Enregistrer les donnEnregistrer les donnesesTb_client.UpdateTb_client.Update

  • [email protected]

    RecordSetRecordSetModification d enregistrements

    1. Se positionner sur l enregistrement modifier2. Utiliser la mthode Edit3. Modifier la valeur des champs4. Utiliser la mthode update

    ExempleOn veut changer le nom du client dont le code est 'ANTON'

    Dim db As DatabaseDim tb_clients As RecordsetSet 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.Edittb_client.[Nom] = "Richard CHBEIR"tb_client.Update

    End If

  • [email protected]

    RecordSetRecordSetSuppression d enregistrements

    1. Se positionner sur l enregistrement supprimer2. Utiliser la mthode deleteRemarque : l enregistrement courant n est plus valide pensez

    donc le dplacer (avec MoveNext ou autres)

    ExempleSupprimer le client dont le Code est ANTON

    Dim db As DatabaseDim tb_clients As RecordsetSet 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.deletetb_client.MoveNext

  • [email protected]

    RecordSetRecordSetTri de donnes

    1. Ouvrir la table ou la requte avec RecordSet2. Utiliser la mthode Sort3. Copier le rsultat dans une autre RecordSet

    ExempleTrier les clients par ordre dcroissant

    DimDim dbdb AsAs DatabaseDatabaseDimDim enregistrement, enregistrement, enregistrement_trieenregistrement_trie AsAs RecordsetRecordsetSetSet dbdb = = CurrentDbCurrentDb()()SetSet enregistrement = enregistrement = db.OpenRecordsetdb.OpenRecordset("select * FROM Clients")("select * FROM Clients")' ou Set enregistrement = ' ou Set enregistrement = db.OpenRecordsetdb.OpenRecordset("Clients", ("Clients", dbOpenDynasetdbOpenDynaset))' Attention' Attention' Set enregistrement = ' Set enregistrement = db.OpenRecordsetdb.OpenRecordset("Clients") ("Clients") ne marche pasne marche pasenregistrement.Sortenregistrement.Sort = "Nom DESC"= "Nom DESC"SetSet enregistrement_trieenregistrement_trie = = enregistrement.OpenRecordsetenregistrement.OpenRecordset((dbOpenDynasetdbOpenDynaset))

  • [email protected]

    Filtre de donnFiltre de donneses

    Filtre de donnes1. Ouvrir la table ou la requte avec RecordSet

    2. Utiliser la mthode Filtre

    3. Copier le rsultat dans une autre RecordSet

    ExempleTrouver les clients dont le nom est IQ2 ou le code postal commence par 21

    DimDim dbdb AsAs DatabaseDatabaseDimDim enregistrement, enregistrement, enregistrement_filtreenregistrement_filtre AsAs RecordsetRecordsetSetSet dbdb = = CurrentDbCurrentDb()()Set Set enregistrement = enregistrement = db.OpenRecordsetdb.OpenRecordset("Clients")("Clients")enregistrement.Filterenregistrement.Filter = "[Nom] = 'IQ2' = "[Nom] = 'IQ2' OrOr [Code Postal] [Code Postal] likelike '21*'"'21*'"SetSet enregistrement_filtreenregistrement_filtre = = enregistrement.OpenRecordsetenregistrement.OpenRecordset((dbOpenDynasetdbOpenDynaset))

    , , dbOpenDynasetdbOpenDynaset))

  • [email protected]

    Le modLe modle ADOle ADO

  • [email protected]

    Le modLe modle ADOle ADOVC++ VBA/VB

    ADO

    Pilote ODBCSQL Server

    ODBC

    *.mdb IndexServerSQL Server

    2000

    Access ASP Java

    Conc

    omma

    teurs

    OLE

    DB

    Jet OLE ObjectADSDSOMSIDXS SQLOLEDB MSDASQL

    Four

    nisse

    urs

    OLE

    DB

    Annuaire

  • [email protected]

    Fournisseurs OLE DBFournisseurs OLE DBJet OLE DB 4.0

    Pour les BD AccessSQL ServerOracleODBC Drivers

    Pour les sources de donnes ODBCOLAP Services

    Pour le serveur OLAP Microsoft (Exchange Server)Simple Provider

    Pour les fichiers de texte simplesMicrosoft Directory Services

    Pour Active Directory sous Windows 2000Internet Publishing

    Pour l'accs aux serveurs WebDTS packages

    Pour les services de conversion de donnes SQL server

  • [email protected]

    CaractCaractristiques de OLE DB ristiques de OLE DB et ADOet ADO

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

    Conus pour des applications orientes InternetJeux d'enregistrements dconnects, meilleure gestion des utilisateurs, etc.

    Dpend compltement de Microsoft

  • [email protected]

    Structure simplifiStructure simplifiee

    Connection

    Error

    RecordSet Command

    ParameterField

    ExExcutercuter

    Connexion Connexion ActiveActive

    SourceSource

    ExExcutercuter

  • [email protected]

    Instanciation des classesInstanciation des classesSyntaxe

    Exemple

    Dim nom_variable As [New] ADODB.nom_classe

    Dim cn As New ADODB.ConnectionDim cmd As New ADODB.CommandDim rst As New ADODB.Recordset

  • [email protected]

    La classe La classe ConnectionConnectionPermet la connexion une source de donnes. Un objet de cette classe identifie une et une seule connexion une source de donnesPermet l'excution de commandes

    Requte de mise jour, d'insertion, de suppression, etc.

  • [email protected]

    Les mLes mthodes thodes ConnectionConnectionOpen

    Ouvre une connexion une source de donnes

    ExecuteExcute une requte et rcupre le rsultat dans un RecordSet

    CloseFerme une connexion

    DimDim rs1, rs2 rs1, rs2 AsAs NewNew ADODB.RecordsetADODB.RecordsetSetSet rs1 = rs1 = cn.executecn.execute("select [nom Client] ("select [nom Client] fromfrom Clients")Clients")cn.Executecn.Execute("insert ("insert intointo ma_tablema_table values (5, values (5, abcabc, , )"))")

    cn.closecn.closeSetSet cncn = = nothingnothing

    DimDim cncn AsAs NewNew ADODB.ConnectionADODB.Connectioncn.opencn.open "Provider=Microsoft.Jet.OLEDB.4.0; Data source = c:"Provider=Microsoft.Jet.OLEDB.4.0; Data source = c:\\temptemp\\Ma_Base.mdbMa_Base.mdb""

  • [email protected]

    La classe La classe CommandCommandPermet d'excuter des commandes sur une source de donnes (des instructions SQL)

    Souvent avec des paramtres

  • [email protected]

    La classe La classe CommandCommand

    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

  • [email protected]

    La classe La classe CommandCommand

    Mthode Execute : permet d excuter la commande

    Sans paramtre (stocke dans la propritCommandText)

    Ex : objet_command.ExecuteAvec paramtre

    Ex : objet_command.Execute("select * fromproduits")

  • [email protected]

    La classe La classe CommandCommand

    Exemple

    DimDim cncn AsAs NewNew ADODB.ConnectionADODB.Connectioncn.opencn.open "DSN="DSN=Base_ClientsBase_Clients""' Cela signifie qu'une source de donn' Cela signifie qu'une source de donnes nommes nomme e Base_ClientBase_Client existe dexiste djj dans ODBC dans ODBC

    DimDim cmdcmd AsAs NewNew ADODB.CommandADODB.Commandcmd.CommandTextcmd.CommandText = "select * = "select * fromfrom Clients"Clients"SetSet cmd.ActiveConnectioncmd.ActiveConnection = = cncn

    DimDim rsrs AsAs NewNew ADODB.recordsetADODB.recordsetSetSet rsrs = = cmd.Executecmd.Execute

  • [email protected]

    La classe La classe RecordsetRecordsetPermet de contenir l'ensemble des donnes extraites des sources

    Stocke le rsultat de lexcution dune commande sous forme dun ensemble de lignesSeule la ligne courante est visible (Notion de curseur)

  • [email protected]

    La classe La classe RecordsetRecordsetTrois possibilits d'instanciation via la mthode

    Execute de Connection

    Execute de Command

    Open de Recordset

    DimDim cmdcmd AsAs NewNew ADODB.CommandADODB.Commandcmd.CommandTextcmd.CommandText = "select * = "select * fromfrom Produits"Produits"setset cmd.ActiveConnectioncmd.ActiveConnection = = cncnDimDim rsrs AsAs NewNew ADODB.recordsetADODB.recordsetsetset rsrs = = cmd.Executecmd.Execute

    DimDim rsrs AsAs NewNew ADODB.recordsetADODB.recordsetsetset rsrs = = cn.executecn.execute("select [nom Client] ("select [nom Client] fromfrom Clients")Clients")

    DimDim rsrs AsAs NewNew ADODB.recordsetADODB.recordsetrs.openrs.open "select * "select * fromfrom Clients", "Clients", "Base_ClientsBase_Clients""

  • [email protected]

    CrCration dation dun un RecordsetRecordset

    Syntaxe gnrale de la mthode openobjet_recordset.open une_instruction connection_active lock_type

    requte requte sqlsql, nom d, nom dune table, une table,

    une chaune chane contenant le DSN ne contenant le DSN ou une rou une rffrence rence un objet un objet

    de la classe de la classe connectionconnection

    Une constante qui prend une des valeurs suivantes :Une constante qui prend une des valeurs suivantes : adLockReadOnlyadLockReadOnly les donnles donnes ne peuvent pas tre modifies ne peuvent pas tre modifieses adLockPessimisticadLockPessimisticles enregistrements sont verrouillles enregistrements sont verrouills ds ds le ds le dbutbut adLockOptimisticadLockOptimistic lesles enregistrements ne sont verrouillenregistrements ne sont verrouills qus quau moment de lau moment de lappel de la mappel de la mthode updatethode update

  • [email protected]

    ConseilsConseilsOptimiser votre application

    Rduire la consommation de mmoireUtilisez le bon type de donnesRegroupez les procdures dans les modulesNe chargez pas les bibliothques inutiles

    Augmenter la vitesse d'excutionRduire les portions codeUtilisez les constantes

    Accrotre la vitesse peruePr-charger et masquer des formulairesStocker localement les donnes dans un cache

    Compacter la baseCommentez votre code