vba
DESCRIPTION
Apprendre le vbaTRANSCRIPT
-
VisualVisual Basic pour Applications Basic pour Applications DAO DAO -- ADOADO
IQ2 BDD Richard CHBEIR
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 chapitrePlan du chapitreIntroductionLes composants AccessLes mthodes d'accs aux donnesLe modle DAOLe modle ADOQuelques conseils
-
IntroductionIntroduction
-
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
-
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
-
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
-
Environnement de Environnement de ddveloppement IDEveloppement IDE
Dclaration Fonction
Procdure
Exploration
Proprits
Fentre Code
-
Comment tester Comment tester
Fentre dFentre dexexcutioncution
ExExcution dcution dune procune procduredure
Print ou ?
-
Les composants AccessLes composants Access
-
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.
-
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
-
Structure simplifiStructure simplifie du e du modmodle Applicationle Application
Application
Screen
DoCmd
Reports
Forms
Control Properties
Debug
-
Le langage VBALe langage VBA
-
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
-
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
-
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
-
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
-
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
-
OpOprateursrateursMathmatiques
+, -, *, /, ^De comparaison
-
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
-
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)
-
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()
-
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
-
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.
-
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 /
-
MMthodes d'accthodes d'accs aux s aux donndonneses
-
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 ;)
-
Le modLe modle DAOle DAO
-
Le modLe modle DAOle DAOAccess VBA
DAO
ODBCDirect
ODBC
ISAM dbase
ODBC SQL Server
ODBC Oracle
*.mdb *.dbf SQL Server 2000 Oracle
Microsoft JET
-
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 )
-
Structure du modStructure du modle DAOle DAO
DBEngine
Workspaces
Errors
Connections
Databases
Groups
Users
QueryDefs
Recordsets
TableDefs
Containers
Relations
Parameters
Fields
Indexes
Documents
-
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
-
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
-
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
-
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
-
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
-
AccAccder aux enregistrement der aux enregistrement d'une tabled'une table
Plusieurs moyens, mais principalement :
RecordSet
-
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)
-
RecordSetRecordSetPropose plusieurs mthodes :
De positionnementMoveFirst | MoveNext | MoveLast | MovePrevious | Move nBOF, EOF
De rechercheFindFirst | FindLast | FindNext | FindPrevious
De manipulationDeleteUpdateEditAddnewFieldRequery (mise--jour)
DiversesBookmarkRecordCount
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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))
-
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))
-
Le modLe modle ADOle ADO
-
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
-
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
-
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
-
Structure simplifiStructure simplifiee
Connection
Error
RecordSet Command
ParameterField
ExExcutercuter
Connexion Connexion ActiveActive
SourceSource
ExExcutercuter
-
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
-
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.
-
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""
-
La classe La classe CommandCommandPermet d'excuter des commandes sur une source de donnes (des instructions SQL)
Souvent avec des paramtres
-
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
-
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")
-
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
-
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)
-
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""
-
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
-
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