Vous êtes sur la page 1sur 22

4

Introduction la programmation VB Conseils utiles :


Les qualits d'un programme

Fiabilit : il doit donner les rsultats corrects attendus. Robustesse : il doit grer les erreurs de manipulation des utilisateurs. Convivialit : il doit tre agrable utiliser (souris, icnes, menus) Efficacit : il doit donner des rponses rapides et claires. Compacit : il doit occuper le moins de place possible en mmoire. Lisibilit : il doit tre structur en modules, comment, prsent clairement. Portabilit : il doit tre aisment trans rable sur une mac!ine d"un autre t#pe.

Mthode de programmation $pci ication des besoins des uturs utilisateurs. $pci ications onctionnelles : comment satis aire au% besoins. Conception gnrale : di&ision du logiciel en programmes. Conception dtaille : algorit!me le plus adapt pour c!a'ue programme. (ssemblage des di rents programmes. Codage l"aide du langage le plus adapt. )ests et Validation.

*a conception est beaucoup plus importante 'ue le codage 'ui peut tre sous+trait dans le cas de gros logiciels.

Le langage Visual asic


Caractristiques du langage V ,rogrammation vnementielle (sollicitations : souris, cla&ier, autre &nement)
-utilisable (modules, classes).

!otion de variable .lles sont ncessaires pour stoc"er (conser&er) une &aleur d#nami'ue et rutilisable. Menu #utils + #ptions + onglet Environnement + choisir : /-e'uiert la dclaration des &ariables/. 0n peut aussi crire la directi&e #ption E$plicit au dbut de la section des dclarations d1un module. Les t%pes de variables 0n recommande ortement de dclarer les &ariables utilises dans un programme.
2.$$ II2.. B. B(3 45678648

Integer : de &'( )*+ '( )*) Long : de &( ,-) -+' *-+ ( ,-) -+' *-) Single : dcimau% en simple prcision : 9: c!i res signi icati s Double : dcimau% en double prcision : plus de 977 c!i res signi icati s ; String : de . */ /'/ octets Variant : de t#pe nombre , te%te ou ob<et selon l"a ectation aite. Boolean :de t#pe logi'ue

Syntaxe de dclaration : Dim <NomVariable> As <Type> ,our la lisibilit du code on peut les commenter apr=s une apostrop!e ( 0 ) Exemples : Dim Taux As Single Taux de la TVA Dim Rponse As String Mot propos par le joueur ,our &iter tout probl=me il est pr rable d1initialiser les &ariables dclares. Compteur = 0 Taux = 20,6 *e langage Basic utilise ) t%pes de donnes dont les plus utiliss sont le t#pe 1tring (c!a>ne de caract=res), le t#pe 2nteger (entier relati ) et le t#pe 1ingle (dcimal). Porte d'une variable

$i une &ariable est dclare au dbut de la procdure 'ui la manipule (3im ou Private) elle n1est alors &alide 'ue pour cette procdure. *"e%istence et la &aleur de la &ariable disparaissent a&ec l"instruction End 1ub. )oute r rence cette &ariable en de!ors de cette procdure pro&o'uera une erreur de compilation. $i une &ariable est dclare dans la section des dclarations d1un module elle est &alide dans toutes les procdures du module. ?ne &ariable peut aussi tre dclare Public ou 4lobal et sera alors &alide pour toute l1application. .%emple : Global MotCommun As String

2.$$ II2..

B. B(3

45678648

Les tableaux et les boucles


1tructure d5un tableau 0n a sou&ent besoin de tra&ailler sur un ensemble de donnes. Un exemple : les tempratures mo#ennes des 4@ mois de l"anne. 0n pourrait dclarer ,( variables identiques : Dim Temp1, Temp2, Temp3, Temp4, , Temp12 a Single

0n dispose d"une structure de donnes appele 6ableau 'ui permet de conser&er dans une seule /entit/ plusieurs &aleurs de mme t#pe. *e nom du tableau est une &ariable 'u"il est recommand de pr i%er par )ab. *e nombre de &aleurs de t#pes identi'ues est dclarer entre parent!=ses. Exemple de dclaration dun tableau une dimension : Dim TabTemp!12" As Single Numro Temprature 1 6 2 5,5 3 7 4 11,5 5 15

*"accs la case numro 9 se ait par TabTemp!3" 'ui &aut ).

Exemple de dclaration dun tableau deux dimensions : Dim Tab#a$#in!1 to 2,6% to &0" As String Numro 1 2 65 A a 66 B b 67 C c 89 Y y 90 Z z

*"accs la case 'ui contient le petit /c/se grAce la s#nta%e sui&ante : Tab#a$#in!2,6'" (ui )aut *+*.

2.$$ II2..

