Académique Documents
Professionnel Documents
Culture Documents
Visual Basic
.Net
1/135
Sommaire
1. PRESENTATION ................................................................................................................ 7
1.1 HISTORIQUE....................................................................................................................... 7
1.2 NOUVEAUTES .................................................................................................................... 7
1.3 INSTALLATION ................................................................................................................... 7
2. ENVIRONNEMENT VISUAL STUDIO ........................................................................... 8
2.1 LINTERFACE ..................................................................................................................... 8
2.2 FENETRES DEXPLORATION ............................................................................................... 9
2.2.1 Explorateur de serveur.............................................................................................. 9
2.2.2 Explorateur de Solutions ........................................................................................... 9
2.2.3 Laffichage de classes ............................................................................................. 10
2.2.4 Fentre de proprits .............................................................................................. 11
2.2.5 Laide dynamique .................................................................................................... 11
2.2.6 La liste des tches ................................................................................................... 11
3. GESTION DE PROJETS .................................................................................................. 11
3.1 LES SOLUTIONS ................................................................................................................ 12
3.2 CREATION DUN PROJET................................................................................................... 12
3.3 CONFIGURATION DUN PROJET ........................................................................................ 12
4. BASES DU LANGAGE ..................................................................................................... 14
4.1 STRUCTURE DU CODE ...................................................................................................... 14
4.1.1 Formulaire .............................................................................................................. 14
4.1.2 Module..................................................................................................................... 14
4.1.3 Les commentaires .................................................................................................... 15
4.1.4 Les rgions .............................................................................................................. 15
4.2 LES VARIABLES ............................................................................................................... 16
4.2.1 Types de variables ................................................................................................... 16
4.2.1.1 Types numriques ............................................................................................ 16
4.2.1.2 Types chane de caractre................................................................................. 16
4.2.1.3 Autres types...................................................................................................... 17
4.2.2 Dclaration de variables ......................................................................................... 17
4.2.3 Porte et visibilit des variables ............................................................................. 17
4.2.3.1 Porte des variables .......................................................................................... 17
4.2.3.1 Visibilit des variables ..................................................................................... 18
4.2.4 Les tableaux............................................................................................................. 18
4.2.5 Les constantes ......................................................................................................... 19
4.2.6 Les numrations..................................................................................................... 19
4.3 LES OPERATEURS ............................................................................................................. 20
4.3.1 Oprateur daffectation........................................................................................... 20
4.3.2 Oprateurs Arithmtiques ....................................................................................... 20
4.3.3 Oprateurs de comparaison .................................................................................... 20
4.3.4 Oprateurs de concatnation .................................................................................. 21
4.3.5 Oprateurs logiques ................................................................................................ 21
4.4 LES STRUCTURES DE CONTROLE ...................................................................................... 22
4.4.1 Les conditions.......................................................................................................... 22
4.4.2 Structures conditionnelles ....................................................................................... 22
2/135
3/135
4/135
6.1.3.1 Ouverture.......................................................................................................... 79
6.1.3.2 Enregistrement ................................................................................................. 80
6.1.3.3 Choix dune couleur ......................................................................................... 81
6.1.3.4 Choix dune police ........................................................................................... 82
6.2 LES CONTROLES............................................................................................................... 83
6.2.1 Membres communs .................................................................................................. 83
6.2.1.1 proprits .......................................................................................................... 83
6.2.1.2 Mthodes .......................................................................................................... 86
6.2.1.3 Evnements ...................................................................................................... 86
6.2.2 Principaux Contrles .............................................................................................. 86
6.2.2.1 TextBox ............................................................................................................ 86
6.2.2.2 Label................................................................................................................. 87
6.2.2.3 CheckBox ......................................................................................................... 88
6.2.2.4 RadioButton ..................................................................................................... 89
6.2.2.5 GroupBox et Panel ........................................................................................... 90
6.2.2.6 Button ............................................................................................................... 91
6.2.2.7 ListBox ............................................................................................................. 91
6.2.2.8 ComboBox ....................................................................................................... 92
6.2.2.9 Splitter .............................................................................................................. 92
6.2.2.10 ImageList........................................................................................................ 93
6.2.2.11 Treeview......................................................................................................... 94
6.2.2.12 ListView ......................................................................................................... 95
6.2.2.13 TabControl ..................................................................................................... 98
6.2.2.14 Menus ............................................................................................................. 98
6.2.2.15 DateTimePicker.............................................................................................. 99
6.2.2.16 Timer ............................................................................................................ 100
6.2.3 Le Drag and Drop ................................................................................................. 100
6.2.3.1 Dmarrer le drag and drop ............................................................................. 100
6.2.3.3 Contrler la rception..................................................................................... 101
6.2.3.3 Rcuprer llment ....................................................................................... 102
7 ACTIVEX DATA OBJECT .NET................................................................................... 102
7.1 MODE CONNECTE ET DECONNECTE ................................................................................ 103
7.1.1 Mode connect....................................................................................................... 103
7.1.2 Mode dconnect................................................................................................... 103
7.2 LES FOURNISSEURS DACCES ......................................................................................... 104
7.3 LOBJET CONNECTION ................................................................................................... 104
7.3.1 Proprits........................................................................................................... 105
7.3.2 Mthodes ........................................................................................................... 106
7.3.3 Evnements ....................................................................................................... 106
7.4 OBJET COMMAND .......................................................................................................... 107
7.5 OBJET DATAREADER ..................................................................................................... 108
7.6 OBJET DATASET ............................................................................................................ 109
7.6.1 Objet DataTable.................................................................................................... 109
7.6.2 Objet DataColumn ................................................................................................ 110
7.6.3 Objet DataRelation ............................................................................................... 111
7.6.4 Travailler avec les donnes................................................................................... 112
7.6.4.1 Parcourir les donnes ..................................................................................... 113
7.6.4.2 Insertion de donnes....................................................................................... 114
7.6.4.3 Modification de donnes ................................................................................ 115
5/135
6/135
1. Prsentation
Depuis son apparition, le langage Visual Basic ainsi que ses divers environnements de
dveloppement ont su simposer comme les standards en matire doutils de ralisation
dapplications Windows.
1.1 Historique
Version
1.0
3.0
4.0
5.0
6.0
Nouveauts
Sortie en 91, Visual Basic innove en particulier grce son environnement de
dveloppement permettant de masquer les tches fastidieuse
Evolution du langage, apparition de nouvelles fonction et de structures de contrle
(select case)
Sorti en 96, la version 4.0 marque une tape importante dans lvolution du
langage :
- Cration dapplication 32 bits
- Cration et utilisation de DLL
- Apparition des fonctionnalits Objet (Classes)
Disparition des applications 16 bits et stabilit accrue du langage
Peu dvolution sur le langage mais apparition de la technologie ADO
(remplaante de DAO et RDO) et des outils de connexion aux sources de donnes
(DataEnvironment)
1.2 Nouveauts
La version .Net (ou version 7.0) de Visual Basic et plus gnralement de lIDE Visual
Studio marquent une tape importante dans lvolution du langage. Llment principal de
linfrastructure .NET est le CLR (Common Language Runtime), langage offrant un ensemble
de classe permettant lutilisateur dinteragir avec le systme. Ces classes peuvent tre
utilise avec nimporte quel langage .Net (Vb, C++, C#) car elle font partie dune norme
commune : le CLS (Common Language Specification).
Une autre des rvolutions du .Net rside dans le MSIL (Microsoft Intermediate
Language) : les applications ralises avec Vb .Net sont dabord compils en pseudo code, le
MSIL, et cest lors de lexcution que le compilateur (JIT pour Just In Time) compile le code
MSIL afin de le rendre excutable par le processeur utilis. Lavantage de ce systme est
double :
- Gain de ressource lors de lexcution car seules celle devant tre utilises seront
charges et de ce fait, leur installation pralable nest pas obligatoire
- Portabilit des applications sur diffrentes plateformes la manire de la machine
virtuelle Java.
1.3 Installation
A linstar de la version 6.0, dvelopper en VB .Net requiert une configuration machine
beaucoup plus importante.
Ci dessous figurent les spcifications Microsoft :
7/135
Processeur
Mmoire Vive (Ram)
Espace Disque
Carte Vido
Lecteur CD Rom
Config. Minimum
Config Optimale
P2 450 Mhz
P3 733 Mhz
128 Mo
256 Mo
3 Gb
3Gb
Obligatoire
Obligatoire
Windows 2000
Windows NT 4.0
Windows Me
Windows 98
Systme dexploitation
Ces spcifications concernent lutilisation du FrameWork .Net ainsi que de lIDE, pas
lexcution des programmes MSIL.
8/135
9/135
10/135
3. Gestion de projets
11/135
Description
12/135
Proprits communes
Proprit
Description
Nom de lassembly
Nom du fichier gnr aprs compilation (MSIL)
Type de sortie
Type dapplication a gnrer
Objet de dmarrage
Feuille ou procdure servant de point de dpart au programme
Espace de nom racine
Permet de dfinir un prfixe pour accder lensemble des
classes disponibles dans le projet
Icne de lapplication
Fichier .ico servant dicne au fichier de sortie
Option explicit
Interdit lutilisation dune variable non dclare
Option Strict
Oblige lcriture de explicite de la conversion de donnes
Option compare
Distinction de la casse en mode binaire (pas en mode texte)
Espaces de noms
Permet de dfinir les espaces de noms qui devront tre
automatiquement imports dans le projet (ex : permet dcrire
form la place de system.windows.forms.form
Chemin daccs de rfrence Dfinit les dossiers dans lesquels se trouvent les rfrences
utilises dans le projet
Prsentation page
Mode de positionnement des contrles : en mode Grid, le
placement est libre, en mode Flow, le placement se fait dans
lordre de cration.
Schma cible
Navigateur pour lequel le code HTML doit tre compatible
Langage de script Client
Type de langage utiliser
Proprit
Action de dmarrage
Argument de la ligne de
commande
Rpertoire de travail
Dbogueurs
Optimisation
Chemin de sortie
Proprits de configuration
Description
Action raliser par lenvironnement lors de la demande
dexcution
Permet de passer des paramtres lors de lexcution du
programme
Rpertoire actif pour lapplication
Dbogueurs activer lors de lexcution
Dfinit un ensemble de contrles que le compilateur ne fera pas
lors de la compilation du programme
Rpertoire o sera gnr lexcutable ou la bibliothque
13/135
4. Bases du langage
4.1 Structure du code
Un exemple valant mieux quun long discours, nous allons commencer par dcortiquer
un programme de base avant de parcourir le langage en lui mme.
4.1.1 Formulaire
Lors de la cration dun formulaire, le code suivant est automatiquement gnr :
Le code est en fait constitu de la dfinition dune nouvelle classe portant le nom du
formulaire.
Linstruction inherits System.windows.forms.form indique que la classe que nous
crons doit hriter (rcuprer) de tous les lments inscrits dans la classe form
Enfin, la rgion Code gnr par le concepteur Windows Form contient lappel
aux mthodes de base de classe form ainsi que linitialisation des contrles.
Tout ajout dlments au formulaire (Variables, procdures, contrles) seront ensuite perus
(selon leur visibilit) comme membres de la classe form1 .
4.1.2 Module
Lors de la cration dun nouveau module, le code suivant est automatiquement gnr :
14/135
Tout le code contenu dans le module sera insr entre module et end module
4.1.3 Les commentaires
Les commentaires permettent dajouter des annotations sur le code qui, une fois la
compilation lance, ne seront pas traites par le compilateur et ainsi exclue du programme
final.
Pour ajouter un commentaire, utiliser le caractre apostrophe . lorsquun commentaire est
ajout, tout le reste de la ligne sera un commentaire.
ceci est un commentaire
Dim mavar as string ceci est un autre commentaire
Il nest pas possible de crer des commentaires multilignes. Dans ce cas, vous tes oblig de
rpter le caractre apostrophe au dbut de chaque ligne
A noter que lorsquun commentaire commence par le mot cl todo:, il sera automatiquement
ajout dans la liste des tches
todo: commentaire automatiquement ajout dans la liste des tches
4.1.4 Les rgions
Les rgions sont une nouvelle fonctionnalit de Visual Basic permettant de masquer
une partie du code pour gagner en lisibilit.
La fonctionnalit applique aux rgion se retrouve sur chaque procdure Visual Basic : le
signe + situ gauche du nom des procdures permet de ne garder que leur dclaration.
#End Region
15/135
Min
Max
Taille
Byte
255
8 bits
Short
-32768
32767
16 bits
Integer
32 bits
Long
-9223372036854775808
9223372036854775807
64 bits
Single
-3.402823 E 38
3.402823 E 38
32 bits
Double
-1.79769313486231 E 308
-1.79769313486232 E 308
64 bits
Nom
Char
String
Description
Utilis pour stocker un seul caractre
Chane de caractre longueur variable
dune taille de 0 environ 1 milliard de
Exemple
a
Sandrine Desayes
16/135
caractres
Object
Description
Variable dont le contenu peut tre False (0)
ou True (1)
Stocke les informations de date et heure. Si
la date est omise, le 1er janvier de lanne en
cours sera utilis. Si lheure est omise,
minuit sera lheure par dfaut.
Le type object est un type universel
(anciennement nomm Variant). Ce type ne
stocke en fait pas la donne elle mme mais
il contient un pointeur vers ladresse
mmoire contenant la donne. De ce fait,
une variable de type object peut pointer vers
(contenir) nimporte quel type de donnes
Exemple
True
#12/07/02 15:33:17#
#12/07/02#
#15:33:17#
!Erreur !
Laffectation des adresses
mmoire se fait de manire
implicite
17/135
Niveau projet : la variable est accessible partir de tous les lments du projet. Dans
ce cas, il faut utiliser le mot cl friend la place du mot dim .
4.2.3.1 Visibilit des variables
En dehors de lemplacement o est dfinie la variable, plusieurs mot cls sont disponibles
pour agir sur la visibilit :
- Public : tous les blocs de code peuvent accder la variable
- Private : seul les lments membres de la classe ou du module peuvent y accder
Dim i as integer
Public y as string
Private z as integer
4.2.4 Les tableaux
Un tableau est un regroupement de variables accessibles par le mme nom et diffrentiables
par leurs indices.
- Un tableau peut avoir jusqu 32 dimensions.
- Les indices de tableaux commencent toujours 0.
- Lors de la dclaration dun tableau, lindice maximum est prcis : le tableau
comportera donc (indice_max + 1) valeurs.
Dim montableau(10) as integer
Dim tableau2(5) as string
Pour accder un lment du tableau, il faut prciser le nom du tableau avec entre
parenthses lindice de llment dsir.
Montableau(2) = 123
Tableau2(5) = toto
En Vb, les tableaux sont dynamiques, cest dire quil est possible de modifier leur taille.
Pour cela, il faut utiliser linstruction Redim suivi du nom du tableau et de sa nouvelle
taille.
Redim montableau(15)
Cependant, linstruction Redim ne conserve pas les donnes dj prsentes dans le
tableau. Pour conserver son contenu, utiliser le mot cl preserve
Redim preserve montableau(15)
18/135
End enum
Une fois lnumration dclare, il est possible de dclarer une variable du type de
lnumration.
Dim macivilite as civilite
De cette faon, la variable macivilite pourra uniquement prendre les valeurs dfinies
dans lnumration :
Macivilite = monsieur
Macivilite = 1
Macivilite = 4
correspond madame
invalide, lindice max est 2
19/135
Description
Exemple
Rsultat
Addition
3+2
Soustraction
86
Multiplication
3*4
12
Division
8/2
Division entire
9\2
9 mod 2
3^2
Mod
^
Description
Exemple
Rsultat
20/135
Egalit
2=5
False
<>
Ingalit
3<>6
True
<
Infrieur
-2 < 12
True
>
Suprieur
8>9
False
<=
Infrieur ou gal
9 <= 9
True
>=
Suprieur ou gal
13 >= 7
True
Like
maison like m*
True
Le plus + : dans ce cas, il faut que les deux membres de la concatnation soient de
type chane de caractres.
Lperluette & : dans ce cas, loprateur effectue une conversion implicite lorsque
les deux membres ne sont pas des chanes de caractres.
Description
Et logique
Ou logique
Ou exclusif
Ngation
Et logique optimis
Exemple
True and False
True or False
True Xor True
Not true
Test1 AndAlso test2
OrElse
Ou logique optimis
Rsultat
False
True
False
False
Test2 sera valu que
si Test1 est True
Test2 sera valu que
si Test1 est faux
21/135
4.4.2.1 Structure If
Plusieurs syntaxes sont possibles :
Forme simple
A utiliser dans le cas o vous ne souhaitez raliser quune seule instruction lorsque la
condition est vrifie. Dans ce cas, la condition et linstruction raliser doivent se trouver
sur le mme ligne.
If qte_stock < 10 then nouvelle_commande()
Forme normale
La forme normale permet dexcuter plusieurs instructions lorsque la condition est vrifie.
If qte_stock < 10 then
nouvelle_commande()
prevenir_service_reception()
End if
Forme volue
La forme volue permet dexcuter plusieurs instructions lorsque la condition est vrifie
et dexcuter dautres instructions.
If note < 10 then
Msgbox(Examen chou)
Else
22/135
Msgbox(Examen russi)
End if
4.4.2.2 Structure Select Case
La structure de contrle Select Case permet deffectuer un ensemble de test sur une
seule valeur. Cette valeur peut-tre le contenu dune variable, le rsultat dun calcul ou dune
fonction. Le principal intrt de cette structure est de clarifier le code : en effet, toute
utilisation de cette structure peut tre remplace par un ensemble de structures If.
Les diffrentes possibilits de test sont les suivantes :
-
Case min to max : pour les valeurs numrique, permet de dfinir un interval
Case is > constante : pour les valeurs numriques, dfinition dun interval non ferm
Case Else : cette condition sera valide si tous les tests dfinis dans le select case sont
faux
Iif
Linstruction IIF permet dvaluer une condition et de retourner des valeurs diffrentes en
fonction du rsultat de la condition.
IIF (condition, valeur_retourne_si_vrai, valeur_retourne_si_faux)
Appreciation = iif(note < 10, Echou, Reu)
Switch
23/135
Choose
Linstruction Choose permet de choisir une valeur dans une liste en fonction dun Index.
Attention, les Index commencent 1 !
Choose(index, valeur1, valeur2 .)
Lib_famille = Choose(code_famille, Info, Consommable)
end while
dim i as integer = 0
while i < 10
msgbox (i)
i++
end while
4.4.3.2 Structure Do loop
La structure do loop possde 4 variantes. Elle peut tre paramtre avec les mots cls while
(tant que la condition est vrifie) et Until (Jusqu ce que la condition soit vrifie).
Do while condition
loop
Do until condition
loop
24/135
Dans ces deux cas, la condition est value une premire fois avant lentre dans la
boucle, cest dire quil est tout fait possible que les instructions de la boucle ne soient
excutes aucune fois.
Une seconde variant de cette structure permet dexcuter au moins une fois les
instructions de la boucle et dvaluer la condition ensuite :
Do
next
Lexemple suivant affiche les nombres 1,3,5,7,9
dim i as integer
for i = 1 to 10 step 2
msgbox (i)
next
4.4.3.4 Structure For each
La structure For Each permet de parcourir un tableau ou une collection (tableau
dobjets) sans se proccuper de leurs indices. Lutilisation dune telle structure est
gnralement plus rapide lors de lexcution quun parcourt par indices.
For each element in collection_ou_tableau
next
25/135
Enfin, il existe plusieurs cas dans lequel lutilisation de procdures est impos par Vb.
Il existe en Vb 4 catgories de procdures :
end sub
-
Toutes les instructions situes entre sub et end sub feront partie de la procdure
Le nom dune procdure suit les mme rgles que pour les variables
Il possible de prciser la visibilit de la procdure en remplaant public par private ou
friend
4.5.1.2 Appel
Pour appeler une procdure, il suffit de placer son nom avec le mot cl call (facultatif)
Call nom_procedure(valeurs_parametres)
nom_procedure(valeurs_parametres)
26/135
return valeur_retour
end function
4.5.2.1 Appel
Nous lavons dit plus haut, un fonction est une procdure retournant une valeur. Cette
valeur peut tre issue dun calcul ou tre un code erreur. De ce fait, lors de lappel dun
fonction, il faut rcuprer le rsultat afin de le traiter. Le rsultat peut donc tre stock
directement dans une variable ou encore tre pass en paramtre une autre procdure ou
fonction.
Variable = nom_fonction(valeurs_parametres)
Msgbox (nom_fonction(valeurs_parametres))
27/135
Dans certains cas, un paramtre peut tre facultatif. Dans ce cas, il faut placer le mot
cl optionnal devant le paramtre et, ventuellement, spcifier la valeur par dfaut avec
loprateur daffectation :
Public sub feliciter (nom as string, optional prenom as string = inconnnu)
Msgbox (bravo & nom & & prenom)
End sub
4.5.3.2 Appel
Lors de lappel dune procdure ou dune fonction, il faut donner les valeurs des diffrents
paramtres utiliss par la fonction.
Feliciter(Dupont)
Feliciter(Dupont, gerard)
4.5.3.3 Passage par valeur et par rfrence
Lors du passage de paramtres une procdure ou une fonction, deux mthodes sont
disponibles :
Cest le mode de passage de paramtre par dfaut : lors du passage par rfrence, seule la
valeur du paramtre est pass la procdure. Cette dernire travaille donc sur une variable
locale.
Pour dfinir un passage de paramtre par valeur, il suffit dajouter le mot cl byval
devant le nom du paramtre dans la dclaration de la procdure.
Dans lexemple suivant, les 2 variables nom et enom font rfrence des emplacements
mmoires distincts.
Sub main()
Dim nom as string = toto
Afficher(nom)
End sub
Sub afficher(byval enom as string)
Msgbox(enom)
End sub
Dans le cas dun passage par rfrence, ce nest pas la valeur du paramtre qui est pass
mais ladresse de la variable contenant la valeur : dans ce cas, la procdure appele et la
procdure appelante travaille sur la mme variable, mme si le nom utilis pour le paramtre
est diffrent du nom de la variable initiale. De ce fait, il est possible de modifier le contenu de
la variable passe en paramtre partir de la procdure appele.
28/135
Pour dfinir un passage de paramtre par valeur, il suffit dajouter le mot cl byref
devant le nom du paramtre dans la dclaration de la procdure.
Sub main()
Dim nom as string = toto
Modifier(nom)
Msgbox(nom)
affiche titi
End sub
Sub modifier(byref enom as string)
Enom = titi
End sub
4.5.3.4 Passer un nombre quelconque de paramtre
Visual basic .Net permet le passage dun nombre quelconque de paramtre grce au mot cl
ParamArray . Il suffit de dfinir un paramtre de type tableau correspondant au type des
paramtres qui devront tre pass. Chaque lment du tableau correspond ensuite un
paramtre.
Sub nom_procedure(ParamArray tableau() as type_parametre)
Sub somme (ParamArray nombres() as integer)
Dim nombre as integer
Dim total as integer
For each nombre in nombres
Total += nombre
Next
Msgbox (total)
End sub
Pour la procdure somme, il sera donc possible deffectuer les appels suivants :
Somme (12,2)
Somme(15,7,6,9,2,4)
29/135
Attention, lappel des mthodes ne change pas la valeur de la variable mais retourne la
valeur modifie.
4.6.1 Fonctions sur les chanes de caractres
Pour les exemples du tableau ci-dessous, nous utiliserons la variable suivante :
Dim ch as string = tartanpion
Mthode
.Chars(Index)
Description
Retourne le caractre lindice
Index
Retourne lindice de la
premire occurrence de
caractre partir de la position
dbut
Insre chaine la position
indice
Retourne le nombre de
caractre de la chane
Formate la chane sur nb
caractres en remplissant les
espaces vides gauche avec
remplissage
Identique mais droite
Exemple
Ch.Chars(2)
Rsultat
r
Ch.IndexOf(p)
Ch.Insert(2,ta)
Tatartanpion
Ch.length
10
Ch.remove(2,3)
Tanpion
Ch.replace(an,
i)
Ch.Split(a)
Tartipion
Ch.SubString(4,2)
Anp
Ch.tolower
Ch.toUpper
Ch.trim(t)
Tartanpion
TARTANPION
Artanpion
.IndexOf(Caractre,
debut)
.Insert(Indice,
chaine)
.Length
.PadLeft(nb,
remplissage)
.PadRight(nb,
remplissage)
.Remove(debut,
nombre)
Ch.PadLeft(15,s) Ssssstartanpion
Ch.PadLeft(15,s) Tartanpionsssss
T
Rt
Npion
Ch.StartWith(tar) True
30/135
Description
Tronque la valeur
Retourne le nombre entier juste
suprieur
Retourne n la puissance p
Retourne la valeur absolue de n
Exemple
.Floor(3.25)
.Ceiling(3.25)
Rsultat
3
4
.pow(2,3)
.abs(-8)
8
8
Description
Ajoute n mois la date
Ajoute n jours la date
Ajoute n heures la date
Ajoute n minutes la
date
.addSeconds(n)
Ajoute n secondes la
date
.addYears(n)
Ajoute n annes la date
.Day
Jour du mois
.DayOfWeek
Jour de la semaine
.DayOfYear
Jour de lanne
.DaysInMonth(y, Nombre de jour pour le
m)
mois m de lanne y
.Minute
Retourne la valeur de
minute
.Hour
Retourne la valeur de
heure
.Day
Retourne la valeur de
jour
.Month
Retourne la valeur de
mois
.Year
Retourne la valeur de
anne
.Now
Retourne lheure et la
date courante
Exemple
d.addmonths(2)
d.addDay(1)
d.addHours(1)
d.addMinutes(1)
Rsultat
#12/09/2003 16 :00#
#13/07/2003 16:00#
#12/07/2003 17:00#
#12/07/2003 16:01#
d.addSeconds(1)
d.addyears(1)
#12/07/2004 16:00#
d.day
12
d.DayOfWeek
6
d.DayOfYear
341
d.DaysInMonth(1,2003)
31
d.minute
00
d.hour
16
d.day
12
d.month
07
d.year
2003
d.now
31/135
Description
Retourne la taille du tableau
Inverse les lments de tab
Trie les lments de tab
Retourne lindice de llment le
plus grand dans la dimension
spcifie
Exemple
t.length
t.reverse(t)
t.Sort(t)
t.GetUpperBound(0)
Rsultat
4
3,4,9,1
1,3,4,9
3
Il existe une autre fonction de formatage dont le fonctionnement est un peu diffrent : la
fonction ctype permet de convertir une variable de type Object vers un type dobjet
prcis. Le principal intrt de cette mthode est de profiter de la liaison prcoce lors de
lcriture de programmes.
Ctype(objet, classe)
Dim f as object
Dim g as Personne
F = new personne(toto)
G = Ctype(f, personne)
32/135
Formats prdfinis
Caractre
C
Percent
Scientific
Description
Sparateur de milliers et 2 dcimales
Multiplie le nombre par 100 et ajoute le signe %
Notation scientifique
Exemple
12 846.49
1284648.61%
1.28E+04
Caractre
0
#
.
,
\
Description
Affiche le chiffre ou 0
Affiche le chiffre ou rien
Dcimal
Sparateur de milliers
Caractre dchappement
Formats prdfinis
Caractre
G
Description
Affiche la date selon les paramtres du
systme
Exemple
4/3/2003
33/135
04/03/2003
Caractre
:
/
d
dd
ddd
dddd
M
MM
MMM
MMMM
gg
h
hh
m
mm
s
ss
tt
yy
yyyy
z
Description
Sparateur dheures
Sparateur de date
Jour sans zro non significatif
Jour sur 2 chiffres
Jour sous la forme dabbrviation (ex : Lun)
Jour sous la forme du nom complet (ex : Lundi)
Mois sans zro non significatif
Mois sur 2 chiffres
Mois sous la forme abrge (ex : Juil)
Mois sous la forme de nom complet
Affiche lre (A.D)
Heure sans zro significatif
Heure sur 2 chiffres
Minute sans zro significatif
Minute sur 2 chiffres
Seconde sans zro significatif
Seconde sur 2 chiffres
Format 12 heures
Anne sur 2 chiffres
Anne sur 4 chiffres
Affiche le dcalage horaire
affiche 12/7/02
affiche 12-Juillet-2002
Lun 12 Juil 02
34/135
Titre
Prompt
Icne
Type boutons
Types de bouton
Constantes de Retour
Type dicne
Types dicne (membres de la classe MessageBoxIcon)
Constante
Aperu
Error
Exclamation
Information
35/135
Question
Loption bouton par dfaut permet de dfinir le bouton qui sera slectionn par dfaut.
Bouton par dfaut (membres de la classe MessageBoxDefaultButton)
Constante
Description
DefaultButton1
Premier bouton
DefaultButton2
Second bouton
DefaultButton3
Troisime bouton
InputBox est une fonction, elle retourne la valeur saisie par lutilisateur o chane vide
si le bouton Annuler est utilis. La valeur retourne est toujours de type String. Les ventuels
contrle de saisie devront tre fait par le programme une fois la valeur retourne.
Dim note as string
note = InputBox(Veuillez saisir la note, Saisie, 0)
36/135
Ceci nest pas suffisant : en effet, nous navons pas accs au contenu de notre collection. Pour
cela, nous devons implmenter la proprit item et la mthode add :
Public Class PersonneCollection
Inherits System.collections.CollectionBase
Public Property Item(ByVal index As Integer) As personne
Get
Return CType(Me.InnerList(index), personne)
End Get
Set(ByVal Value As personne)
Me.InnerList(index) = Value
End Set
37/135
End Property
Public Sub add(ByVal value As personne)
Me.InnerList.Add(value)
End Sub
End Class
4.7.1.2 Utilisation
Dim macol As PersonneCollection
macol = New PersonneCollection
macol.add(New personne("toto"))
macol.add(New personne("titi"))
macol.RemoveAt(0)
MsgBox(macol.Item(0).nom)
Pop
Peek
Contains(valeur)
Count
Push
Clear
38/135
Mapile.push(10)
Msgbox (Mapile.peek)
Msgbox (Mapile.pop)
affiche 5
affiche 5 et supprime llment
Msgbox (Mapile.contains(10))
Msgbox (Mapile.count)
affiche true
affiche 2
Enqueue(valeur)
Dequeue
Peek
Count
Clear
Contains(valeur)
Dexcution
Description
De type derreur correspond aux fautes dorthographe. Elles sont
directement captes par lenvironnement de dveloppement qui les
signale en les soulignant. Noter quune erreur de syntaxe empche la
compilation du programme et de fait ne peut survenir lors de
lexcution.
Une erreur dexcution survient lorsque lenvironnement
dexcution ne correspond pas lopration demande (Accs un
fichier inexistant, dpassement de capacit). Ces dernire affiche
un message derreur incomprhensible pour lutilisateur final avant
39/135
de stopper le programme.
Cest srement le type derreur le plus compliqu corriger : aucun
plantage nest effectu par la machine et pourtant le rsultat obtenu
est erron. Sur ce genre derreur, il faut gnralement dbugger
le programme avec des outils comme les espions.
De logique
Cette instruction ignore la ligne ayant provoqu lerreur et continue lexcution. Cette
mthode est peu fiable dans le sens o vous ntes pas prvenu dune erreur et le reste du
programme peut en tre affect.
Cette instruction dirige lexcution du code vers une tiquette en fin de procdure. Cest
dans cette tiquette que vous pourrez ensuite dfinir les traitements correspondants.
On error goto fin
exit sub
fin :
instructions de gestion
Il est important de placer linstructions Exit sub ou Exit function juste avant la
dclaration de ltiquette car dans le cas o lexcution se droule correctement, il ne faut pas
que la gestion derreur soit active.
Public sub main()
On error goto fin
Dim i as integer
i=3/0
plantage, division par 0
exit sub
fin :
msgbox(Une erreur est survenue)
end sub
On error goto 0
40/135
Description
Cette instruction reprend le programme o il stait interrompu et essaye
de rexcuter linstruction lorigine du plantage.
Reprend lexcution du programme partir de linstruction suivant
linstruction lorigine du plantage.
Description
Description textuelle de lerreur
Numro de la dernire ligne excute
Numro de lerreur
Objet ou application lorigine de lerreur
Mthode
Description
41/135
Clear
Raise
Try
{ Instructions dangeureuses}
catch objet1 as type_exception1
{Instructions raliser si exception1}
catch objet2 as type_exception2
{Instructions raliser si exception2}
finally
{Code excuter dans tous les cas}
end Try
42/135
Description
Description textuelle de lexception
Nom de lapplication ayant gnre lerreur
Liste de toutes les mthodes par lesquelles lapplication est passe avant le
dclenchement de lerreur
Mthode ayant dclenche lexception
5 Programmation Objet
Contrairement aux versions prcdentes, Visual Basic .net impose un minimum de
notions Objets afin de lutiliser de faon optimale. De plus, de nombreux concepts objets sont
venus renforcer la POO sous Visual Basic comme les notions dhritage, dinterface et de
polymorphisme.
43/135
une nouvelle, la surcharge qui permet de dfinir plusieurs fois le comportement dune mme
procdure en fonction des paramtres passs et la visibilit (partie de lencapsulation)
permettant de cacher un certain nombre de paramtres inutiles pour lutilisateur final.
Les objectifs de la POO sont les suivants :
- Regroupement logique des lments de programmation pour une meilleur
comprhension du programme
- Rutilisation des composants (une classe ou une partie dune classe utilise dans un
programme peut tre importe dans une autre, do les gains en productivit)
- Maintenance simplifie car tous les objets ont un modle (classe) qui une fois
modifie rpercutera ses modifications sur tous les objets
End class
En visual Basic .Net, il est possible de dfinir une classe lintrieur dune autre classe :
End class
End class
Description
Classe utilisable dans tout les projet
44/135
Friend
Private
Protected
Protected friend
End class
Option
MustInherit
Description
Indique que la classe sert de base dans une relation dhritage (Super
classe).
Indique que la classe ne peut tre hrite. Elle devra tre au dernier
niveau de la hirarchie dhritage.
NotInheritable
End class
45/135
Ensuite, crer lobjet avec loprateur new et stocker ladresse retourne dans la
variable
A partir de ce moment, lobjet est utilisable, cest dire quil possible de modifier ses
proprits et dappeler ses mthodes. Lenvironnement .net effectue ce quon appel une
liaison prcoce, cest dire qu partir de la dfinition de la classe, il est capable dafficher
lensemble des membres disponibles :
Les liaisons prcoces sont utilisables en faisant suivre le nom de lobjet par le caractre point
. . Il est ensuite possible dutiliser les proprits de lobjet comme des variables et
dappeler ses mthodes.
Lorsquun objet nest plus utilis, il est important de le supprimer afin de librer de la
mmoire et, ventuellement, effectuer des oprations denregistrement dans une base de
donnes par exemple via le destructeur.
Pour supprimer un objet, il suffit de placer le mot cl nothing lintrieur de la variable
rfrenant lobjet.
MonObjet = Nothing
Moi = nothing
46/135
Toi = nothing
47/135
End Get
Set (byval value as type_proprit)
End set
48/135
End property
La section Get est en fait une fonction devant contenir le mot cl return pour dfinir la
valeur de retour de la proprit.
La section Set est une procdure prenant en paramtre value , la valeur assigner la
proprit.
Lexemple suivant implmente la proprit nom . Elle vrifie que le nom ne soit pas
vide et retourne le nom en majuscule. Dans cet exemple, cest la variable v_nom qui
contient la valeur de la proprit.
Il est galement possible via les procdures de proprits de crer des proprits en lecture
seule ou en criture seule.
Pour crer une proprit en lecture seule, il suffit domettre la section set et
dajouter le mot cl Readonly devant la dfinition de la proprit
Pour crer une proprit en criture seule, il suffit domettre la section get et
dajouter le mot cl WriteOnly devant la dfinition de la proprit
Lexemple suivant cre la proprit mdp en criture seule et la proprit daten en
lecture seule :
49/135
Enfin il est possible dutiliser les mots cls private et public pour la dfinition des
proprits.
lappel de la mthode se fait ensuite par lintermdiaire dun objet issu de la classe.
50/135
dim p as personne
p = new personne()
p.afficher()
5.4.2.2 Destructeur
Le destructeur est lui appel automatiquement lors de la destruction de lobjet. Il
permet gnralement de sauvegarder des donnes ou de supprimer des objets lis en mmoire.
51/135
end sub
Le mot cl Overrides dfinit une rcriture de fonction. Nous dtaillerons ce point
plus tard.
5.4.3 La surcharge
La surcharge de mthode permet de dfinir plusieurs fois la mme mthode mais avec des
paramtres diffrents. Seuls les paramtres peuvent tre modifis dans une surcharge, pas le
type de retour. Pour surcharger une mthode, il faut utiliser le mot cl OverLoads .
Overloads sub nom_procedure(paramtres)
End sub
Overloads function convertir (byval valeur as integer) as double
Return valeur / 100 * 19.6
End function
Overloads function convertir (byval valeur as integer, byval taux as double) as double
Return valeur / 100 * taux
End function
Ainsi, deux appels sont possibles :
Msgbox convertir(100)
Msgbox convertir(100, 5.5)
Ci dessous figure un exemple de surcharge pour le constructeur de la classe personne.
Cet exemple est spcifique dans le sens o pour les constructeur, il ne faut pas utiliser le mot
cl overload.
Public Sub New(ByVal lenom As String)
v_nom = lenom
v_prenom = "titi"
v_daten = #12/7/2002#
End Sub
Public Sub New(ByVal lenom As String, ByVal leprenom As String)
v_nom = lenom
v_prenom = leprenom
v_daten = #12/7/2002#
End Sub
Public Sub New(ByVal lenom As String, ByVal leprenom As String, ByVal ladaten As Date)
v_nom = lenom
52/135
v_prenom = leprenom
v_daten = ladaten
End Sub
Ainsi, il est possible dappeler tel ou tel constructeur lors de la cration de lobjet :
Dim p, q, r As personne
p = New personne("toto")
q = New personne("titi", "momo")
r = New personne("tutu", "mimi", #12/7/2002#)
5.4.4 Lobjet Me
Comme dans la version prcdente de Visual Basic, lobjet Me est lobjet courant.
Lorsque vous crivez une mthode, vous pouvez faire rfrence directement aux proprits de
lobjet :
Return nom
Le compilateur sait alors que vous fates rfrence la proprit de lobjet courant.
Pour clarifier le code, lever des ambiguits entre plusieurs variables portant le mme nom ou
profiter du menu de saisie automatique, vous pouvez faire rfrence lobjet Me qui lors
de lexcution fera rfrence lobjet ayant appel la mthode.
5.5 LHritage
5.5.1 Introduction
Lhritage est une fonctionnalit fondamentale de la programmation objet. Il permet
dimporter des classes dj existantes lintrieur dautres classes. Lide est de rutiliser les
composants dj programms sans avoir copier/coller le code ni crer dautres objets
lintrieur de la classe.
Deux acteurs sont prsents lors de lhritage :
53/135
Super classe (ou classe mre: cest la classe qui contient les proprits et mthodes qui
seront ensuite rutilise dans les sous classes. De manire gnrale, la super classe
contient les membres communs aux sous classes.
Sous classe (ou classe fille) : cest la classe qui hrite des membres de la super classe.
Elle ajoutera ses propres membres qui en feront une classe spcialise.
Reprenons par exemple notre classe personne. Elle contient des proprits et des mthodes
gnriques quelque soit la personne. Cependant, les personnes sont subdivises en 2
catgories : les employs qui ont un taux horaire et une dure de contrat, les cadres qui ont un
salaire fixe plus un montant de primes. Dans ce cas, les employs comme les cadres auront un
nom, prnom et date de naissance. Ainsi, les proprits communes sont regroupes dans la
super classe (Personne) tandis que les proprits spcifiques comme le taux horaire ou le
montant des primes seront eux stocks dans la sous classe.
PERSONNE
Nom
Prnom
Date naissance
Calc_salaire()
EMPLOYE
Tx_horaire
Duree
CADRE
Salaire
Prime
CADRE
Nom
Prnom
Date naissance
Tx_horaire
Duree
Calc_salaire()
Nom
Prnom
Date naissance
Salaire
Prime
Calc_salaire()
Lintrt de lhritage est donc de dfinir les lments communs une seule fois et de
pouvoir les rutiliser dans plusieurs autres classes.
54/135
End class
Dans lexemple suivant, la classe cadre hrite des membres de la classe personne.
Public Class cadre
Inherits personne
Private v_salaire As Double
Private v_montant_prime As Double
55/135
5.5.4 Le remplacement
Le remplacement est une autre fonctionnalit de lhritage qui permet de rcrire le
comportement dune mthode dclare dans la super classe. Lintrt est de pouvoir rcuprer
les lments dj dfinis dune classe sans pour autant tre bloqu par le comportement dune
fonction qui ne conviendrait pas notre programme.
Par exemple, nous allons modifier le code de telle faon ce que, lorsque nous appelons
la mthode afficher partir dun objet de type cadre, celle ci affiche le nom, prnom et
salaire fixe. Cependant, le fonctionnement de la mthode ne sera pas modifi pour les objets
de type Personne ou Employe .
Pour remplacer la fonction afficher , nous devons la rcrire dans la sous classe cadre
et utiliser le mot cl overrides . Attention, la signature des deux classes doit tre identique
(paramtres et valeur de retour).
56/135
57/135
End class
A chaque instanciation dobjet, le constructeur new incrmente la variable v_nbpersonne.
Ensuite, pour accder la proprit nb_personne, il est possible dutiliser un objet ou
directement la classe :
Dim p as personne
P = new personne
Msgbox (p.nb_personne)
Msgbox (personne.nb_personne)
End interface
Elments susceptibles dintervenir dans une interface
Dclaration de variables
Hritage dune autre interface
Synopsis des mthodes
Elments ne devant pas apparatre dans une interface
mots cl end xxx
lignes de code, oprations, appels
Dans notre cas nous allons dfinir linterface comparer implmentant la mthode
plus_grand prenant en paramtre un Objet.
Public Interface comparer
Function plus_grand(obj as object) as boolean
End Interface
58/135
5.7.2 Utilisation
Pour utiliser une interface, il suffit de limplmenter dans une classe et de dfinir le
comportement des diffrentes mthodes. Plusieurs lments doivent apparatre dans la classe
implmentant linterface :
- Le mot cl implements nom_interface afin de prciser que la classe va
implmenter linterface
- Le mot cl implements nom_interface.nom_mthode aprs les mthodes qui
dfinissent le comportement dune mthode de linterface.
Dans lexemple suivant, la classe employ va implmenter linterface comparer. Nous
nous baserons sur lage de la personne pour effectuer la comparaison.
Public Class personne
Implements comparer
Public Function plus_grand(ByVal obj As Object) As Boolean Implements _
comparer.plus_grand
If Me.daten < obj.daten Then
Return True
Else
Return False
End If
End Function
59/135
60/135
5.8 La dlgation
La dlgation est un mcanisme qui permet de dfinir une variable pointant sur une
fonction. En ralit, cette variable contiendra ladresse de la fonction ou de la procdure.
Lintrt de la dlgation est de permettre tous moments de modifier le
comportement du programme en le faisant pointer sur une autre mthode.
Dans les exemples suivants, nous utiliserons les deux fonctions suivantes :
Public function ajouter(byval x as integer, byval y as integer) as integer
Return (x + y)
End function
Public function multiplier (byval x as integer, byval y as integer) as integer
Return (x * y)
End function
61/135
Msgbox calcul.invoke(1,3)
affiche 3
62/135
End sub
Dans notre cas, nous afficherons un simple message :
Public sub violaine_depassement_plafond_prime(byval montant as double) handles violaine.
depassement_plafond_prime
Msgbox(Attention, le montant des primes slve & montant)
End sub
Par convention, le nom de la procdure est le nom de lobjet suivi de lvnement mais il ny
aucune obligation : lexemple suivant fonctionne trs bien.
Public sub toto(byval montant as double) handles violaine.depassement_plafond_prime
Msgbox(Attention, le montant des primes slve & montant)
End sub
Lutilisation du mot cl withevents comporte cependant quelques limitations car
les variables dclares avec loption WithEvents ne doivent pas se trouver dans des
63/135
64/135
65/135
v_daten = #12/7/2002#
v_nbpersonne = v_nbpersonne + 1
End Sub
Public Sub New(ByVal lenom As String)
v_nom = lenom
v_prenom = "titi"
v_daten = #12/7/2002#
v_nbpersonne = v_nbpersonne + 1
End Sub
Public Sub New(ByVal lenom As String, ByVal leprenom As String)
v_nom = lenom
v_prenom = leprenom
v_daten = #12/7/2002#
v_nbpersonne = v_nbpersonne + 1
End Sub
Public Sub New(ByVal lenom As String, ByVal leprenom As String, ByVal ladaten As
Date)
v_nom = lenom
v_prenom = leprenom
v_daten = ladaten
v_nbpersonne = v_nbpersonne + 1
End Sub
Protected Overrides Sub finalize()
MsgBox("Destruction de l'objet personne")
End Sub
Public Property nom() As String
Get
Return v_nom
End Get
Set(ByVal Value As String)
v_nom = Value
End Set
End Property
Public Property prenom() As String
Get
Return v_prenom
End Get
Set(ByVal Value As String)
v_prenom = Value
End Set
End Property
Public Property daten() As String
Get
66/135
Return v_daten
End Get
Set(ByVal Value As String)
v_daten = Value
End Set
End Property
End Class
5.10.2 Classe Cadre
Public Class cadre
Inherits personne
Private v_salaire As Double
Private v_montant_prime As Double
Public Event depassement_plafond_prime(ByVal montant As Double)
Public Property montant_prime() As Double
Get
Return v_montant_prime
End Get
Set(ByVal Value As Double)
v_montant_prime = Value
If v_montant_prime > 10000 Then
RaiseEvent depassement_plafond_prime(v_montant_prime)
End If
End Set
End Property
67/135
MsgBox(Me.salaire)
End Sub
End Class
6 Applications Windows
Le FrameWork Visual Basic .Net permet la cration de formulaires Windows afin
dtablir des interfaces graphiques entre lutilisateur et le code. Ces formulaires sont des
fentre qui contiendront des contrles (Champs texte, boutons, liste droulantes .).
68/135
69/135
AcceptButton
Lorsque lutilisateur appuie sur la touche entre, la mthode lie lvnement click
du bouton dacceptation sera automatiquement dclenche. Gnralement, cest le bouton
ok ou sauvegard qui est paramtr comme AcceptButton.
AllowDrop
AutoScale
Si cette option est active, la taille des contrles et du formulaire sont automatiquement
redimensionns lors dun changement dynamique de la police dcran.
AutoScroll
Loption AutoScroll est une nouveaut de la version .Net : elle permet de placer
automatiquement des barres de dfilement lorsque la taille du formulaire ne permet pas
laffichage de tous les contrles quil contient.
70/135
Avec AutoScroll
Sans AutoScroll
BackColor
BackgroundImage
Il est possible de dfinir une image comme fond pour le formulaire. Limage sera
automatiquement rpte en mosaique.
CancelButton
ControlBox
Le menu systme peut galement tre modifi avec les proprits MinimizeBox ,
MaximizeBox et HelpButton .
Cursor
Dfinit lapparence par dfaut du curseur sur le formulaire. Cette option peut galement
tre paramtre au niveau des contrles.
71/135
Enabled
Dfinit si le formulaire est disponible (True) ou non (False). Dans ce dernier cas, aucun
des contrles et menus du formulaires ne seront accessibles (griss).
Font
Cette proprit dfinit les paramtres de formatage du texte. Cette proprit sera
automatiquement applique par dfaut au texte des diffrents contrles. Cette proprit est
elle mme dcompose en plusieurs autres proprits :
Proprit
Name
Size
Unit
Bold
GdiXXXX
Italic
Strikeout
Underline
Description
Nom de la police utilise
Taille de la police
Unit de mesure pour la police (Sachez que
la plupart des logiciels utilisent lunit
point )
Texte en gras
Paramtres sur le jeu de caractre utilis
Texte en italique
Texte barr
Texte soulign
Exemple
Garamond
12.5
Point
True
True
False
True
ForeColor
FormBorderStyle
Apparence
None
Dimensionnable
Non
72/135
FixedSingle
Non
Fixed3d
Non
FixedDialog
Non
Sizable
Oui
FixeToolWindow
Non
SizableToolWindow
Oui
HelpButton
Affiche le bouton daide gauche de la barre de titre. Attention, le bouton ne sera pas
affich si les boutons min et max sont activs.
Pour dclencher un bloc dinstruction lorsque lutilisateur demande laide (Soit partir de
la touche F1, soit partir du bouton daide, vous devez crer une mthode implmentant
lvnement :
73/135
Icon
Dfinit licne lie au formulaire : cette dernire apparat dans la barre de titre.
IsMDIContainer
Dtermine si le formulaire est un conteneur MDI, cest dire sil est capable de contenir
dautre fentres.
74/135
Dans le cas dun formulaire MDI, vous devez spcifier le code afin dafficher dautres
formulaires lintrieur. Le code suivant permet laffichage dun formulaire fils : dans cet
exemple, Form2 est le formulaire MDI, Form1 et Form3 sont les formulaires enfant. Il faut
galement paramtr loption IsMdiContainer du Form2 True.
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
Dim f1 As New Form1
Dim f2 As New Form3
f1.MdiParent = Me
f1.Show()
f2.MdiParent = Me
f2.Show()
End Sub
Location
Cette objet dfini la position du formulaire par rapport son conteneur (cest dire lcran
ou le formulaire parent dans le cas dapplication MDI). Deux proprits permettent de dfinir
la position :
Locked
75/135
MinimizeBox, MaximizeBox
Dtermine si les boutons Agrandir et Rduire sont visibles. Leur affichage
empchera laffichage du bouton daide.
MinimumSize, MaximumSize
Cet objet dfinit la taille minimale et maximale que peut avoir le formulaire. Cet objet est
gnralement utilis pour viter que lutilisateur rduise la fentre au point de ne plus avoir
accs aux contrles. Pour chaque objet, deux proprit sont disponibles : width (largeur) et
height (hauteur).
Opacity
Dfinit un pourcentage dopacit pour la fentre. Une valeur de 100% rend la fentre opaque.
ShowInTaskBar
Dtermine si un nouveau bouton est ajout dans la barre des tches lorsque la fentre est
ouverte :
Size
Cet objet dfinit la taille du formulaire laide de deux proprits : width (largeur) et
height (hauteur).
Startposition
76/135
Valeur
Manual
CenterScreen
WindowsDefaultlocation
WindowsDefaultBounds
Centerparent
Description
Position dfinie par la proprit location
Centr par rapport lcran
Situ lemplacement par dfaut de Windows et possde la taille
dfinie dans size
Situ lemplacement par dfaut de Windows et possde la taille
par dfaut de Windows
Centr par rapport la fentre ayant dclench louverture.
Text
TopMost
Si cette option est active (true) le formulaire sera toujours au dessus de tous les autres
formulaires, mme sil nest pas activ. Cette option se prte particulirement bien pour les
botes outils qui doivent toujours rester accessibles.
TransparencyKey
WindowState
Description
Le formulaire apparat avec sa taille standard
Le formulaire est rduit lors de louverture
Le formulaire est en plein cran lors de louverture
77/135
6.1.2.2 Mthodes
Activate
La mthode activate permet de mettre le formulaire au premier plan et de lui donner le focus.
Close
Ferme le formulaire
ShowDialog
Affiche le formulaire en tant que feuille modale, cest dire quau niveau de lapplication,
la fentre restera au premier plan tant quelle nest pas ferme.
6.1.2.2 Evnements
Les vnements correspondent au cycle de vie de lobjet formulaire. Ils sont lists dans
lordre chronologique.
New
Load
Le formulaire ainsi que ses composants sont chargs mais il nest pas visible.
Paint
Se produit lorsque le formulaire est redessin. Cet vnement peut apparatre plusieurs
fois : par exemple au dmarrage et lorsque le formulaire rapparait devant un autre.
Activated
Deactivate
Closing
Le formulaire est en cours de fermeture, les diffrents lments le composant sont dtruits.
Le formulaire est cependant encore visible.
Closed
78/135
Dispose
Resize
Click
DoubleClick
Proprit
InitialDirectory
Title
Filter
DefaultExt
AddExtension
Description
Dossier initial
Titre de la bote
Extension des fichiers accepts
Extension par dfaut
Boolen indiquant si lextension par
dfaut doit tre automatiquement ajoute
Valeur
C:\winnt
Slection du fichier
tous|*.*|Fichier texte|*.txt
gif
True
79/135
MultiSelect
CheckFileExist
FileName
FileNames
ShowDialog
Description
Affiche la fentre
6.1.3.2 Enregistrement
La bote de dialogue denregistrement est identique la bote de dialogue douverture
excepte la proprit Mthode qui disparat. Pour ouvrir une bote denregistrement,
utiliser la classe SaveFileDialog .
80/135
Version simple
Version complte
81/135
Description
Dfinit la couleur par dfaut affiche et retourne la couleur slectionne
par lutilisateur
Boolen dfinissant si la bote de dialogue saffiche en mode complet ou
non
Boolen naffichant que les couleurs gres par la carte graphique
Proprit
Description
82/135
ShowEffects
ShowColor
MinSize
MaxSize
Font
Color
Contrle graphique
Contrle masqu
6.2.1.1 proprits
Name
83/135
Anchor
CanFocus
CanSelect
Dock
Dans le mme esprit, la proprit Dock permet dancrer un contrle aux un bord du
conteneur. Dans lexemple suivant, le bouton est ancr en bas :
84/135
Enabled
Cette proprit est une valeur boolenne spcifiant si le contrle est accessible ou non.
Dans le second cas, le contrle apparatra gris.
Location
Locked
Modifiers
Cette proprit paramtre la visibilit au niveau programmation de lobjet. Elle peut prendre
les valeurs suivantes :
Valeur
Public
Protected
Protected Friend
Friend
Private
Description
Accessible partir de tous les lments de la solution
Accessible partir des membres de la classe et des sous classes
Correspond lunion des visibilits Friend et Protected
Accessible partir du programme et des assemblages lis
Accessible partir des membres de la classe
Size
Cet objet permet de dfinir la taille du contrle. Il est compos de deux proprits, width
(largeur) et height (hauteur).
TabIndex
Text
Cet proprit rfrence le texte contenu ou affich dans un contrle (Par exemple, le texte
affich sur un bouton).
Visible
85/135
Cet proprit dtermine si le contrle est visible lors de lexcution. Attention, aucun
changement nest visible lors de la conception.
6.2.1.2 Mthodes
Mthode
Focus
Description
Donne le focus au contrle
6.2.1.3 Evnements
Evnements
Click
DoubleClick
Enter
GotFocus
KeyDown
KeyPress
KeyUp
LostFocus
MouseDown
MouseUp
MouseMove
MouseWheel
Resize
Description
Activ lors du clic sur le contrle
Activ lors du double clic sur le contrle
Activ lorsque lutilisateur entre sur le contrle
Activ lorsque le contrle reoit le focus
Touche enfonce
Touche enfonce et relache
Touche relache
Activ lorsque le contrle perd le focus
Bouton souris enfonc
Bouton souris relach
Souris dplace sur le contrle
Dplacement de la roulette
Dclench lorsque le contrle est redimensionn
Proprit
CanFocus
CharacterCasing
Focused
ForeColor
Description
Dtermine si le contrle peut recevoir le focus
Dtermine la casse du texte : majuscules (upper) ou minuscules
(lower)
Indique si le contrle dtient le focus
Couleur du texte
86/135
HideSelection
Lines
MaxLength
Modified
MultiLine
PasswordChar
Readonly
Scrollbars
Selectionlength
SelectionStart
Text
TextLength
Mthode
Clear
Copy / Cut
Focus
ResetText
Description
Efface le contenu du champs texte
Copie / coupe la slection dans le presse papier
Donne le focus au contrle
Rtabli la valeur initiale du champs
Evnement
TextChanged
Description
Dclench lorsque le texte change
Lexemple suivant permet de copier dans le presse papier tout le texte contenu dans le
champs textbox1 et de vider ce dernier lorsquil reoit le focus.
Private Sub TextBox1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs)
Handles TextBox1.GotFocus
With Me.TextBox1
.SelectionStart = 0
.SelectionLength = .TextLength
.Copy()
.Text = ""
End With
End Sub
6.2.2.2 Label
Le contrle label est utilis pour afficher du texte qui ne sera pas ditable par
lutilisateur. Il est gnralement utilis pour afficher le rle des diffrents contrles.
Proprit
BorderStyle
AutoSize
Text
Description
Style de bordure
Le contrle sadapte la taille du texte
Contenu du label
87/135
Proprit
Checked
CheckState
ThreeState
CheckAlign
Text
Evnement
CheckedChanged
CheckStateChanged
Description
Valeur boolenne indiquant si la case est coche ou non
Retourne ou modifie la valeur de la case cocher en grant le 3me
mode (gris).
En standard, une case coche peut tre coche ou non. Il existe
cependant un 3me tat Indtermin permettant de gris la case.
Cette proprit permet dactiver ce 3me tat.
Alignement de la case cocher par rapport au contrle
Texte associ au contrle
Description
Se produit lorsque la proprit Checked change
Se produit lorsque la proprit CheckState change
Lexemple suivant comporte 3 cases cocher (pour une slection doptions voiture) :
- ch1 libelle Dcapotable
- ch2 libelle Toit ouvrant
- ch3 libelle Ailerons
88/135
Pour des raisons logiques, il nest pas possible de choisir ch2 et ch3 si ch1 est slectionn.
Le code suivant permet de dcocher et griser les cases.
Private Sub ch1_CheckedChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ch1.CheckedChanged
If Me.ch1.CheckState = CheckState.Checked Then
Me.ch2.Checked = False
Me.ch3.Checked = False
Me.ch2.Enabled = False
Me.ch3.Enabled = False
Else
Me.ch2.Enabled = True
Me.ch3.Enabled = True
End If
End Sub
Private Sub ch2_CheckedChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ch2.CheckedChanged
If Not Me.ch2.Checked = True Then Me.ch1.CheckState = CheckState.Unchecked
If Not Me.ch2.Enabled Then Me.ch2.Enabled = True
If Not Me.ch3.Enabled Then Me.ch3.Enabled = True
End Sub
Private Sub ch3_CheckedChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ch3.CheckedChanged
If Not Me.ch3.Checked = True Then Me.ch1.CheckState = CheckState.Unchecked
If Not Me.ch2.Enabled Then Me.ch2.Enabled = True
If Not Me.ch3.Enabled Then Me.ch3.Enabled = True
End Sub
6.2.2.4 RadioButton
Contrairement aux cases cocher, les boutons radio permettent lutilisateur
deffectuer un seul choix parmi plusieurs options. Cette dernire contrainte impose donc quil
ny ait jamais deux boutons cochs en mme temps : Visual basic soccupe de faire basculer
ltat des boutons pour les boutons prsents dans le mme conteneur. Dans lexemple suivant,
cest le formulaire qui est conteneur. Nous verrons plus loin les conteneurs GroupBox et
Panel .
Les boutons radios possdent les mme proprits et vnements que les cases cocher.
89/135
Lexemple suivant travaille avec 3 boutons radio (rad_blue, rad_red, rad_black) qui
modifie la couleur de fond du formulaire en fonction de celui slectionn. Notez quune seule
procdure est utilise pour implmenter les lvnement CheckedChanged de chaque
bouton radio.
Private Sub rad_CheckedChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles rad_blue.CheckedChanged, rad_black.CheckedChanged,
rad_red.CheckedChanged
If Me.rad_black.Checked Then
Me.BackColor = System.Drawing.Color.Black
ElseIf Me.rad_blue.Checked Then
Me.BackColor = System.Drawing.Color.Blue
Else
Me.BackColor = System.Drawing.Color.Red
End If
End Sub
6.2.2.5 GroupBox et Panel
Au mme titre quun formulaire, les contrles GroupBox et Panel sont des conteneurs,
cest dire quil contiennent eux mme dautres contrles. Ces contrles prsentent deux
intrts majeurs :
Regrouper de manire logique des contrles afin de les isoler (pour les boutons radio
par exemple)
Faciliter le placement de plusieurs contrles car en modifiant la position du conteneur,
vous modifiez la position de tous les contrles contenus
Le GroupBox
Ce contrle possde une seule proprit particulire text qui correspond au texte affich.
Le Panel
90/135
Le contrle panel reprend les fonctionnalits du contrle GroupBox avec en plus la possibilit
de grer les barres de dfilement (proprit AutoScroll).
6.2.2.6 Button
Le contrle button est principalement utilis pour dclencher une action lors du clic.
6.2.2.7 ListBox
Le contrle ListBox permet laffichage dune liste de choix, gnralement des chanes
de caractres, dans laquelle lutilisateur pour effectuer un ou plusieurs choix.
Proprit
MultiColumn
Integralheight
Items
Sorted
Itemheight
SelectedIndex
SelectedIndices
SelectionMode
Description
Permet un dfilement horizontal de la liste
Evite laffichage dune partie dun lment de la liste
Collection reprsentant les lments contenus dans la liste
Elments classs par dans lordre
Hauteur dun lment de la liste
Indice de llment slectionn
Indices des lments slectionns
Mode de slection des lments ( MultiExtended permet une
slection multiple, One permet une seule slection et None
aucune.
Mthode
FindString
SetSelected
GetSelected
Description
Retourne lindice de llment commenant par le texte recherch
Dfinit un lment en tant que slectionn ou non
Retourne un boolen permettant de savoir si un lment est slectionn
ou non
Evnement
Description
SelectedIndexChange Dclench lorsque la proprit SelectedIndex change
Lexemple suivant remplit un ListBox laide dune boucle.
Dim i As Int16
Me.ListBox1.Items.Clear()
For i = 1 To 50
Me.ListBox1.Items.Add("Element no " & i)
91/135
Next
Celui ci affiche llment slectionn lors dun double clic sur le ListBox.
Private Sub ListBox1_DoubleClick(ByVal sender As Object, ByVal e As
System.EventArgs) Handles ListBox1.DoubleClick
Dim elt As String
Dim indice As Int16
indice = Me.ListBox1.SelectedIndex
elt = Me.ListBox1.Items(indice)
MsgBox("Elment slectionn: " & elt)
End Sub
Enfin, le code permettant dafficher la liste des lments slectionns :
Dim elt As String
For Each elt In Me.ListBox1.SelectedItems
MsgBox("Libell: " & elt)
Next
6.2.2.8 ComboBox
Le contrle ComboBox est lassociation du contrle listBox et TextBox : il permet
lutilisateur de slectionner une valeur dans une liste ou de saisir une nouvelle valeur.
Cependant, ce contrle naccepte pas les slections multiples.
6.2.2.9 Splitter
Le contrle Splitter est une nouveaut de la version .Net. Il permet de crer des
barres de sparation redimensionnables pour distribuer lespace du formulaire entre les
diffrents contrles. Splitter est particulirement utilis dans les interfaces de type
explorateur .
Plutt quun long discours, ci-dessous figure le mode opratoire afin de raliser
linterface montre en exemple.
92/135
Proprit
MinSize
MinExtra
Description
6.2.2.10 ImageList
Le contrle ImageList est un conteneur dimages destines tre utilise dans
lapplication ou alors par dautre contrles (Listview, TreeView ). Ce contrle nest pas
visible sur le formulaire et peut contenir tous types dimages (Gif, Jper, Bmp ).
Proprit
ColorDepth
ImageSize
Transparent
Images
Description
Nombre de couleurs utiliser pour les images
Taille en pixels des images
Dfinit la couleur de transparence
Collection contenant les images
Chacune des images possde un Index qui sera ensuite utilis pour les lier aux autres
contrles. La gestion des images se fait laide dun assistant :
Le code suivant permet dajouter une image dans un Imagelist partir dun fichier physique et
la supprimer du contrle :
Dim chemin as string
Chemin = C:\mes documents\toto.gif
Me.Imagelist1.images.add(Image.fromfile(chemin))
Me.Imagelist1.images.RemoveAt(0)
93/135
6.2.2.11 Treeview
Le contrle TreeView permet un affichage hirarchique des donnes la faon de
lexplorateur Windows. Chaque lment du treeview est un nud pouvant son tour contenir
dautres nuds.
Pour remplir le Treeview, vous pouvez utiliser les mthodes lies au contrle ou
utiliser lassistant fourni par le framework. Pour louvrir, utiliser le bouton situ droite de la
proprit Nodes :
Proprit
CheckBoxes
FullrowSelect
ImageIndex
ImageList
Description
Afficher les cases cocher au niveau des lments
La surbrillance stend sur toute la largeur du contrle
Indice de limage par dfaut du contrle ImageList
Contrle ImageList contenant les images utilises par le treeview
94/135
Indent
LabelEdit
Nodes
SelectedImageIndex
ShowPlusMinus
Sorted
Mthode
Nodes.add
95/135
Au mme titre que le TreeView, le ListView possde des assistants afin de dfinir leur
contenu. Pour ouvrir lassistant permettant de grer la liste, cliquer sur le bouton droite de la
proprit Items :
Il existe galement un assistant pour les colonnes : pour louvrir, utiliser le bouton droite
de la proprit Columns . Celles ci napparatront que lors dun affichage au dtail.
96/135
Proprit
AllowColumnReorder
AutoArrange
Columns
FullrowSelect
HeaderStyle
Items
LabelEdit
LargeImageList
MultiSelect
SmallImageList
Sorting
View
Description
Autorise ou non la modification de lordre des colonnes
Organise automatiquement la prsentation des lments
Collection de colonnes
La surbrillance stend sur toute la largeur du contrle
Style des entte de colonne
Collection dlments
Permet lutilisateur de modifier ltiquette des lments
ImageList utilis pour la prsentation LargeIcon
Permet la slection multiple
ImageList utilis pour toutes les prsentation (sauf LargeIcon)
Mode de tri
Mode de reprsentation de la liste
Le code suivant affiche pour chaque caractre son code ascii, le caractre en
minuscule et le caractre en majuscule. Il cre galement les colonnes :
Dim elt As ListViewItem
Dim i As Byte
With Me.ListView1
.View = View.Details
.Columns.Add("Ascii", 50, HorizontalAlignment.Center)
.Columns.Add("Min", 50, HorizontalAlignment.Center)
.Columns.Add("Maj", 50, HorizontalAlignment.Center)
For i = 0 To 255
elt = New ListViewItem
elt.Text = CType(i, String)
elt.SubItems.Add(LCase(Chr(i)))
elt.SubItems.Add(UCase(Chr(i)))
Me.ListView1.Items.Add(elt)
Next
97/135
End With
6.2.2.13 TabControl
Le contrle TabControl permet laffichage donglet contenant chacun plusieurs
contrles. Ce dernier est gnralement utilis pour regrouper logiquement des contrle ou
pour placer beaucoup de contrles dans la mme formulaire.
Pour chaque page , il est possible de configurer les options dapparence qui sont
analogues celles dun formulaire.
Proprit
Alignment
HotTrack
Imagelist
Multiline
TabPages
Description
Dfinit la position des onglets par rapport aux pages
Modifie lapparence des onglets lorsque la souris passe dessus
ImageList li pour les icnes donglets
Permet laffichage des onglets sur plusieurs lignes
Collection de pages.
6.2.2.14 Menus
98/135
Pour crer un ou plusieurs menus, vous devez ajouter votre formulaire le contrle
MainMenu . A ce moment, le contrle apparat en dessous du formulaire et un menu est
ajout. Il ny a pas dassistants particulier : pour ajouter un lment, cliquer sur les zones
Tapez ici :
Pour dfinir une barre de sparation, crer un lment avec - (tiret) en libell.
Proprit
Checked
DefaultItem
MdiList
RadioCheck
ShortCut
ShowShorcut
Text
Description
Indique si llment est coch
Dfinit llment en tant qulment par dfaut
Affiche la liste des fentres enfants dans le cas dune fentre MDI
Indique si llment est activ
Permet de dfinir un raccourci pour le menu
Affiche le raccourci
Libell du menu
6.2.2.15 DateTimePicker
Le contrle DateTimePicker associe une zone de texte et un calendrier permettant la
slection dune date.
99/135
Proprit
Checked
CustomFormat
Format
MaxDate
MinDate
Description
Si activ, spcifie lorsque lutilisateur a slectionn une date
Chaine de format pour laffichage de la date slectionne
Mode daffichage de la date
Date maximale slectionnable
Date minimale slectionnable
Evnement
ValueChanged
Description
Dclench lorsque la valeur change
Description
Dfinit linterval en milliseconde. La valeur doit tre comprise entre 1
et 65536
Active ou dsactive le timer
Evnement
Tick
Description
Dclench chaque interval.
100/135
End If
End Sub
Ensuite, vous activer le drag and drop en spcifiant llment dplacer ainsi que les
effets. Llment dposer est de type Object (donc ce peut tre nimporte quel lment).
Pour cela, on utilise la mthode DoDragDrop prenant deux arguments : lobjet dplacer
et les effets voulus. Les effets sont membres de la classe DragDropEffects .
Effet
All
Copy
Link
Move
Description
Les donnes sont copies, supprimes et parcourues dans la zone cible
Les donnes sont copies dans la zone de dplacement
Les donnes sont lies la cible de dplacement
Les donnes sont dplaces vers la cible de dplacement
6.2.3.3 Contrler la rception
En premier lieu, vous devez spcifier que le contrle cible peut recevoir des lments :
pour cela, paramtrez la proprit AllowDrop True .
Le contrle de la rception consiste modifier lapparence du curseur et du contrle
cible en vrifiant que llment dplac corresponde aux besoins. Pour cela, nous disposons
de plusieurs vnements (ces 3 vnements sont valides tant que lutilisateur ne lche pas le
bouton de la souris).
Evnement
DragEnter
Description
Se produit lorsque le curseur entre dans
la zone du contrle.
DragOver
DragLeave
Utilisation
Utilis pour modifier lapparence
du contrle cible et du curseur et
vrifier la validit de llment
dplac
Description
Correspond llment dplac
Dfini laction autorise par le contrle de destination et permet de modifier
lapparence de la souris
Permet de connatre ltat des touches Shift, Alt, Ctrl
Position du curseur sur le contrle
Pour rcuprer llment ou lobjet dplac, vous devez utiliser la mthode suivante :
e.Data.GetData(DataFormats.type_donnes)
101/135
Cette mthode est utilise pour vrifier le type dobjet dplac (dans la mthode DragEnter).
102/135
Description
Contient les objets ADO nappartenant pas un fournisseur
spcifique (DataSet, DataTable )
Contient les classes de base pour plusieurs objets des autres
espaces de noms
Contient les objets associs au fournisseurs OLEDB .Net
Contient les objets associs au fournisseurs Sql Server .Net
103/135
Fournisseur
OLEDB
SQL
OLEDB
ODBC
OLEDB
Chaine de connexion
Microsoft.Jet.OLEDB.4.0
SQLOLEDB.1
OraOLEDB.Oracle
MSDASQL
MySQLProv
Classe
104/135
ODBC
OLEDB
SQL Server
Odbc.OdbcConnection
OLEDB.oledbConnection
Sqlclient.SQLconnection
7.3.1 Proprits
Proprit
Description
ConnectionString
Chane utilise pour la connexion
ConnectionTimeOut Dlai en seconde maximum pour ltablissement de la connexion
State
Etat de la connexion (Closed, connecting, Open, Executing, Fetching,
Broken)
Provider
Fournisseur utilis
DataSource
Emplacement de la base de donnes
La principale proprit est connectionString . Cest une chane de caractres
dfinissant les principaux attributs ncessaires la connexion. Parmi ces informations
figurent :
Le fournisseur daccs
Lemplacement de la base
Informations dauthentification
La base de donnes initiale
Lexemple suivant ouvre une connexion avec une base Microsoft Access :
Dim cn As New OleDb.OleDbConnection
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=E:\Support\vbnet\bd2.mdb;"
cn.Open()
Select Case cn.State.ToString
Case ConnectionState.Open
MsgBox("Ouvert")
Case ConnectionState.Broken
MsgBox("Interrompue")
Case ConnectionState.Closed
MsgBox("Ferme")
Case ConnectionState.Connecting
MsgBox("En cours de connexion")
Case ConnectionState.Executing
MsgBox("En excution")
Case ConnectionState.Fetching
MsgBox("Extraction de donnes")
End Select
105/135
cn.Close()
Lexemple ci-dessous ouvre une connexion avec un serveur SQL Server, spcifie un
compte SQL pour lauthentification et paramtre le timeout :
Dim cn as new SqlClient.SqlConnection
Cn.connectionString = "Provider=SQLOLEDB.1;Data Source=(local) ;User Id=sa ;Initial
Catalog =NorthWind ;Connection TimeOut=50"
Cn.open
Msgbox(cn.state)
Cn.close
Enfin, un exemple de connexion SQL Server avec authentification Windows, cest
dire que lutilisateur doit tre authentifi au niveau du domaine afin daccder aux donnes.
Dim cn as new SqlClient.SqlConnection
cn.ConnectionString = "Integrated Security=SSPI;Persist Security Info=False;Initial
Catalog=planning;Data Source=zeus;Workstation ID=OLIVIER;"
cn.Open()
cn.close
7.3.2 Mthodes
Mthode
Open
Close
BeginTransaction
CreateCommand
Description
Ouvre la connexion
Ferme la connexion et libre les ressources
Dbute une transaction avec un niveau disolation
Cre un objet Command
7.3.3 Evnements
Evnement
StateChange
InfoMessage
Description
Dclench lors du changement de la proprit State
Dclench lorsque la BD envoie un message
106/135
Description
Texte SQL de la requte ou nom de la procdure stocke
Type de la commande (requte, table, procdure)
Connexion lie la commande
Objet transaction li (voir plus bas)
Nombre de seconde pour lexcution de la commande
Collection de paramtres envoyer avec la commande
Description
Annule lexcution de la commande
Excute la requte daction et retourne le nombre de ligne affectes
Excute la requte de slection et retourne un objet de type DataReader
Excute la requte et retourne la valeur scalaire (1re ligne, 1re colonne)
Cre un objet paramtre
Excute la requte de slection et retourne un objet de type XmlReader
107/135
Description
Nombre de champs (colonne)
Dtermine si le DataReader comporte 1 ou plusieurs lignes
Nombre de ligne affecte lors dune opration en Transact SQL
Mthode
Close
Read
GetValue(i)
GetName(i)
GetType(i)
Description
Ferme le DataReader et remplit les paramtres de retour
Avance au prochain enregistrement
Retourne la valeur du champs lindice i
Retourne le nom du champs lindice i
Retourne le type du champs lindice i
108/135
Description
Valide toutes les modifications effectues dans le DataSet
Refuse toutes les modifications effectues dans le DataSet
Proprits
HasChanges
Description
Retourne vrai si le DataSet contient des tables dont les
enregistrements ont t modifis, supprims, ajouts
Description
Collection des colonnes de la table
Collection des contraintes de la table
Collection des lignes de la table
109/135
MinimumCapacity
CaseSensitive
PrimaryKey
Le nom de la colonne
Le type de la colonne (ci dessous figure la liste des types utilisables
Type
Boolean
Byte
Char
DateTime
Decimal
Double
Int16
Int32
Int64
SByte
Single
String
TimeSpan
UInt16
UInt32
UInt64
Description
Valeur boolene
Octets (Entier de 0 254)
Reprsente 1 caractre
Heure & Date
Dcimal
Nombre virgule flottante double prcision
Entier sign de XX Bits
Proprit
AllowDBNull
AutoIncrement
AutoIncrementSeed
AutoIncrementStep
Defaultvalue
Description
Autorise la valeur Null
Dfinit si la colonne est un compteur dont la valeur
sincrmente automatiquement (Attention, le champs doit
tre de type Integer )
Valeur de dpart pour lautoIncrement
Pas de lincrment
Valeur par dfaut de la colonne
110/135
MaxLength
Unique
Lexemple suivant ajoute des champs la table personne en utilisant les diffrentes
proprits et spcifie la cl primaire :
Dim donnees As New DataSet("donnees")
Dim personne As New DataTable("personne")
personne.CaseSensitive = False
personne.MinimumCapacity = 50
donnees.Tables.Add(personne)
Dim col1 As New Data.DataColumn("pers_num", GetType(Integer))
col1.AutoIncrement = True
col1.AutoIncrementSeed = 1
col1.AutoIncrementStep = 1
donnees.Tables("personne").Columns.Add(col1)
donnees.Tables("personne").PrimaryKey = New DataColumn() {col1}
Dim col2 As New Data.DataColumn("pers_nom", GetType(String))
col2.Unique = True
col2.MaxLength = 255
col2.DefaultValue = "inconnu"
donnees.Tables("personne").Columns.Add(col2)
7.6.3 Objet DataRelation
Un DataSet est une reprsentation en objets dune base de donnes. Un des points
fondamental des bases de donnes est la mise en place de relation permettant ensuite de
vrifier la cohrence des donnes saisies dans plusieurs tables.
La cration dune relation se fait par rapport un DataSet en crant un objet
DataRelation et en spcifiant les champs des tables qui sont lis. Une relation concerne deux
champs. Lors de la cration de la relation, vous devez spcifier son nom, le champs cl
primaire et le champs cl trangre . Lexemple suivant cre les tables personne et
categorie et met en place une relation entre les deux :
Dim donnees As New DataSet("donnees")
'creation de la table personne et ajout des champs
Dim personne As New DataTable("personne")
personne.CaseSensitive = False
personne.MinimumCapacity = 50
donnees.Tables.Add(personne)
Dim col1 As New Data.DataColumn("pers_num", GetType(Integer))
col1.AutoIncrement = True
col1.AutoIncrementSeed = 1
col1.AutoIncrementStep = 1
donnees.Tables("personne").Columns.Add(col1)
111/135
112/135
Le parcourt linaire qui consiste accder aux enregistrements dune seule table
partir de leurs indices (lments inexistants dans les bases de donnes relationnelles)
Le parcourt hirarchique permettant dutiliser les relations mises en place entre les
tables dun DataSet
Le second exemple permet dafficher pour chaque catgorie, toutes les personnes
correspondantes. Le code vadans un premier temps parcourir toutes les catgories et, avec la
mthode GetChildRows rcuprer tous les enregistrements correspondant dans la table
personne. Cette mthode prend en argument la relation pour laquelle vous souhaitez rcuprer
les enregistrements enfants.
Dim contenu2 As String = "--- Liste des personnes par catgorie---" & vbCr
Dim elt As DataRow
With donnees.Tables("categorie")
For i = 0 To .Rows.Count - 1
contenu2 &= .Rows(i).Item("cat_lib") & vbCr
For Each elt In .Rows(i).GetChildRows("personne_categorie")
contenu2 &= "--> " & elt.Item("pers_nom") & vbCr
Next
Next
End With
MsgBox(contenu2)
113/135
Le rsultat obtenu :
114/135
115/135
Mthode
Addnew
Delete
Find
FindRows
Description
Autorise la suppression denregistrements
Autorise la modification denregistrements
Autorise lajout denregistrements
Nombre denregistrement
Dfinit un filtre pour les donnes : chane de texte quivalente la
clause where dune requte SQL
Dfinit le tri : Equivalant la clause order by dune requte
SQL
Description
Ajoute un enregistrement
Supprime un enregistrement
Retourne lindice de lenregistrement correspondant aux
paramtres de recherche par rapport au champs spcifi dans
lattribut sort
Retourne un ensemble de DataRow correspondant la recherche.
Description
116/135
ColumnChanged
ColumnChanging
RowChanged
RowChanging
RowDeleted
RowDeleting
OleDbDataAdapter
SqlDataAdapter
Dim da As New OleDb.OleDbDataAdapter("select * from Table1", cn)
117/135
Le remplissage des lments dun DataSet se fait laide de la mthode Fill de lobjet
DataAdapter. Plusieurs configurations sont possibles pour la rcupration des donnes en
raison de la surcharge de la mthode Fill :
Quelque soit la surcharge utilise, la mthode Fill a la capacit douvrir et de fermer la
connexion utilise pour la cration du DataAdapter. Attention, si vous accder plusieurs des
tables via un DataAdapter, il est prfrable douvrir et fermer vous mme la connexion.
118/135
da.Fill(ds, "matable")
Il est possible lors de lappel de la mthode Fill de spcifier quelles sont les lignes de
la requte rcuprer. Pour cela, on utilise deux paramtres qui sont lindice de dpart et le
nombre maximal denregistrement rcuprer. Cette signature permet en particulier de
gnrer un affichage par page en rcuprant tour tour les 10 premiers enregistrements, les 10
suivants etc
Lexemple suivant rcupre 10 enregistrements partir du 50 me.
Dim da As New OleDb.OleDbDataAdapter("select * from Table1", cn)
da.Fill(ds, 50, 10, "toto")
119/135
Table : Client
no
num
name
nom
surname
birth
prenom
daten
120/135
'remplissage
da.MissingMappingAction = MissingMappingAction.Ignore
da.Fill(ds.Tables("customer"))
7.7.2.3 Importer la structure
Dans certains cas, il peut tre interressant de ne rcuprer que la structure dune source
de donnes sans pour autant rcuprer les enregistrements qui la composent. Par exemple, un
programme ne faisant que de linsertion aura besoin de la structure mais pas des donnes.
Il faut dans ce cas, utiliser la mthode FillSchema et passer les arguments suivants :
Paramtre
DataSet
SchemaType
SrcTable
Description
Le dataSet vers lequel exporter les donnes
Spcifie si les mappings dfinit doivent tre utiliss :
SchemaType.Mapped oui
SchemaType.Source non
Nom du DataTable vers lequel envoyer la structure
121/135
Proprits utilises
Afin de mener bien les oprations de mise jour vers la source de donnes, lobjet
DataAdapter doit tre en mesure de connatre ltat des enregistrement (DataRow) des
diffrents DataTable.
Pour cela, chacune des lignes possde la proprit RowState pouvant prendre les
valeurs suivantes :
Valeur
1
2
4
8
16
Description
Detached : la ligne nest encore intgre aucun DataTable
Unchanged : Aucun changement depuis le dernier appel de AcceptChanges
Added : la ligne a t ajoute
Deleted : La ligne a t supprime
Modified : La ligne a t modifie
InsertCommand
UpdateCommand
DeleteCommand
Pour crer ses commandes, vous pouvez soit utiliser la classe CommandBuilder
correspondant votre fournisseur de donnes qui gnrera automatiquement les commandes
ou alors les paramtrer vous mme :
Classe CommandBuilder
122/135
Les commandes cres sont des requtes SQL contenant plusieurs paramtres
(reprsents par des ?).
Dans le cas dune commande Delete ou Update, les commandes gnrs prennent en
compte le fait que lenregistrement cible mettre jour doit avoir les mme valeurs que lors
de la lecture initiale. Si une des valeurs de lenregistrement t modifie sur la source de
donnes, la mise jour ne sera pas valide et une erreur sera retourne.
Voici les commandes gnres par la classe CommandBuilder :
o Commande Insert
INSERT INTO Client( nom , prenom , daten ) VALUES ( ? , ? , ? )
Notez que dans le cas dune cl primaire avec numroauto ou AutoIncrement, le
champs nest pas spcifie car il est gnr par la base de donnes.
o Commande Delete
DELETE FROM Client WHERE ( (num = ?) AND ((? = 1 AND nom IS NULL) OR (nom =
?)) AND ((? = 1 AND prenom IS NULL) OR (prenom = ?)) AND ((? = 1 AND daten IS
NULL) OR (daten = ?)) )
o Commande Update
UPDATE Client SET nom = ? , prenom = ? , daten = ? WHERE ( (num = ?) AND ((? = 1
AND nom IS NULL) OR (nom = ?)) AND ((? = 1 AND prenom IS NULL) OR (prenom = ?))
AND ((? = 1 AND daten IS NULL) OR (daten = ?)) )
123/135
Il est galement possible de rcuprer partir dun DataTable uniquement les lignes
ayant subies des modifications (ajout ou suppression ou modification). De cette faon, vous
tes en mesure dactualiser quune partie des lignes modifies.
La mthode GetChanges des objets DataTable et DataSet permet de ne rcuprer que
les enregistrement modifis.
Lexemple ci dessous ne met jour que les enregistrements supprims de la table
Client : pour cela, on utilise la mthode GetChanges permettant de ne rcuprer que
les enregistrement ayant subit des modifications (ajout, suppression, modification).
'maj des enregistrements supprims :
Dim tbl2 As DataTable =
ds.Tables("Client").GetChanges(DataRowState.Deleted)
da.Update(tbl2)
124/135
Une fois la mise jour effectue, la proprit RowState des diffrents DataRow
concerns est passe UnChanged spcifiant que la ligne est valid.
7.7.3.3 Gestion des conflits
Lors de la mise jour de la base de donnes avec la mthode Update, plusieurs conflits
peuvent apparatre. Un conflit est une exception de mise jour de la source.
Try
Da.update(ds, Clients)
Catch ex as Exceptio
Msgbox(Erreur de mise jour )
End Try
Dans le cas dune erreur de mise jour, la mise jour des lignes suivantes est ommise.
Afin de forcer la mise jour de toutes les lignes (mme celles suivants un conflit), vous devez
paramtrer le comportement du DataAdapter :
Da.ContinueUpdateOnErrors = true
Aprs une mise jour, toutes les lignes voit leur proprit RowState Unchanged
sauf les lignes conflictuelles : la mthode consiste donc parcourir les RowState et rcuprer
seulement les lignes dont RowState est diffrent de UnChanged .
Lexemple suivant illustre cette mthode :
da.ContinueUpdateOnError = True
da.Update(ds, "Client")
'affichage des lignes conflictuelles
chaine = ""
If ds.HasChanges Then
Dim dr As DataRow
For Each dr In ds.Tables("Client").Rows
If dr.RowState <> DataRowState.Unchanged Then
Select Case dr.RowState
Case DataRowState.Deleted
dr.RejectChanges() 'retablit l'tat initial
afin de pouvoir accder la PK
chaine &= "Suppression impossible pour la cl "
& dr.Item(0)
Case DataRowState.Modified
chaine &= "Modification impossible pour la cl
" & dr.Item(0)
End Select
End If
Next
MsgBox(chaine)
Else
MsgBox("Toutes les mises jour ont t effectues")
End If
125/135
La seconde mthode consiste rcuprer les enregistrements non valids par la mthode
Update par lintermdiaire de la mthode GetChanges : vous crez partir de cette
mthode un nouvel objet DataTable et vous pouvez ensuite parcourir les enregistrements
de cette table afin didentifier les conflits.
Pour la gestion des conflits, il est galement possible dutiliser les vnements
RowUpdating et RowUpdated respectivement dclenchs avant et aprs la mise jour
dun enregistrement (cest dire lenvoi de la commande correspondante).
Lvnement RowUpdating est utilis pour prvenir les sources de conflits : par exemple,
dans une application ou deux utilisateurs peuvent simultanment modifier diffrents champs
dun mme enregistrement, un conflit sera automatiquement dclench pour le dernier faisant
la mise jour. Lvnement RowUpdating peut vous permettre de modifier
lUpdateCommande et ny inclure que les champs modifis (ceux dont lancienne valeur est
diffrente de la nouvelle).
Lvnement RowUpdated quand lui permet de rsoudre les conflits une fois que ceux ci
sont dclenchs afin de ne pas avoir dautres rpercutions sur les enregistrements suivants.
Ces deux vnements prennent en paramtre e de type System.Data.FillErrorEventArgs :
Proprit
StatementType
Command
Row
Status
Errors
Description
Type de la commande
Objet commande
Objet DataRow actualiser
Rgle de gestion des lignes suivantes
Erreurs gnres (seulement dans RowUpdated)
126/135
Dans le cas dun problme dactualisation bloquant, il peut tre interressant dannuler
toutes les actualisations dj ralises afin de laisser la base de donnes dans un tat cohrent.
Pour annuler toutes les actualisations dj fates, il suffit de lier les commandes une
transaction (regroupement de commande) car lobjet transaction possde les mthodes
commit et rollback qui permettent respectivement de valider et dannuler toutes les
commandes dune transaction.
Lexemple suivant effectue les mises jour et annule lensemble des commandes si une
erreur survient.
'connexion
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=E:\Support\vbnet\bd2.mdb;"
'dataset, dataadapter
Dim ds As New DataSet
da = New OleDb.OleDbDataAdapter("select * from Client", cn)
da.Fill(ds, "Client")
'creation des commandes et rattachement la transaction
Dim cmdbuilder As New OleDb.OleDbCommandBuilder(da)
da.InsertCommand = cmdbuilder.GetInsertCommand
da.DeleteCommand = cmdbuilder.GetDeleteCommand
da.UpdateCommand = cmdbuilder.GetUpdateCommand
'transaction & initialisation
Dim transac As OleDb.OleDbTransaction
cn.Open()
transac = cn.BeginTransaction
da.InsertCommand.Transaction = transac
da.DeleteCommand.Transaction = transac
da.UpdateCommand.Transaction = transac
'modification des donnes
ds.Tables("Client").Rows(0).Delete()
ds.Tables("Client").Rows(1).Item(1) = "tutu"
'effectue la mise jour
da.ContinueUpdateOnError = True
da.Update(ds, "Client")
'si erreur, on annnule tout
127/135
If ds.HasChanges Then
MsgBox("Erreur(s) lors de la mise jour. Toutes les oprations
sont annules.")
transac.Rollback()
Else
MsgBox("Mise jour russie !")
transac.Commit()
End If
'fermeture de la connexion
cn.Close()
Liaison de donnes simple : une seule proprit du contrle est lie une colonne de
la source de donnes (exemple : champs texte)
128/135
7.8.1.2 ControlBindingCollection
Cet objet contient lensemble des objets Binding pour un contrle (par exemple dans le
cas dun TextBox dont le contenu serait dfinit par le champs nom et la couleur de fond
par le champs color ).
7.8.1.3 BindingManagerBase
Cet objet contient lensemble des objets Binding lis la mme source de donnes. Cest
grce lui que vous pourrez par exemple parcourir les donnes (suivant, prcdent), ajouter
ou supprimer des enregistrements etc
Proprit
Count
Position
Description
Nombre de ligne gres par le BMB
Indice de la ligne en cours
Mthode
AddNew
CancelCurrentEdit
RemoveAt(indice)
Description
Ajoute un nouvel enregistrement
Annule ldition ou lajout en cours
Supprime lenregistrement la position Indice
7.8.1.4 BindingContext
Contient lensemble des objets BindingManagerBase pour les contrles dun formulaire
par exemple.
129/135
130/135
Une fois les informations de la boite de dialogue paramtre, un nouvel objet DataSet
est cr :
Pour un TextBox
Pour un ListBox
131/135
132/135
133/135
134/135
135/135