Vous êtes sur la page 1sur 12

17/2/2015

ADOetVisualBasic:Tutoriel

ADOetVisualBasic:Tutoriel
I.AvantPropos
L'ensembleducodeetexplicationsquevoustrouverezdanscedocumentestbassurADOversion2.0etVisualBasic6.
VoustrouverezciaprsdesexemplesdeconnexionsauxbasesdedonnesAccess,Oracle,SQLServerainsiqu'uneexplicationsur
lesobjetslespluscourrantsd'ADO.
II.Untourrapided'ADO
ADO(ActiveXDataObject)estuncomposantActiveXpermettantd'accderauxbasesdedonnesdefaonbeaucoupplusfacile
sanssesoucierdetoutcequiestallocationdesenvironnementsdetravail(cf.programmationaveclacouchebassed'ODBC).ADO
fournitdesobjetsquipermettentdeseconnecterunebaseetderaliserdesrequtesSQLsurcettebase.
PourpouvoirutiliserADOdansunprojetVisualBasicvousavezdeuxsolutionspouryparvenir:
lapremireestdecrerunProjetdedonnes
lasecondeestderajouterdanslemenuProjetsRfrences,MicrosoftAtiveXDataObjects2.xLibrary
ADOproposelesobjetssuivants:
Command:permetd'excuterdesrequtes
Connection:connexionunesourcededonnes(aussibienunfichiertexte,qu'unfichierExcel,ouunebasededonnes)
Error:ensembledeserreursretournesparleSGBD
Parameter:permetdedfinirunparamtred'unerequte
Recordset:jeud'enregistrementsretournslorsdel'excutiond'unSELECT.
III.EtabliruneconnexionavecADOetl'objetConnection:
PourtabliruneconnexionunebasededonnesavecADO,onutilisel'objetConnection.Voustrouverezdanscechapitreun
exempledeconnexionunebasededonnesAccess,OracleetSQLServer.
Uneconnexionunebasededonnessedfinitpar:
l'htesurlequelsetrouvelabasededonnes
lenomdelabasededonnes
lenomdel'utilisateur
lemotdepasse.
http://drq.developpez.com/vb/tutoriels/ADO/

1/12

17/2/2015

ADOetVisualBasic:Tutoriel

L'ensembledeceschampsestappelchanedeconnexion.Leschampshteetnomdelabasededonnespeuventsoit
tredfinisdansleprogrammesoitdansunDSN(DataSourceName).UnDSNseconfiguredanslepanneaudeconfigurationavec
l'outilSourcededonnes(ODBC).
Commentraliseruneconnexion?Toutd'abordilfautdclarerlavariableassocielaconnexion.

Slectionnez
DimcnxAsNewADODB.Connection

Oualors:

Slectionnez
DimcnxAsADODB.Connection
Setcnx=NewADODB.Connection

L'tapesuivanteconsistecrirelachanedeconnexion.Commeilatvuprcdemment,ilexistedeuxpossibilitssoiten
utilisantunDSNsoitenmettantlesinformationsncessairesdanslachanedeconnexion.

IIIA.ConnexionunebasededonnesAccesssansDSN

Slectionnez
'Dclarationdelavariabledeconnexion
DimcnxAsADODB.Connection
Setcnx=NewADODB.Connection
'Dfinitiondupilotedeconnexion
cnx.Provider="Microsoft.Jet.Oledb.3.51"
'Dfinitiondelachanedeconnexion
cnx.ConnectionString="C:\maBase.mdb"
'Ouverturedelabasededonnes
cnx.Open

Lepilote3.51permetd'accderAccess95et97.PourAccess2000,ilfaututiliserlaversion4.0.

IIIB.ConnexionunebasededonnesSQLServersansDSN

Slectionnez
http://drq.developpez.com/vb/tutoriels/ADO/

2/12

17/2/2015

ADOetVisualBasic:Tutoriel

'Dclarationdelavariabledeconnexion
DimcnxAsADODB.Connection
Setcnx=NewADODB.Connection
...

'Dfinitiondelachanedeconnexion
cnx.ConnectionString="UID="&NomUtilisateur&";PWD="&MotDePasse&";"&"DRIVER={SQLServer};Server="&NomServeur&";Database="&NomBaseDe
'Ouverturedelabasededonnes
cnx.Open

Commevousavezpuleconstater,iln'yapaslalignecnx.Provider.Eneffetdanscetexemplelepiloteutiliserestdcritdansla
chanedeconnexion:DRIVER={SQLServer}.

IIIC.ConnexionunebasededonnesOraclesansDSN

Slectionnez
'Dclarationdelavariabledeconnexion
DimcnxAsADODB.Connection
Setcnx=NewADODB.Connection
...

'Dfinitiondelachanedeconnexion
cnx.ConnectionString="UID="+NomUtilisateur&";PWD="&MotDePasse&";"&"DRIVER=msdaora;Server="&NomServeur&";Database="&NomBaseDeDonn
'Ouverturedelabasededonnes
cnx.Open

VousavezpuvoirdeschanesdeconnexionaveccommeDRIVER{MicrosoftODBCforOracle}.Cecimarchemaisn'estpastrs
recommand.

IIID.ConnexionunebasededonnesavecunDSN

Slectionnez
'Dclarationdelavariabledeconnexion
DimcnxAsADODB.Connection
Setcnx=NewADODB.Connection
...
http://drq.developpez.com/vb/tutoriels/ADO/

3/12

17/2/2015

ADOetVisualBasic:Tutoriel

'Dfinitiondelachanedeconnexion
cnx.ConnectionString="DSN="&NomDuDSN&";UID="&NomUtilisateur&";PWD="&MotDePasse&";"
'Ouverturedelabasededonnes
cnx.Open

DanslecasoilyaleDSN,vousn'avezplusbesoindespcifierl'htesurlequelsetrouvelabasededonnesainsiquelenom
delabasededonnes.
Pourfinircettepartie,voiciunepetitefonctiondeconnexionavecDSN:

Slectionnez
'===================================================================
'AUTHOR:DrQ
'FUNCTION:InitConnection(...)
'DESCRIPTION:Initiliaselaconnexionlabasededonnes
'PARAMS:*DSN:NomduDSNassocilaconnexion
'*UserName:Nomdel'utilisateur
'*Password:Motdepassedel'utilisateur
'VERSION:1.1
'===================================================================
PublicFunctionInitConnection(DSNAsString,UserNameAsString,PassWordAsString)AsBoolean
DimqueryAsString
DimcnxStringAsString
DimRequeteOkAsBoolean
DimmRstAsNewADODB.Recordset
InitConnection=False
'Initialisationdelachainedeconnexion
ADOCnx.ConnectionString="DSN="&DSN&";"
'Vrifiequelaconnexionestbienferme
IfADOCnx.State=adStateOpenThen
ADOCnx.Close
EndIf
OnErrorGoToBadConnection
'Connexionlabasededonnes
ADOCnx.OpencnxString,UserName,PassWord,adAsyncConnect
'Attentequelaconnexionsoittablie
While(ADOCnx.State=adStateConnecting)
DoEvents
Wend
'Vrificationdeserreursdanslecasd'unemauvaiseconnexion
http://drq.developpez.com/vb/tutoriels/ADO/

4/12

17/2/2015

ADOetVisualBasic:Tutoriel

IfADOCnx.Errors.Count>0Then
'Affichagedeserreurs
MsgBoxADOCnx.Errors.Item(0)
InitConnection=False
ExitFunction
Else
InitConnection=True
EndIf
ExitFunction
BadConnection:
IfADOCnx.Errors.Count>0Then
'Affichagedeserreurs
MsgBoxADOCnx.Errors.Item(0)
InitConnection=False
ExitFunction
Else
MsgBoxerr.Description
EndIf
EndFunction

IIIE.Quelquesinformationssupplmentairessurlespilotes
IIIE1.ListedespilotesODBCsansDSN
dBase

Slectionnez
Driver={MicrosoftdBASEDriver(*.dbf)};DriverID=277;Dbq=chemin\nombd.dbf;

MSAccess

Slectionnez
Driver={MicrosoftAccessDriver(*.mdb)};Dbq=chemin\nombd.mdb;Uid=NomUtilisateur;Pwd=MotDePasse;

MSSQLServer

Slectionnez
http://drq.developpez.com/vb/tutoriels/ADO/

5/12

17/2/2015

ADOetVisualBasic:Tutoriel

Driver={SQLServer};Server=NomDuServeur;Database=nombd;Uid=NomUtilisateur;Pwd=MotDePasse;

MSTextDrive

Slectionnez
Driver={MicrosoftTextDriver(*.txt;*.csv)};Dbq=chemin\;Extensions=asc,csv,tab,txt;PersistSecurityInfo=False;

MySQL

Slectionnez
Driver={mysql};database=nombd;server=NomDuServeur;uid=NomUtilisateur;pwd=MotDePasse;option=16386;

Oracle

Slectionnez
Driver={MicrosoftODBCforOracle};Server=ServeurOracle.schema;Uid=NomUtilisateur;Pwd=MotDePasse;

VisualFoxpro

Slectionnez
Driver={MicrosoftVisualFoxProDriver};SourceType=DBC;SourceDB=chemin\nombd.dbc;Exclusive=No;

IIIE2.ListedespilotesOLEDB
MSAccess

Slectionnez
Provider=Microsoft.Jet.OLEDB.4.0;DataSource=chemin\nombd.mdb;UserId=NomUtilisateur;Password=MotDePasse;

MSSQLServer
http://drq.developpez.com/vb/tutoriels/ADO/

6/12

17/2/2015

ADOetVisualBasic:Tutoriel

Slectionnez
Provider=SQLOLEDB;DataSource=NomServeur;InitialCatalog=nombd;UserID=NomUtilisateur;Password=MotDePasse;

MSSQLServeravecuneadresseIP

Slectionnez
Provider=SQLOLEDB;DataSource=xx.xx.xx.xx,1433;NetworkLibrary=DBMSSOCN;InitialCatalog=dbname;UserID=NomUtilisateur;Password=MotDePasse;

MSTextDriver

Slectionnez
"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=chemin;ExtendedProperties='text;FMT=Delimited'"

Oracle

Slectionnez
Provider=OraOLEDB.Oracle;DataSource=nombd;UserId=NomUtilisateur;Password=MotDePasse;

IV.Raliserdesrequtesavecl'objetRecordset
Commepourl'objetConnectionvousdevezcommencerpardclarerunevariabledetypeRecordset.

Slectionnez
DimrstAsNewADODB.Recordset

Oualors:

Slectionnez
DimrstAsADODB.Recordset
Setrst=NewADODB.Recordset
http://drq.developpez.com/vb/tutoriels/ADO/

7/12

17/2/2015

ADOetVisualBasic:Tutoriel

Unefoisceslignesdecodetapes,vouspouvezexcutervotrerequte.PourcelavousdevezutiliserlamthodeOpendel'objet
Recordset.Cettemthodeprendenparamtre:
larequte
laconnexionsurlaquellevoussouhaitezexcuterlarequte
letypeducurseur(jevousrenvoiedescoursdeSGBD)
letypedeblocage
letypederequte
L'ensembledeceschampssontfacultatifs,maisjevousconseilled'aumoinspasserlesdeuxpremiersparamtreslamthode.
Celarendlecodeplusclair.Danslesexemplesquivontsuivrejen'utiliseraiquelesdeuxpremiersparamtres.Sivoussouhaitez
plusd'informations,jevousrenvoiesurMSDNquiesttrsbiendocument.
Voiciunpetitexemple:

Slectionnez
'Dclarationdesvariables
DimcnxAsADODB.Connection
DimrstAsADODB.Recordset
'Instanciationdesvariables
Setcnx=NewADODB.Connection
Setrst=NewADODB.Recordset
'Connexionlabasededonnes
cnx.ConnectionString="Provider="&PiloteDaccesAlaBaseDeDonnes&";DSN="&NomDuDSN&";UID="&NomUtilisateur&";PWD="&MotDePasse&"
cnx.Open
'Excutiondelarequte
rst.Open"SELECTnom,prenom,adresseFROMClient",cnx

Unefoisl'Openexcut,l'ensembledesenregistrementsretournsparleSELECTsetrouventdansl'objetRecordset,icirst.
PouraccdercesenregistrementsvousdevezutiliserlechampField.ChaquechampFieldcontientunecolonne.Dansnotrecas
nousenavons3numrotesde02.Vousavezdoncdeuxsolutionspouraccderunchamp.Prenonsl'exempleduchamp
prenom.Vousfaitesrst.Fields(1)oubienrst.Fields("prenom").Vousavezpuvoircertainementducodeavecrst(1)oubien
rst("prenom"),c'estlammechose.Etouilesdveloppeurssontunpeufaignantsdsqu'ils'agitdetaperducodeo)
Accderunchampc'estbien,maispouvoirnaviguerdansl'ensembledesenregistrementsc'estmieux.Pourcela,ilexistedes
mthodespermettantdelefaire:
MoveFirst:slectionnelepremierenregistrement
http://drq.developpez.com/vb/tutoriels/ADO/

8/12

17/2/2015

ADOetVisualBasic:Tutoriel

MoveLast:slectionneledernierenregistrement
MoveNext:slectionnel'enregistrementsuivant
MovePrevious:slectionnel'enregistrementprcdent.
Ilyadeuxpropritsdel'objetRecordsetconnatrepourlanavigationquisont:
BOF(BeginOfFile):estvraisil'objetRecordsetpointesurledbutd'enregistrement
EOF(EndOfFile):estvraisil'objetRecorsetpointesurlafindel'enregistrement.
Voiciunexempledebouclepermettantdeparcourirunjeud'enregistrementetd'afficherlersultat.

Slectionnez
WhileNot(rst.EOF)
MsgBoxrst("nom")&""&rst("prenom")&"habiteau"&rst("adresse")&"."
rst.MoveNext
Wend

Ilarrivequecertainesfois,ilyestunproblmeavecl'objetRecordsetetilnepointepasaudbutdel'enregistrement.Doncpour
remdierceproblmevouspouveztapezleslignessuivantesaprsavoireffectul'Open.

Slectionnez
rst.MoveLast
rst.MoveFirst

Unefoisquevousn'utilisezplusleRecordset,pensezlefermeraveclamthodeClose.

Slectionnez
rst.Close

IlexisteuneautrepropritquipeuttreintressantequiestRecordCount.Ellevouspermetdesavoirlenombre
d'enregistrementsstocksdansl'objetRecordset.
VoiciunpetitexempledefonctionpouvantexcutertouttypederequtesviaunRecordset.
'============================================================================='
'FUNCTION:ExecSQL(...)
'DESCRIPTION:ExecuteunerequteSQL
http://drq.developpez.com/vb/tutoriels/ADO/

9/12

17/2/2015

ADOetVisualBasic:Tutoriel

'PARAMS:*query:Requteexcuter
'*rst:Variablepermettantdestockerlesenregistrements

Slectionnez
'============================================================================='
PublicFunctionExecSQL(queryAsString,ByRefrstAsADODB.Recordset,ByRefcnxAsADODB.Connection)AsBoolean
'InitialisationduRecordSet
Ifrst.State<>adStateClosedThenrst.Close
'Ouvreunetransactionpournepasavoirraliserdecommitenfindetraitement
ADOCnx.BeginTrans
'Positionnelecurseurctclient
rst.CursorLocation=adUseClient
'Vrifiequelaconnexionpasseestbonne
Setrst.ActiveConnection=cnxOnErrorGoToErrHandle
'Excutelarequte
rst.Openquery,ADOCnx
'Validelatransaction
ADOCnx.CommitTrans
ExecSQL=True
ExitFunction
ErrHandle:
ExecSQL=False
MsgBox"ADOManager.ExecSQL:ErrHandle"&vbCr&vbCr&err.Description,vbCritical
EndFunction

V.Raliserdesrequtesavecl'objetCommand
Commepourlesautresobjets,vousdevezcommencerpardclarerunevariabledetypeCommand.

Slectionnez
DimrstAsNewADODB.Command

Oualors:

Slectionnez
http://drq.developpez.com/vb/tutoriels/ADO/

10/12

17/2/2015

ADOetVisualBasic:Tutoriel

DimrstAsADODB.Command
Setrst=NewADODB.Command

L'objetCommandestunpeupluscomplexequeleRecordsetquoique.L'avantagedel'objetCommandparrapportl'objet
RecordsetestdepouvoirfacilementparamtrerlesrequtesmmeslesSELECT.
Pourpouvoirutiliserdesrequtesparamtrablesilfaututiliserlesymbole?danslarequteSQLpuisrajouterunobjetParameter
l'objetCommand.
Pourtreplusclairvoiciunexemple:

Slectionnez
'Dclarationdesvariables
DimcnxAsADODB.Connection
DimcmdAsADODB.Command
Dimprm1AsADODB.Parameter
DimrstAsADODB.Recordset
'Instanciationdesvariables
Setcnx=NewADODB.Connection
Setcmd=NewADODB.Command
Setprm1=NewADODB.Parameter
Setrst=NewADODB.Recordset
'Connexionlabasededonnes
cnx.ConnectionString="Provider="&PiloteDaccesAlaBaseDeDonnes&";DSN="&NomDuDSN&";UID="&NomUtilisateur&";PWD="&MotDePasse&"
cnx.Open
'Prparationdel'objetCommand
cmd.CommandText="SELECT*FROMClientWHEREnom=?"
'Prparationduparamtre
prm1.Name="nom"'Nomduchampcorrespondant
prm.Type=adVarChar'Typeduchamp
prm.Direction=adInput'Typedeparamtre:Entre,Sortie,Entre/Sortie
prm.Size=40'Taillemaximaleduchamp
prm.Value="Dupond"'Valeurduparamtre
'Excutiondelarequte
Setrst=cmd.Execute

Commevousavezpuleremarquer,j'aiutilisunRecordsetdanscetexemple.Voiciunefaondercuprerlesenregistrements
retournsparunSELECT.L'objetRecordsetn'estncessairequedanslecasd'unSELECT.Danslesautrescasvouspouveztapper
justecmd.Execute.LamthodeExecutedel'objetCommandpeutprendretroisparamtresquisontfacultatifs:
http://drq.developpez.com/vb/tutoriels/ADO/

11/12

17/2/2015

ADOetVisualBasic:Tutoriel

lepremierestlenombred'enregistrementsaffectsparlarequte.IlestdetypeLong
ledeuximeestuntableaudeVariantcontenantlesparamtresdelarequteSQL
letroismeindiqueletypedevaleurquelefournisseurdoitattribuerlapropritCommandText.
LapropritCommandTextcontientlarequteexcuter.apeuttreunerequtestandardcommeunerequtedemodification
del'architectured'unetableoudelabasededonnes.
VI.Remarque
Ilesttoutfaitpossiblequ'ilyaitdeserreursdansledocument.Sivousentrouvez,oubiensouhaitezunpeuplusd'explication
surcertainspoints,veuillezm'envoyerunmailafindemettrejourl'ensembledecedocument.D'avancemerci.
Pourconclurecechapitre,j'aijusteunedernirechosevoussignaler.DanslecasovousutilisezlesobjetsParameterfaites
attentionfairelesAppenddevosparamtresdanslemmeordrequeles?danslarequteSQL.

http://drq.developpez.com/vb/tutoriels/ADO/

12/12

Vous aimerez peut-être aussi