B. B(3

45678648

oucles en nombre dfini Cette boucle est utilise lor'u1on conna>t l1a&ance le nombre de ois 'u1elle sera parcourue. Syntaxe : For Compteur = Dbut To Fin ,Step IncrmentInstructions , ... Exit For,InstructionsNext ,Compteur*e test est e ectu au dbut de la boucle. *a &ariable numri'ue Compteur est incrmente c!a'ue in de boucle du nombre indi'u par l1incrment. $i l1incrment n1est pas spci i il est i% ,. $i la &aleur de Fin est in rieure la &aleur de 3but l1incrment est ngati . *a &aleur de Compteur peut tre utilise (par e%emple pour numroter le passage dans la boucle) mais ne doit pas tre modi ie dans le corps de la boucle.

Exemple : .or i = 1 To %0 TabInitial!i" = 0 / Initiali ation 0e +1a(ue +a e 2 0 3ext i & Remplissage d'un tableau ,our remplir un tableau on le bala#e a&ec une boucle For 7 6o 7 !e$t (car le nombre de cases est connu l"a&ance). Exemple 1 : Dim TabTemp!12" 4 Dim Compteur 4 Single

Integer

.or Compteur = 1 To 12 TabTemp!Compteur"=Input5ox!*Temp6rature 37 * 8 Compteur" 3ext Compteur

2.$$ II2..

B. B(3

45678648

Exemple 2 : Dim TabTirageLoto!6" 4 Dim Compteur 4 Integer Integer

.or Compteur = 1 To 6 TabTirageLoto !Compteur"=9n0 : 4; < 1 3ext Compteur

Les boucles 8

$i le programme doit e%cuter un bloc d"instructions en nombre prd ini on utilise la boucle .or To 3ext= Exemple : .or i = 1 To 4& TabLoto!i" = i /+1a(ue +a e +ontient 3ext i $i le nombre de passages dans la boucle est inconnu au dpart, mais dpend d"une condition dont la ralisation est impr&isible cette structure n"est pas adapte. Exemple 1 : 2emander le mot de passe tant que la rponse n"est pas le bon mot de passe. 2emander le mot de passe 9usqu': ce que la rponse soit le bon mot de passe. Exemple 2 : 2emander la saisie d"une note tant que la rponse n"est pas un nombre entre 7 et @7. 2emander la saisie d"une note 9usqu': ce que la rponse soit un nombre entre 7 et @7. oucle tant que Syntaxe premire version : Do >1ile Condition Instructions ,=== ?xit Do,InstructionsLoop on num6ro

2.$$ II2..

B. B(3

45678648

*a condition est ici teste au dbut c"est dire l1entre de la boucle. (&ec >1ile (tant 'ue) la boucle est rpte tant que la condition est vraie. $i la condition n1est pas &raie au dpart les instructions de la boucle ne sont pas e%cutes. Exemple : Do >1ile #ot@ropo 6 AB #otDe@a e e*"

#ot@ropo 6 = Input5ox!*DonneC )otre mot 0e pa Loop

Cela prsuppose Cot,ropos initialis par une &aleur autre 'ue Cot2e,asse (par e%emple la &aleur par d aut //).

Syntaxe deuxime version : Do Instructions ,=== ?xit Do,InstructionsLoop >1ile Condition *a condition est alors teste : la fin de la boucle. (&ec >1ile (tant 'ue) la boucle est rpte tant que la condition est vraie. *es instructions de la boucle sont donc e%cutes au moins une ois. Exemple : Do #ot@ropo 6 = Input5ox!*DonneC )otre mot 0e pa Loop >1ile #ot@ropo 6 AB #otDe@a e e*"

Cet e%emple ne prsuppose aucune initialisation de Cot,ropos.

2.$$ II2..

B. B(3

45678648

Les boucles 6ant que ; 9usqu5: Syntaxe premire version : Do D1ile Condition Instructions ,=== ?xit Do,InstructionsLoop *a condition est ici teste au dbut c"est dire l1entre de la boucle. (&ec D1ile (tant 'ue) la boucle est rpte tant que la condition n1est pas vrifie. $i la condition est &raie d=s le dpart les instructions de la boucle ne sont pas e%cutes. Exemple : Do D1ile #ot@ropo 6 AB #otDe@a e e*"

#ot@ropo 6 = Input5ox!*DonneC )otre mot 0e pa Loop

Cela prsuppose Cot,ropos initialis par une &aleur autre 'ue Cot2e,asse (par e%emple la &aleur par d aut : //).

Syntaxe deuxime version : Do Instructions ,=== ?xit Do,InstructionsLoop Entil Condition *a condition est alors teste : la fin de la boucle. *es instructions de la boucle sont donc e%cutes au moins une ois.

2.$$ II2..

B. B(3

45678648

(&ec ?ntil (<us'u") la boucle est rpte 9usqu': ce que la condition soit vraie. Exemple : Do #ot@ropo 6 = Input5ox!*DonneC )otre mot 0e pa Loop Entil #ot@ropo 6 = #otDe@a e e*"

Cet e%emple ne prsuppose aucune initialisation de Cot,ropos.

oucle For 7 Each 7 !e$t C1est une e%tension de la boucle Eor ... )o Fe%t. .lle est utilise pour parcourir les collections(ensembles). Syntaxe : .or ?a+1 Elment In Ensemble Instructions , === ?xit .or,Instructions3ext ,ElmentEnsemble est le plus sou&ent un tableau. Exemple : Dim TabFa ar0!100" 4 Dim Cellule 4 Dim 96pon e 4 9an0omiCe .or ?a+1 Cellule In TabFa ar0 Cellule = 9n0 : 100 < 1 3ext .or ?a+1 Cellule In TabFa ar0 96pon e = 96pon e 8 Cellule 8 * 3ext # g5ox !96pon e" * Integer String Integer

2.$$ II2..

B. B(3

45678648

Traitement des chanes de caractres


!cessit de ces traitements *es donnes manipules par un programme sont essentiellement de t#pe numrique ou cha<ne de caract=res. $i les t#pes numri'ues sont tr=s utiliss par les programmes scienti i'ues, le t#pe c!a>ne est incontournable pour des tudiants en *ettres et $ciences 3umaines. ?ne &ariable c!a>ne de caract=res se dclare de t#pe $tring. Exemple 1 : Dim #ot@ropo 6 4 String

*a &ariable contient alors une c!a>ne de longueur variable selon l"a ectation 'ui sui&ra.

Exemple 2 : Dim Lettre 4 String : 1

*a &ariable contient alors une c!a>ne de longueur 4 c"est dire un seul caract=re. Exemple : e 4 String : 30

Dim 40re

*a &ariable contient alors une c!a>ne de longueur '.. $i l"on n"a ecte 'ue 4G caract=res dans une telle c!a>ne, le reste est rempli d"espaces. $i l"on a ecte plus de 97 caract=res le surplus est tron'u.

Comparaison des cha<nes de caract=res

!on"ueur d#une cha$ne : *a longueur d"une c!a>ne est donne par la onction Len. Exemple : @1ra e = *Vi ual 5a i+G *a onction Len(Phrase) retournera la &aleur ,(. Il est &ident 'ue si deu% c!a>nes de caract=res n"ont pas la mme longueur elles sont di rentes. ,ar contre deu% c!a>nes de mme longueur ne sont pas orcment identi'ues.

2.$$ II2..

B. B(3

45678648

47

%omparaison binaire : 0n compare deu% c!a>nes par la onction 1trComp. .lle ren&oie la &aleur numri'ue . si les deu% c!a>nes sont rigoureusement identi'ues et la &aleur numri'ue , si les c!a>nes di =rent mme par un seul octet. Exemple : @1ra e1 = *Vi ual 5a i+=* @1ra e2 = *Vi ual ba i+=* @1ra e3 = * Vi ual 5a i+=G *a onction StrComp(Phrase1,Phrase ) retournera la &aleur *a onction StrComp(Phrase1,Phrase!) retournera la &aleur Recherche d'une cha<ne de caract=res

*a onction In$tr permet de rec!erc!er si une c!a>ne de caract=res e$iste l"intrieur d"une autre c!a>ne de caract=res. $i c1est le cas, elle retourne la position de la premi=re occurrence de la c!a>ne rec!erc!e. Syntaxe : InStr!C1aHne1, C1aHne2" Cha"ne1 est la c!a>ne de caract=res traiter (sur la'uelle porte la rec!erc!e). Cha"ne Exemple : C1aHne1 = *Vi ual 5a i+ et C1aHne2 = *5a i+* C1aHne3 = *5a i+ * *a onction #nStr(Cha"ne1,Cha"ne ) retournera la &aleur + *a onction #nStr(Cha"ne1,Cha"ne!) retournera la &aleur .. e Ion+tion * est la c!a>ne de caract=res rec!erc!e dans Cha"ne1.

*a onction ?case met tout le te%te en ma<uscules et permet de rec!erc!er indpendamment une lettre minuscule ou ma<uscule. *a onction *case met tout le te%te en minuscules et permet

E$traction d'une cha<ne de caract=res

*a onction -ig!t donne la partie droite d"une c!a>ne de caract=res. *e nombre de caract=res de cette partie doit tre prcis.

2.$$ II2..

B. B(3

45678648

44

Exemple : C1aHne = *Vi ual 5a i+ et e Ion+tion *

*a onction $ight(Cha"ne,%) retournera la &aleur /tion /

*a onction *e t donne la partie gauche d"une c!a>ne de caract=res. *e nombre de caract=res de cette partie doit tre prcis. Exemple : C1aHne = *Vi ual 5a i+ et e Ion+tion *

*a onction Le&t(Cha"ne,%) retournera la &aleur /Vi ua/

*a onction Cid e%trait une partie d"une c!a>ne de caract=res. *e nombre de caract=res de cette partie doit tre prcis ainsi 'ue la position du premier caract=re e%trait. Syntaxe : #i0!Texte, @o ition, 3ombre" Texte est la c!a>ne de caract=re traiter. Position est la position du caract=re partir du'uel il aut e%traire une sous+c!a>ne de caract=res. Nom're est le nombre de caract=res e%traire. Exemple : C1aHne = *Vi ual 5a i+ et e Ion+tion *

*a onction (i)(Cha"ne,*,%) retournera la &aleur /5a i+/ *a onction (i)(Cha"ne, 1) retournera la &aleur /Ion+tion / >pplications *a plupart des probl=mes sur les c!a>nes de caract=res se traitent l"aide des onctions ci+ dessus. *eur maniement est asseH dlicat et les rsultats 'uel'ue ois di iciles pr&oir. $eule la prati'ue de leur programmation &ous permettra d"en &ri ier l"e icacit.

2.$$ II2..

B. B(3

45678648

4@

Exemple1 : Ce programme rec!erc!e un mot dans une c!a>ne de caract=res : Dim C1aine, #ot 4 Dim @o ition 4 String

Integer e Ion+tion =*

C1aine = *Vi ual 5a i+ et

#ot = Input5ox!*Taper le mot 2 re+1er+1er*" @o ition = InStr!C1aine, #ot" II @o ition = 0 T1en # g5ox *Le mot J* 8 #ot 8 *J* 8 * nJa pa ?l e # g5ox!*Le mot J* 8 #ot 8 *J*8* a 6t6 trou)6 2 la po ition *L 8 @o ition" ?n0 II 6t6 introu)6 K*"

Exemple2 : Ce programme compte le nombre d"espaces dans une p!rase. Dim @1ra e, Cara+tMre 4 String Integer

Dim Compteur, Longueur, i 4

@1ra e = Input5ox!*TapeC )otre p1ra e*" Longueur = Len !@1ra e" .or i = 1 To Longueur Cara+tMre = #i0!@1ra e, i, 1" II Cara+tMre = * * T1en Compteur = Compteur < 1 3ext i # g5ox!*Cette p1ra e +ontient * 8 Compteur 8 * e pa+e =*" Fonctions de date et d'heure

*a onction 3ate donne la date s#st=me. Date retourne la date du <our courant.

*a onction 6ime donne l"!eure s#st=me.

2.$$ II2..

B. B(3

45678648

49

Time retourne l1!eure courante.

*a onction 3a%?@ donne le numro du <our dans le mois. Da+(Date) retourne le numro du <our du mois courant (compris entre 4 et 94)a &aleur +

*a onction Month?@ donne le numro du mois dans l"anne. (onth(Date) retournera le numro du mois courant( compris entre 4 et 4@). .% : ,,A

*a onction Bear?@ donne le numro de l"anne. ,ear(Date) retournera le numro de l1anne courante. .% : (...A

*a onction Cee"3a%?@ donne le numro du <our dans la semaine sac!ant 'ue le dimanc!e porte le numro 4. -ee.Da+(Date) retournera le numro d1au<ourd"!ui (compris entre 4 et 5) .

*a onction Format3ate6ime?date D; constante vbE@ donne -etourne une e%pression ormate sous orme de date ou d1!eure. *es croc!ets s. #F constante vb peut prendre les &aleurs sui&antes 8 D; v4eneral3ate ou vbLong3ate; vb1hort3ate; vb1hort6ime; 7E

>utres fonctions ,@ 4et 2clare le nom, les arguments et le code ormant le corps d"une procdure Propert%, 'ui lit la &aleur d"une proprit. Syntaxe: IPublic J Private J FriendK I1taticK Propert% 4et &om'roprit I?ar"list@K I>s typeK IinstructionsK IE$it Propert%K IinstructionsK End Propert%

@) Let : 2clare le nom, les arguments et le code ormant le corps d"une procdure Propert% Let, 'ui attribue une &aleur une proprit. 1%nta$e IPublic J Private J FriendK I1taticK Propert% Let name ?Iar"list;K value@ IinstructionsK IE$it Propert%K IinstructionsK End Propert%
B. B(3

2.$$ II2..

45678648

48

.%emple
@ri)ate 0bl5alan+e 4 Double Double @ubli+ @ropertN Oet 5alan+e!" 4 5alan+e = 0bl5alan+e ?n0 @ropertN

@ropertN Let 5alan+e!0bl3eD5alan+e 4 0bl5alan+e = 0bl3eD5alan+e ?n0 @ropertN

Double"

-@ Call %!ame : cette onction permet d1obtenir ou de d inir une proprit ou d1in&o'uer une mt!ode pendant l1e%cution. $#nta%e : Call %!ame(#b9et; !omProcdure;Call6%pe) 0L : + + + Exemple : + (btenir le contenu de la proprit &om)roupe de lob*et ob*)roupe : -esulat N CallB#Fame(ob<groupe, OFomMroupeP, VbMet) + +,inir la proprit &om)roupe de lob*et ob*)roupe : CallB#Fame(ob<groupe, 0b<Eield.Fame, Vb*et) + .%cuter la mt!ode /Initialisation0b</ de lob*et ob*)roupe : CallB#Fame(ob<groupe, OInitialisation0b<P, Vbmet!od) 0b<et(ob<et &ariant) est le nom de l1ob<et sur le'uel on sou!aite e%cuter la onction Call %!ame. Fom,rocdure (&ariant) dsigne le nom de la proprit ou de la mt!ode de l1ob<et . Call)#pe est une constante 'ui reprsente le t#pe de procdure appele(&bMet, Vb*et,&bCet!od).

Procdures et fonctions
Visual Basic permet de d inir et d1utiliser trois t#pes de sous+routines : Les procdures proprement dites 8 ?ne procdure est un ensemble d"instructions 'ui traite une tAc!e donne. .lle dbute par le mot rser& 1ub et se termine par End 1ub.
2.$$ II2.. B. B(3 45678648

4B

Exemple de procdure vnementielle : Pri/ate S0' +m0PuitterLCli+Q En) En) S0' $i un bloc d"instructions doit tre utilis plusieurs endroits (par e%emple dans plusieurs procdures &nementielles) il est pr rable d"en aire une procdure publique 'ui sera pourra tre appele dans n1importe 'uel autre sous+programme du module.

Exemple de procdure publi-ue : @ubli+ Sub Sai ie3ote!" Do 3ote = Input5ox!*TapeC une note*" Loop Entil 3oteB=0 4n0 3oteA=20 ?n0 Sub ,our utiliser cette procdure il su ira de l"appeler par son nom : Sai ie3ote Les fonctions 8 .lles sont comparables au% procdures 'uant leur mode d1criture. *a di rence ce 'u1une onction dbute par le mot rser& Function et se termine par End Function. 2e plus, elle a un t#pe et peut retourner une valeur contenue dans le nom mme de la onction. Cette &aleur pourra tre utilise par la suite dans une autre e%pression. Exemple de ,onction : @ubli+ .un+tion Carr6!x" 4 Carr6 = x : x ?n0 .un+tion ,ar e%emple Carr6!'" retournera la &aleur -G. Les procdures Property : .lles ser&ent d inir les proprits d1un ob<et par e%emple dans un module, dans une classe ou dans une euille. .lles sont dlimite par les mots cls Propert% et End Propert%A Exemple de proprit : Single

2.$$ II2..

B. B(3

45678648

4D

,ublic ,ropert# *et Fom(B#Val parametre (s $tring) m&arFom N parametre .nd ,ropert# -emar'ues : %Val %Ref(&aleur par d aut). Indi'ue 'ue l"argument est pass par &aleur. Indi'ue 'ue l"argument est pass par r rence

2nterface de dveloppement de V21H>L >12C


L'diteur de code de Visual asic

Compos de 9 parties : 4. *a partie suprieure est la Hone des dclarations (spare du reste par un trait !oriHontal). 0n # place les options et les dclarations de &ariables publi'ues. Exemple : Rption ?xpli+it @ubli+ 3omSoueur 4 @ri)ate @renomSour a String String

@. *a partie sui&ante est la Hone des procdures publiques (c!a'ue procdure est spare des autres par un trait !oriHontal). 0n # place les procdures publi'ues utilisables par toutes les autresprocdures du module. Exemple : @ubli+ .un+tion Carr6!x" 4 Carr6 = x : x ?n0 .un+tion 9. .n in la partie sui&ante est la Hone des procdures vnementielles (c!a'ue procdure est spare des autres par un trait !oriHontal). Exemple : @ri)ate Sub +m0Cal+ulerLCli+Q!" ?n0 Sub Single

2.$$ II2..

B. B(3

45678648

45

>lgorithmique Quand on a un probl=me rsoudre par programmation on doit tout d"abord trou&er une stratgie pour # par&enir. Celle+ci doit bien sRr tre /programmable/ dans un langage de programmation. Il aut donc bien conna>tre les caractristi'ues et les possibilits de ce langage. *e plus sou&ent on crit un algorithme en ranSais (c"est la stratgie adopte) 'ue l"on pourra ensuite coder dans le langage de programmation c!oisi. Exemple1 8 2terminer la carte la plus orte sur un ensemble de D cartes poses l"endroit sur la table. *a rsolution de ce probl=me par un tre !umain ou par un programme in ormati'ue est compl=tement di rente. >lgorithme en franIais ,rendre la 4ere carte. Foter sa !auteur dans une &ariable. 2e la @eme la derni=re : ,rendre une carte. $i sa !auteur est suprieure celle note dans la &ariable elle de&ient la plus orte -ecommencer

Exemple2 8 )rier en ordre dcroissant les nombre contenus dans un tableau de 477 entiers. 2i rentes stratgies sont notre disposition. *a plus classi'ue est celle du tri : bulles. Il s"agit de comparer c!a'ue nombre son sui&ant et de mettre en premier le plus grand des deu%. 0n recommence ainsi <us'u" ce 'ue plus aucune permutation ne soit e ectue. (lors le tableau est tri. >lgorithme en franIais 2but Eaire ,ermut 7 ,our i N 4 :: $i Case i T Case iU4 alors (u%iliaire Case i Case i Case iU4
2.$$ II2.. B. B(3 45678648

4G

Case iU4 (u%iliaire ,ermut 4 Ein de $i Fou&eau i -ecommencer tant 'ue ,ermut N 4 Ein

Exemple d'utilisation des mthodes Execute, Requery et Clear


L'exemple ci-dessous dcrit la mthode Execute excute partir d'un objet Command et d'un objet Connection. l utilise !alement la mthode Requery pour rcuprer les donnes en cours dans un jeu d'enre!istrements, puis la mthode Clear pour supprimer le contenu de la collection Errors. Les procdures ExecuteCommand et "rint#utput sont ncessaires l'excution de cette procdure. @ubli+ Sub ?xe+uteT!" Dim Dim Dim Dim Dim Dim Dim trSPLC1ange 4 String trSPL9e tore 4 String trCnn 4 String +nn1 4 4DRD5=Conne+tion +m0C1ange 4 4DRD5=Comman0 r tTitle 4 4DRD5=9e+or0 et errLoop 4 4DRD5=?rror

J D6Iinit 0eux in tru+tion SPL 2 ex6+uter en tant (ue texte 0e +omman0e= trSPLC1ange = *E@D4T? Title S?T TNpe = * 8 L *J elIL1elpJ >F?9? TNpe = Jp N+1ologNJ* trSPL9e tore = *E@D4T? Title S?T TNpe = * 8 L *Jp N+1ologNJ >F?9? TNpe = J elIL1elpJ* J Ru)re une +onnexion= trCnn = *@ro)i0er= (lole0bU* 8 L *Data Sour+e= r)UInitial Catalog=pub UE er I0= aU@a Dor0=U * Set +nn1 = 3eD 4DRD5=Conne+tion +nn1=Rpen trCnn J Cr6e un ob$et 0e +omman0e= Set +m0C1ange = 3eD 4DRD5=Comman0 Set +m0C1ange=4+ti)eConne+tion = +nn1 +m0C1ange=Comman0Text = trSPLC1ange J Ru)re la table 0e titre = Set r tTitle = 3eD 4DRD5=9e+or0 et r tTitle =Rpen *title *, +nn1, , , a0Cm0Table J Imprime lJ6tat 0e 0onn6e initiale = Debug=@rint L *Data in Title table beIore exe+uting t1e (uerN* @rintRutput r tTitle J Supprime le autre erreur 0e la +olle+tion ?rror = +nn1=?rror =Clear J 4ppelle la ou Vroutine ?xe+uteComman0 pour J ex6+uter la +omman0e +m0C1ange= ?xe+uteComman0 +m0C1ange, r tTitle

2.$$ II2..

B. B(3

45678648

4: J Imprime lJ6tat 0e nou)elle 0onn6e = Debug=@rint L *Data in Title table aIter exe+uting t1e (uerN* @rintRutput r tTitle J Etili e la m6t1o0e 0Jex6+ution 0e lJob$et Conne+tion pour J ex6+uter 0e in tru+tion SPL 0e re tauration 0e 0onn6e = J Inter+epte le erreur , en )6riIiant la +olle+tion ?rror i n6+e Rn ?rror OoTo ?rrL?xe+ute +nn1=?xe+ute trSPL9e tore, , a0?xe+ute3o9e+or0 Rn ?rror OoTo 0 J 96+upMre le 0onn6e en +our J le $eu 0Jenregi trement = r tTitle =9e(uerN en interrogeant 0e nou)eau

aire=

J Imprime lJ6tat 0e 0onn6e re taur6e = Debug=@rint *Data aIter exe+uting t1e (uerN * 8 L *to re tore t1e original inIormation* @rintRutput r tTitle r tTitle =Clo e +nn1=Clo e ?xit Sub ?rrL?xe+uteW J 4)ertit lJutili ateur 0e 6)entuelle erreur pou)ant r6 ulter 0e J lJex6+ution 0e la re(uXte= II ?rror =Count B 0 T1en .or ?a+1 errLoop In ?rror # g5ox *?rror numberW * 8 errLoop=3umber 8 )bCr 8 L errLoop=De +ription 3ext errLoop ?n0 II 9e ume 3ext ?n0 Sub @ubli+ Sub ?xe+uteComman0!+m0Temp 4 4DRD5=Comman0, L r tTemp 4 4DRD5=9e+or0 et" Dim errLoop 4 ?rror J ?x6+ute lJob$et Comman0 p6+iIi6= Inter+epte le J erreur , en )6riIiant la +olle+tion ?rror i n6+e Rn ?rror OoTo ?rrL?xe+ute +m0Temp=?xe+ute Rn ?rror OoTo 0 J 96+upMre le 0onn6e en +our J le $eu 0Jenregi trement = r tTemp=9e(uerN

aire=

en interrogeant 0e nou)eau

?xit Sub ?rrL?xe+uteW J 4)ertit lJutili ateur 0e 6)entuelle erreur pou)ant r6 ulter 0e J lJex6+ution 0e la re(uXte= II ?rror =Count B 0 T1en .or ?a+1 errLoop In ?rror # g5ox *?rror numberW * 8 errLoop=3umber 8 )bCr 8 L errLoop=De +ription 3ext errLoop ?n0 II 9e ume 3ext ?n0 Sub

2.$$ II2..

B. B(3

45678648

@7

@ubli+ Sub @rintRutput!r tTemp 4 4DRD5=9e+or0 et" J 96pertorie le 9e+or0 et= Do >1ile 3ot r tTemp=?R. Debug=@rint * * 8 r tTempKTitle 8 L *, * 8 r tTempKTNpe r tTemp=#o)e3ext Loop ?n0 Sub Version VBScript $oici le m%me exemple, crit en $&'cript pour pou(oir %tre utilis dans une pa!e )'". "our (isualiser cet exemple *onctionnel, (ous de(e+ crer un ,'- appel )d(.or/s l'aide de la source de donnes )d(.or/s.mdb installe a(ec ' et situe dans C01 net"ub1)'"'amp1)d(.or/s. l s'a!it d'un *ichier de base de donnes 2icroso*t )ccess. 3tilise+ Find pour retrou(er le *ichier )do(bs.inc et place+-le dans le rpertoire que (ous souhaite+ utiliser. Coupe+ et colle+ le code ci-dessous dans le &loc-notes ou un autre diteur de texte, puis sau(e!arde+-le sous le nom Execute.asp. $ous pou(e+ (isualiser le rsultat sous n'importe quel na(i!ateur client. AKVV YIn+lu0e Iile=*4DRV5S=I3C* VVB AFT#LBAF?4DB ATITL?B4DR ?xe+ute #et1o0AZTITL?BAZF?4DB A5RD[B A.R3T .4C?=*#S S43S S?9I.* SI\?=2B ACenterBAF3B4DR ?xe+ute #et1o0AZF3BAF4B9e+or0 et 9etrie)e0 E ing Conne+tion Rb$e+tAZF4B AT45L? >IDTF=600 5R9D?9=0B ATD V4LIO3=TR@ 4LIO3=L?.T CRLS@43=3BA.R3T SI\?=2B AKVVV 9e+or0 et retrie)e0 u ing ?xe+ute met1o0 oI Conne+tion an0 Comman0 Rb$e+t VVB A] Set R5S0bConne+tion = Ser)er=CreateRb$e+t!*4DRD5=Conne+tion*" R5S0bConne+tion=Rpen *40)>orQ * SPLPuerN = *S?L?CT : .9R# Cu tomer * J@remier 9e+or0 et 9SCu tomerLi t Set 9SCu tomerLi t = R5S0bConne+tion=?xe+ute!SPLPuerN" Set R5S0bComman0 = Ser)er=CreateRb$e+t!*4DRD5=Comman0*" R5S0bComman0=4+ti)eConne+tion = R5S0bConne+tion SPLPuerN2 = *S?L?CT : .rom @ro0u+t * R5S0bComman0=Comman0Text = SPLPuerN2 Set 9 @ro0u+tLi t = R5S0bComman0=?xe+ute ]B AT45L? CRLS@43=; C?LL@4DDI3O=% 5R9D?9=0B AKVV 5?OI3 +olumn 1ea0er roD Ior Cu tomer TableVVB AT9BATD 4LIO3=C?3T?9 5OCRLR9=*Y00;0;0*B A.R3T ST[L?=*49I4L 3499R>* CRLR9=*YIIIIII* SI\?=1BCompanN 3ameAZ.R3TB AZTDB ATD 4LIO3=C?3T?9 5OCRLR9=*Y00;0;0*B A.R3T ST[L?=*49I4L 3499R>* CRLR9=*YIIIIII* SI\?=1BConta+t 3ameAZ.R3TB AZTDB ATD 4LIO3=C?3T?9 >IDTF=1%0 5OCRLR9=*Y00;0;0*B A.R3T ST[L?=*49I4L 3499R>* CRLR9=*YIIIIII* SI\?=1B?Vmail a00re AZ.R3TB AZTDB ATD 4LIO3=C?3T?9 5OCRLR9=*Y00;0;0*B A.R3T ST[L?=*49I4L 3499R>* CRLR9=*YIIIIII* SI\?=1BCitNAZ.R3TB AZTDB 2.$$ II2.. B. B(3 45678648

@4 ATD 4LIO3=C?3T?9 5OCRLR9=*Y00;0;0*B A.R3T ST[L?=*49I4L 3499R>* CRLR9=*YIIIIII* SI\?=1BStateZ@ro)in+eAZ.R3TB AZTDBAZT9B AKVVDi plaN 4DR Data Irom Cu tomer TableVVB A] Do >1ile 3ot 9S+u tomerLi t=?R. ]B AT9B ATD 5OCRLR9=*I'eI0e* 4LIO3=C?3T?9B A.R3T ST[L?=*49I4L 3499R>* SI\?=1B A]= 9SCu tomerLi t!*CompanN3ame*"]B AZ.R3TBAZTDB ATD 5OCRLR9=*I'eI0e* 4LIO3=C?3T?9B A.R3T ST[L?=*49I4L 3499R>* SI\?=1B A]= 9S+u tomerLi t!*Conta+tLa t3ame*" 8 *, * ]B A]= 9S+u tomerLi t!*Conta+t.ir t3ame*" ]B AZ.R3TBAZTDB ATD 5OCRLR9=*I'eI0e* 4LIO3=C?3T?9B A.R3T ST[L?=*49I4L 3499R>* SI\?=1B A]= 9S+u tomerLi t!*Conta+tLa t3ame*"]B AZ.R3TBAZTDB ATD 5OCRLR9=*I'eI0e* 4LIO3=C?3T?9B A.R3T ST[L?=*49I4L 3499R>* SI\?=1B A]= 9S+u tomerLi t!*CitN*"]B AZ.R3TBAZTDB ATD 5OCRLR9=*I'eI0e* 4LIO3=C?3T?9B A.R3T ST[L?=*49I4L 3499R>* SI\?=1B A]= 9S+u tomerLi t!*StateRr@ro)in+e*"]B AZ.R3TBAZTDB AZT9B AKV3ext 9oD = 9e+or0 Loop an0 a00 to 1tml tableVVB A] 9S+u tomerLi t=#o)e3ext Loop 9S+u tomerLi t=Clo e ]B AZT45L?BAF9B AF4B9e+or0 et 9etrie)e0 E ing Comman0 Rb$e+tAZF4B AT45L? CRLS@43=; C?LL@4DDI3O=% 5R9D?9=0B AKVV 5?OI3 +olumn 1ea0er roD Ior @ro0u+t Li t TableVVB AT9BATD 4LIO3=C?3T?9 5OCRLR9=*Y;00000*B A.R3T ST[L?=*49I4L 3499R>* CRLR9=*YIIIIII* SI\?=1B@ro0u+t TNpeAZ.R3TB AZTDB ATD 4LIO3=C?3T?9 5OCRLR9=*Y;00000*B A.R3T ST[L?=*49I4L 3499R>* CRLR9=*YIIIIII* SI\?=1B@ro0u+t 3ameAZ.R3TB AZTDB ATD 4LIO3=C?3T?9 >IDTF=3%0 5OCRLR9=*Y;00000*B A.R3T ST[L?=*49I4L 3499R>* CRLR9=*YIIIIII* SI\?=1B@ro0u+t De +riptionAZ.R3TB AZTDB ATD 4LIO3=C?3T?9 5OCRLR9=*Y;00000*B A.R3T ST[L?=*49I4L 3499R>* CRLR9=*YIIIIII* SI\?=1BEnit @ri+eAZ.R3TB AZTDBAZT9B AKVV Di plaN 4DR Data @ro0u+t Li tVVB A] Do >1ile 3ot 9 @ro0u+tLi t=?R. ]B AT9B ATD 5OCRLR9=*I'eI0e* 4LIO3=C?3T?9B

2.$$ II2..

B. B(3

45678648

@@ A.R3T ST[L?=*49I4L 3499R>* SI\?=1B A]= 9 @ro0u+tLi t!*@ro0u+tTNpe*"]B AZ.R3TBAZTDB ATD 5OCRLR9=*I'eI0e* 4LIO3=C?3T?9B A.R3T ST[L?=*49I4L 3499R>* SI\?=1B A]= 9 @ro0u+tLi t!*@ro0u+t3ame*"]B AZ.R3TBAZTDB ATD 5OCRLR9=*I'eI0e* 4LIO3=C?3T?9B A.R3T ST[L?=*49I4L 3499R>* SI\?=1B A]= 9 @ro0u+tLi t!*@ro0u+tDe +ription*"]B AZ.R3TBAZTDB ATD 5OCRLR9=*I'eI0e* 4LIO3=C?3T?9B A.R3T ST[L?=*49I4L 3499R>* SI\?=1B A]= 9 @ro0u+tLi t!*Enit@ri+e*"]B AZ.R3TBAZTDB AKVV @ro+1aine ligne = ?nregi trement VVB A] 9 @ro0u+tLi t=#o)e3ext Loop JSupprime 0e ob$et 0e la m6moire pour lib6rer 0e 9 @ro0u+tLi t=Clo e R5S0bConne+tion=Clo e Set RbS0bComman0 = 3ot1ing Set 9 @ro0u+tLi t = 3ot1ing Set R5S0bConne+tion = 3ot1ing ]B AZT45L?BAZ.R3TBAZCenterBAZ5RD[BAZFT#LB

re

our+e

2.$$ II2..

B. B(3

45678648