Visual Basic.Net
www.tri.on.ma
Olivier Zimmermann
Victor Formation
Aot 2003
Fiche sur VBFrance : Olixelle http://www.vbfrance.com/auteurdetail.aspx?ID= 315759
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 ......................................................................................... 10
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 .................................................................................................. 12
3.1 LES SOLUTIONS................................................................................................................ 12
3.2 CREATION DUN PROJET................................................................................................... 12
3.3 CONFIGURATION DUN PROJET ........................................................................................ 13
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 ................................................................................ 17
4.2.1.3 Autres types ...................................................................................................... 17
4.2.2 Dclaration de variables ......................................................................................... 17
4.2.3 Porte et visibilit des variables ............................................................................. 18
4.2.3.1 Porte des variables .......................................................................................... 18
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 .................................................................................... 21
4.3.4 Oprateurs de concatnation .................................................................................. 21
4.3.5 Oprateurs logiques ................................................................................................ 22
4.4 LES STRUCTURES DE CONTROLE ...................................................................................... 22
1.1 Historique
Version Nouveauts
1.0 Sortie en 91, Visual Basic innove en particulier grce son environnement de
dveloppement permettant de masquer les tches fastidieuse
3.0 Evolution du langage, apparition de nouvelles fonction et de structures de contrle
(select case)
4.0 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)
5.0 Disparition des applications 16 bits et stabilit accrue du langage
6.0 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.
Ces spcifications concernent lutilisation du FrameWork .Net ainsi que de lIDE, pas
lexcution des programmes MSIL.
Laide dynamique propose tous les moments de la conception des rubriques daide
utiles en fonction de ce que vous fates. Par exemple, la rubrique crer une collection de
contrles sera affiche lorsque vous ajouterez un bouton radio votre application.
La fentre liste des tche permet de recenser lensemble des tche raliser sur votre projet.
Cette liste peut tre remplie de plusieurs faons :
- Une tche que vous aurez vous mme dfinie (ex : appeler le client 11h)
- Une tche issue des commentaires de votre code : tous commentaires de votre code
commencant par todo: sera automatiquement ajout
- Lorsquune erreur de syntaxe est dtecte par Visual Studio, elle est automatiquement
ajoute dans la liste
-
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
Proprits de configuration
Proprit Description
Action de dmarrage Action raliser par lenvironnement lors de la demande
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
- 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
Tout le code contenu dans le module sera insr entre module et end module
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.
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
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.
Depuis la version .Net, les chanes de caractre sont enregistres au format Unicode, cest
dire que chaque caractre utilise 2 octets.
Dim i as integer = 0
Dim moncar as char = i
Dim aujourdui as date = #12/07/02#
Dim nom as string
La porte dune variable est quivalent sa dure de vie, cest dire tant quelle est
accessible. La porte est dfinie en fonction de lendroit o est place sa dclaration. Quatre
niveaux de porte existent :
- Niveau Bloc : si la variable est dclare dans un bloc (boucle while, condition ), la
variable ne sera valable que lintrieur du bloc
- 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 .
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
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)
Les constantes permettent de stocker une valeur en sassurant quelle ne sera jamais
modifie. Elles sont gnralement utilises pour amliorer la modularit du code en ne
dfinissant quune seule fois une valeur utilise plusieurs fois.
Il nest pas obligatoire de prciser le type de la constante sauf lorsque loption
Strict du compilateur est active.
Enum civilite
Monsieur
Madame
Mademoiselle
End enum
Enum jour
Jeudi = 4
Lundi = 1
Dimanche = 7
End enum
Une fois lnumration dclare, il est possible de dclarer une variable du type de
lnumration.
De cette faon, la variable macivilite pourra uniquement prendre les valeurs dfinies
dans lnumration :
Macivilite = monsieur
Macivilite = 1 correspond madame
Macivilite = 4 invalide, lindice max est 2
Un seul oprateur daffectation existe et ce quelque soit le type de donnes concern : le signe
gal = . Il permet daffecter une valeur une variable.
Mavar = 123
Il est galement possible dutiliser les oprateurs arithmtique lors dune affectation.
Dim i as integer = 5
I += 3 quivalent i = i + 3
les oprateurs arithmtique permettent deffectuer des calculs sur des variables, constantes
Il permettent de comparer deux membres et, en fonction du rsultat, retournent True ou False
- 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.
Une condition est une comparaison entre deux membres dont le rsultat retourne True
(Vrai) ou False (Faux). Une condition est compose dau moins 2 membres (variables,
constantes, appel de fonction) et ventuellement doprateurs logiques permettant de lier les
sous conditions. Les conditions sont utilises dans les structures de contrle afin den dfinir
leur fonctionnement.
4.4.2.1 Structure If
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.
Forme normale
La forme normale permet dexcuter plusieurs instructions lorsque la condition est vrifie.
Forme volue
La forme volue permet dexcuter plusieurs instructions lorsque la condition est vrifie
et dexcuter dautres instructions.
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.
- 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.
Switch
Choose
Linstruction Choose permet de choisir une valeur dans une liste en fonction dun Index.
Attention, les Index commencent 1 !
La structure while rpte les instructions contenues entre While et End while tant que
la condition est vrifie.
While condition
end while
dim i as integer = 0
while i < 10
msgbox (i)
i++
end while
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
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
loop while condition
Do
loop until condition
dim i as integer
for i = 1 to 10 step 2
msgbox (i)
next
Enfin, il existe plusieurs cas dans lequel lutilisation de procdures est impos par Vb.
4.5.1.1 Dclaration
- 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)
4.5.2.1 Dclaration
Lors de la dclaration dune fonction, il faut reprendre les mme lments que pour les
procdures avec en plus le type de retour de la fonction (String, integer).
La fonction doit galement comporter linstruction Return qui permet de dfinir la valeur
retourne par la fonction.
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))
4.5.3.1 Dclaration
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 :
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)
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
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.
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
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.
Pour la procdure somme, il sera donc possible deffectuer les appels suivants :
Somme (12,2)
Somme(15,7,6,9,2,4)
De manire gnrale, il est prfrable dutiliser les mthodes lies aux type de variables dans
le sens o elles sont accessibles par simple ajout du point aprs le nom de la variable (Liaison
prcoce).
Attention, lappel des mthodes ne change pas la valeur de la variable mais retourne la
valeur modifie.
Lensemble des fonctions disponibles pour la gestion des nombres est disponible dans la
classe Math.
Pour les exemples ci dessous, nous utiliserons la variable suivante comme base :
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)
Lexpression formater peut tre une valeur numrique ou de type date / heure.
Formats prdfinis
Caractre Description
0 Affiche le chiffre ou 0
# Affiche le chiffre ou rien
. Dcimal
, Sparateur de milliers
\ Caractre dchappement
Formats prdfinis
Caractre Description
: Sparateur dheures
/ Sparateur de date
Les bote de dialogue intgres sont des feuilles modales (cest dire quelle suspendent
lexcution du programme jusqu leur fermeture) destines afficher une information ou
demander une saisie.
Prompt
Icne
Type boutons
Types de bouton
Constantes de Retour
Type dicne
Exclamation
Information
Question
Loption bouton par dfaut permet de dfinir le bouton qui sera slectionn par dfaut.
Titre
Message
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.
La classe CollectionBase permet de crer une classe collection contenant tous les
lments de base ncessaires la cration. Il ne reste qu dfinir quelques mthodes
supplmentaires pour avoir une collection oprationnelle.
Dans les exemples suivants, nous nous inspirons de la classe Personne dcrite dans
le chapitre consacre la POO.
La cration dune collection se fait partir dune classe dans laquelle il faut hriter de
system.collections.collectionbase .
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 :
End Class
4.7.1.2 Utilisation
macol.add(New personne("toto"))
macol.add(New personne("titi"))
macol.RemoveAt(0)
MsgBox(macol.Item(0).nom)
La classe Stack est une collection particulire de type LIFO (Dernier rentr premier
sorti) permettant de grer une pile. Cette dernire se prsente comme un tableau mais contient
des fonctionnalits diffrentes. Pour imager, vous empiler des lments les uns sur les autres
et vous ne pouvez retirer que llment du haut. Ce genre de liste est utilis pour grer les files
dappels.
Pour dclarer une pile, on utilise la classe Stack en prcisant le nombre maximum
dlments :
Pour dclarer une telle files dattente, utiliser la classe Queue en prcisant deux
paramtres : la taille initiale de la liste (par dfaut 32) et le facteur dextension (par dfaut 2).
Erreur Description
De syntaxe 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.
Dexcution Une erreur dexcution survient lorsque lenvironnement
La gestion en ligne existait dj sur la version 6. Elle permet de dfinir les traitements
effectuer dans une procdure lorsquune erreur survient.
Linstruction On error est la base de la gestion derreur : cest elle qui va spcifier
les oprations raliser lorsquune erreur survient.
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.
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.
On error goto 0
Une fois que vous avez redirig le code lors dune erreur, vous devez dfinir les
actions entreprendre : Il existe pour cela 2 mots cls permettant de continuer lexcution du
programme :
Instruction Description
Resume Cette instruction reprend le programme o il stait interrompu et essaye
de rexcuter linstruction lorigine du plantage.
Resume Next Reprend lexcution du programme partir de linstruction suivant
linstruction lorigine du plantage.
Mthode Description
Clear Efface les paramtres de lobjet
Raise Dclenche une erreur
La gestion des exceptions est une mthode plus rcente pour la gestion des erreurs.
Cette mthode est standardise pour tous les langages du FrameWork .Net . De plus, elle
permet de dfinir une gestion derreur pour un bloc particulier et non pas pour une procdure
ou une fonction.
La gestion des exceptions pour un bloc de code est structur de la manire suivante : le
code dangeureux doit tre compris dans le bloc try . Ensuite pour chaque exception
suceptible dtre dclenches, le mot cl catch (analogue au select case) permet de dfinir
les traitements excuter. Enfin, le bloc finally contient du code qui sera excut dans
tous les cas.
Try
{ Instructions dangeureuses}
Try
Microsoft.visualbasic.fileopen(1, A:\fichier.txt, openmode.input)
Catch exception1 as system.io.ioexception
Msgbox(Erreur lors de louverture du fichier : & exception1.source)
Finally
Msgbox(Fin de la procdure)
End try
A chaque exception est associ un objet contenant les informations sur lexception leve :
Proprit Description
Message Description textuelle de lexception
Source Nom de lapplication ayant gnre lerreur
StackTrace Liste de toutes les mthodes par lesquelles lapplication est passe avant le
dclenchement de lerreur
TargetSite 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.
Le principe des classes, objets, mthodes et lencapsulation sont les principes de base de
la programmation oriente objet. Plusieurs aux concepts viennent enrichir la POO comme
lhritage qui permet de rcuprer le comportement dune classe dj existante pour en crer
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.
La dfinition dune classe permet de dfinir un modle pour les objets qui seront crs.
Pour crer une nouvelle classe, il est conseill de crer un nouveau fichier (.vb) dans le projet.
La dclaration dune classe se fait avec les mots cls class et end class .
En visual Basic .Net, il est possible de dfinir une classe lintrieur dune autre classe :
La visibilit dune classe permet de dfinir la porte de celle ci, cest dire les blocs
de code qui auront accs la classe. Cinq niveaux de visibilit existent :
Visibilit Description
Public Classe utilisable dans tout les projet
Friend Classe utilisable uniquement dans le projet
Private Classe utilisable uniquement dans le module / classe o elle est dfinie
Protected Classe utilisable dans les sous classes de celle o elle est dfinie
Protected friend Union des portes de Protected et Friend
Option Description
MustInherit Indique que la classe sert de base dans une relation dhritage (Super
classe).
NotInheritable Indique que la classe ne peut tre hrite. Elle devra tre au dernier
niveau de la hirarchie dhritage.
Le mot cl Inherits permet dhriter des membres dune super classe(Cf section sur
lhritage).
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 :
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.
MonObjet = Nothing
Moi = nothing
Toi = nothing
5.3.1 Variables
End Class
dim p as personne
p = new personne()
p.nom = toto
p.prenom = titi
Pour palier ces problmes, il existe les procdures de proprits. Lide est de lier
chaque proprit deux procdures : GET et SET. La procdure get sera appele lorsque
la proprit set utilise en lecture et set lorsque la proprit est utilise en criture.
Dans tous les cas, les procdures de proprit agiront sur une variable de stockage qui
contiendra la valeur de la proprit.
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.
5.4.1 Gnralits
Les mthodes sont des procdures ou des fonctions dclares lintrieur dune classe et
appelable uniquement partir dun objet.
dim p as personne
p = new personne()
p.afficher()
Les constructeur et destructeur sont 2 mthodes spcifiques dont lappel est effectu
automatiquement respectivement lors de la cration et lors de la destruction dun objet.
Le constructeur est gnralement utilis pour initialiser les proprits dune classe tandis que
le destructeur permet gnralement la sauvegarde des donnes dans une base par exemple.
5.4.2.1 Constructeur
Le constructeur se doit dtre Public afin quil puisse tre appel lors de
linstanciation des objets.
End Sub
Dim p As personne
p = New personne("toto")
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 .
End sub
Overloads function convertir (byval valeur as integer, byval taux as double) as double
Return valeur / 100 * taux
End function
Msgbox convertir(100)
Msgbox convertir(100, 5.5)
Public Sub New(ByVal lenom As String, ByVal leprenom As String, ByVal ladaten As Date)
v_nom = lenom
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
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.
EMPLOYE
Tx_horaire
PERSONNE Duree
Nom
Prnom
Date naissance
CADRE
Calc_salaire() Salaire
Prime
EMPLOYE CADRE
Nom Nom
Prnom Prnom
Date naissance Date naissance
Tx_horaire Salaire
Duree Prime
Calc_salaire() Calc_salaire()
Microsoft Visual Basic . Net - Aot 2003 56/139
Lintrt de lhritage est donc de dfinir les lments communs une seule fois et de
pouvoir les rutiliser dans plusieurs autres classes.
Pour dfinir quune classe hrite dune autre classe, vous devez utiliser le mot cl
Inherits dans la dfinition de la sous classe. Attention, la classe que vous utilisez en tant
que super classe ne doit pas possder loption NotInheritable , auquel cas vous ne pourrez
hriter de ses membres.
Dans lexemple suivant, la classe cadre hrite des membres de la classe personne.
End Class
Ainsi, lors de linstanciation de la classe cadre, nous retrouvons lensemble des proprits :
Lobjet MyBase est utilisable uniquement dans les sous classes. Il fait rfrence aux super
classes.
Si nous reprenons notre exemple prcdent, le constructeur de la sous classe cadre fait
directement rfrence aux proprits de la super classe personne . Dans le cas ou rien nest
prcis, le compilateur appellera le constructeur de la super classe par dfaut, cest dire celui
qui ne possde aucun paramtre.
Si vous souhaitez spcifi le constructeur, vous devez lappeler de manire explicite dans
le corps du constructeur de la sous classe :
5.5.4 Le remplacement
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).
Pour dclarer une proprit ou une mthode partage, il suffit de rajouter le mot cl
shared (partag ) devant le nom du membre :
Ces variables et procdures seront ensuite accessibles soit via un objet, soit via le nom de
la classe.
Lexemple suivant cre une variable partage contenant le nombre dobjet instancis partir
de la classe personne . Nous crons galement la proprit nb_personne retournant la
valeur de v_nbpersonne.
Sub New()
v_nbpersonne++
End Sub
End class
Dim p as personne
P = new personne
Msgbox (p.nb_personne)
Msgbox (personne.nb_personne)
5.7.1 Cration
La cration dune interface ressemble celle dune classe, elle est dfinie par les mots cl
interface et end interface .
Dans notre cas nous allons dfinir linterface comparer implmentant la mthode
plus_grand prenant en paramtre un Objet.
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.
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
Jusquici, nous avons cr nos propres interfaces. Le framework .net met disposition
plusieurs interfaces dont le dveloppeur doit savoir tirer avantage pour simplifier la
programmation.
Nous baserons notre exemple sur linterface Icomparable qui permet ensuite dutiliser
la mthode Sort de la classe Array . Cette interface ne comporte quune seul mthode
CompareTo qui prend en paramtre un objet et retourne 1, 0 ou 1 selon que lobjet en
cours est infrieur, gal ou suprieur lobjet pass en argument. A partir de cette mthode de
Tri, la mthode Sort sera capable de trier tous types dobjets, condition quils
implmente linterface.
Implements comparer
Implements IComparable
End Function
Une fois linterface implmente, nous pouvons utiliser la mthode Sort avec un
tableau dobjets de type personne :
Sub main()
Array.Sort(t_personne)
End Sub
Cet exemple affiche la liste des personne tries grce lappel de la mthode Sort .
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.
Dans les exemples suivants, nous utiliserons les deux fonctions suivantes :
Nous allons crer le type calcul qui sera un pointeur vers fonction :
Une fois le type dfini, il faut lui assigner une valeur laide de loprateur Address Of
Nom_type.invoke(paramtres)
5.9.1 Cration
La cration dun vnement permet den dfinir ses paramtres ainsi que les
conditions dans lesquelles il sera dclench. Cest lutilisateur de la classe qui dfinira ensuite
les actions raliser lorsque lvnement survient.
Dans lexemple suivant, nous crons un vnement lorsque le montant des primes dun cadre
dpasse 10 000.
Une fois lvnement dfini, il faut placer lintrieur de la classe les instructions qui
permettront de le dclencher. Pour cela, on utilise le mot cl RaiseEvent en prcisant les
valeurs des diffrents paramtres attendus par lvnement.
Dans notre cas, nous devons placer le code ncessaire lors de la modification de la
proprit montant_salaire . Pour cela nous allons placer le code dans la procdure de
proprit Set de montant_prime .
5.9.2 Utilisation
Il existe deux mthodes pour traiter les vnements : soit en utilisant le mot cl
withEvents , soit en utilisant un gestionnaire dvnements.
Une fois la variable cre, vous devez dfinir le bloc de code excuter lors du
dclenchement de lvnement : pour cela, placer le code dans la procdure dvnement
correspondant. Pour quune procdure soit dclenche lorsquun vnement survient, vous
devez ajouter la fin le mot cl handles suivi du nom de la classe et de lvnement
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.
Dans lexemple suivant, nous avons 2 procdure qui affiche le montant des primes en
mode texte et en mode graphique.
Nous crons ensuite deux objets de type cadre (c1 et c2) et nous lions chaque objet une
procdure diffrente pour la gestion de lvnement depassement_plafond_prime.
C1 = new Cadre()
C2 = new Cadre()
A linverse, pour supprimer un gestionnaire dvnement mis en place, il faut utiliser le mot
cl RemoveHandler
Si aucune procdure nest lie lvnement, ce dernier sera tout simplement ignor.
Implements comparer
Implements IComparable
End Function
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
End Class
End Property
6 Applications Windows
Ce sont les formulaires dont disposait Visual basic 6. Les applications bases sur ces
formulaires sont utiliss pour le dveloppement dapplications pour lesquelles la plupart des
traitements se font sur la machine cliente et qui ont besoin daccder aux ressources de la
machine (fichiers, lecteurs, imprimantes ).
Les applications base de Web Forms sont destins tre utilises sur le Web par le
biais dun navigateur. Ce genre dapplication prsente plusieurs avantages comme un
dploiement facile dans le sens o seul les composants du navigateur doivent tre installs,
une maintenance simplifie car le programme est stock sur le serveur et, enfin, les
applications dveloppes sont indpendantes de toutes plateformes dans le sens o elles
nutilisent que les ressources du navigateur.
Inherits System.Windows.Forms.Form
End Sub
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.
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.
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 :
ForeColor
FormBorderStyle
FixedSingle Non
Fixed3d Non
FixedDialog Non
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 :
Le code suivant permet dafficher une boite de dialogue lorsque lutilisateur demande
laide sur le champs texte text1 qui doit tre dclar avec le mot cl WithEvents . La
procdure suivante implmente lvnement :
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.
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.
f2.MdiParent = Me
f2.Show()
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
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).
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
Valeur Description
Manual Position dfinie par la proprit location
CenterScreen Centr par rapport lcran
WindowsDefaultlocation Situ lemplacement par dfaut de Windows et possde la taille
dfinie dans size
WindowsDefaultBounds Situ lemplacement par dfaut de Windows et possde la taille
par dfaut de Windows
Centerparent 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
Valeur Description
Normal Le formulaire apparat avec sa taille standard
Minimize Le formulaire est rduit lors de louverture
Maximize Le formulaire est en plein cran lors de louverture
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
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
Dispose
Resize
Click
DoubleClick
Si vous observez les diffrentes applications tournant sous windows, vous vous
apercevrez quelles utilisent toutes les mme botes de dialogue standard (Enregistrer, Ouvrir
Imprimer ). Visual Basic permet lutilisation de ces bote de dialogue standard.
6.1.3.1 Ouverture
'paramtrage de la bote
dlg.Title = "Veuillez slectionner l'image"
dlg.DefaultExt = "gif"
dlg.Filter = "Image gif|*.gif|Image Jpeg|*.jpg"
dlg.Multiselect = True
dlg.CheckFileExists = True
'affichage de la boite
dlg.ShowDialog()
6.1.3.2 Enregistrement
'affichage de la boite
dlg.ShowDialog()
Cette bote de dialogue permet lutilisateur de choisir une couleur dans un panel. Deux
versions de cette bote de dialogue existent :
Version simple
Version complte
Proprit Description
Proprit Description
ShowEffects Boolen spcifiant si lutilisateur peut dfinir les effets (gras
)
ShowColor Boolen spcifiant si lutilisateur peut dfinir la couleur
MinSize Taille minimale des caractres
MaxSize Taille maximale des caractres
Font Police par dfaut et police retourne
Color Couleur par dfaut et couleur retourne
De manire gnrale, les contrles sont des objets graphiques, cest dire quil seront
placs et visibles sur le formulaire. Cependant, certains contrles offrant des fonctionnalits
de programmation napparatront pas sur le formulaire mais dans une zone situe en bas et
uniquement en mode Design .
Contrle graphique
Contrle masqu
Les contrles Visual Basic .Net sont des classes issues de la classe de base control .
Cette dernire assure les fonctions lmentaires comme le placement sur une feuille, leur
position A cette classe est ajoute une classe drive permettant la personnalisation des
diffrents contrles.
6.2.1.1 proprits
Name
Anchor
Lors du paramtrage, vous devez dfinir sur quels bords du conteneur est ancr le
contrle. Dans lexemple suivant, nous crons un contrle ancr gauche et droite :
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 :
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 Description
Public Accessible partir de tous les lments de la solution
Protected Accessible partir des membres de la classe et des sous classes
Protected Friend Correspond lunion des visibilits Friend et Protected
Friend Accessible partir du programme et des assemblages lis
Private 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
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 Description
Focus Donne le focus au contrle
Evnements Description
Click Activ lors du clic sur le contrle
DoubleClick Activ lors du double clic sur le contrle
Enter Activ lorsque lutilisateur entre sur le contrle
GotFocus Activ lorsque le contrle reoit le focus
KeyDown Touche enfonce
KeyPress Touche enfonce et relache
KeyUp Touche relache
LostFocus Activ lorsque le contrle perd le focus
MouseDown Bouton souris enfonc
MouseUp Bouton souris relach
MouseMove Souris dplace sur le contrle
MouseWheel Dplacement de la roulette
Resize Dclench lorsque le contrle est redimensionn
6.2.2.1 TextBox
Le contrle TextBox est certainement le contrle le plus utilis : il permet de saisir des
chanes de caractre de 2000 32 000 caractres en fonction de la configuration.
Proprit Description
CanFocus Dtermine si le contrle peut recevoir le focus
CharacterCasing Dtermine la casse du texte : majuscules (upper) ou minuscules
(lower)
Focused Indique si le contrle dtient le focus
ForeColor Couleur du texte
HideSelection Dfinit si le contrle masque la slection lorsquil perd le focus
Lines Tableau correspondant aux lignes du contrle
MaxLength Nombre de caractres maximum du contrle
Modified Spcifie si le contenu du champs a t modifi depuis sa cration
MultiLine Dfinit si le contrle est multi lignes
PasswordChar Dfinit le caractre servant masquer un mot de passe
Readonly Contenu du champs en lecture seule
Mthode Description
Clear Efface le contenu du champs texte
Copy / Cut Copie / coupe la slection dans le presse papier
Focus Donne le focus au contrle
ResetText Rtabli la valeur initiale du champs
Evnement Description
TextChanged 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.
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 Description
BorderStyle Style de bordure
AutoSize Le contrle sadapte la taille du texte
Text Contenu du label
6.2.2.3 CheckBox
Le contrle Checkbox (Case cocher) est utilis pour proposer plusieurs options
lutilisateur parmi lesquelles il pourra effectuer plusieurs choix.
Proprit Description
Checked Valeur boolenne indiquant si la case est coche ou non
CheckState Retourne ou modifie la valeur de la case cocher en grant le 3me
mode (gris).
ThreeState 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.
CheckAlign Alignement de la case cocher par rapport au contrle
Text Texte associ au contrle
Evnement Description
CheckedChanged Se produit lorsque la proprit Checked change
CheckStateChanged 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
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.
6.2.2.4 RadioButton
Les boutons radios possdent les mme proprits et vnements que les cases cocher.
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
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
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 Description
MultiColumn Permet un dfilement horizontal de la liste
Integralheight Evite laffichage dune partie dun lment de la liste
Items Collection reprsentant les lments contenus dans la liste
Sorted Elments classs par dans lordre
Itemheight Hauteur dun lment de la liste
SelectedIndex Indice de llment slectionn
SelectedIndices Indices des lments slectionns
SelectionMode Mode de slection des lments ( MultiExtended permet une
slection multiple, One permet une seule slection et None
aucune.
Mthode Description
FindString Retourne lindice de llment commenant par le texte recherch
SetSelected Dfinit un lment en tant que slectionn ou non
GetSelected Retourne un boolen permettant de savoir si un lment est slectionn
ou non
Evnement Description
SelectedIndexChange Dclench lorsque la proprit SelectedIndex change
Dim i As Int16
Me.ListBox1.Items.Clear()
Celui ci affiche llment slectionn lors dun double clic sur le ListBox.
6.2.2.8 ComboBox
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.
Proprit Description
MinSize
MinExtra
6.2.2.10 ImageList
Proprit Description
ColorDepth Nombre de couleurs utiliser pour les images
ImageSize Taille en pixels des images
Transparent Dfinit la couleur de transparence
Images 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 :
6.2.2.11 Treeview
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 :
Mthode Description
Nodes.add Ajoute un lment
Me.ImageList1.Images.Add(Image.FromFile("C:\peugeot.jpg"))
Me.ImageList1.Images.Add(Image.FromFile("C:\renaud.bmp"))
Me.TreeView1.ImageList = Me.ImageList1
Me.TreeView1.ImageIndex = 0
With noeud1
.Text = "Peugeot"
.ImageIndex = 0
.Nodes.Add("307")
.Nodes.Add("806")
.Nodes.Add("309")
End With
With noeud2
.Text = "Renault"
.ImageIndex = 1
.Nodes.Add("Mgane")
.Nodes.Add("4L")
.Nodes.Add("Laguna")
End With
With Me.TreeView1
.Nodes.Add(noeud1)
.Nodes.Add(noeud2)
6.2.2.12 ListView
Le contrle listview permet laffichage dune liste plate selon les 4 modes de
prsentation de lexplorateur Windows :
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.
Proprit Description
AllowColumnReorder Autorise ou non la modification de lordre des colonnes
AutoArrange Organise automatiquement la prsentation des lments
Columns Collection de colonnes
FullrowSelect La surbrillance stend sur toute la largeur du contrle
HeaderStyle Style des entte de colonne
Items Collection dlments
LabelEdit Permet lutilisateur de modifier ltiquette des lments
LargeImageList ImageList utilis pour la prsentation LargeIcon
MultiSelect Permet la slection multiple
SmallImageList ImageList utilis pour toutes les prsentation (sauf LargeIcon)
Sorting Mode de tri
View 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 :
With Me.ListView1
.View = View.Details
.Columns.Add("Ascii", 50, HorizontalAlignment.Center)
End With
6.2.2.13 TabControl
Pour chaque page , il est possible de configurer les options dapparence qui sont
analogues celles dun formulaire.
6.2.2.14 Menus
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 Description
Checked Indique si llment est coch
DefaultItem Dfinit llment en tant qulment par dfaut
MdiList Affiche la liste des fentres enfants dans le cas dune fentre MDI
RadioCheck Indique si llment est activ
ShortCut Permet de dfinir un raccourci pour le menu
ShowShorcut Affiche le raccourci
Text Libell du menu
Proprit Description
Checked Si activ, spcifie lorsque lutilisateur a slectionn une date
CustomFormat Chaine de format pour laffichage de la date slectionne
Format Mode daffichage de la date
MaxDate Date maximale slectionnable
MinDate Date minimale slectionnable
Evnement Description
ValueChanged Dclench lorsque la valeur change
6.2.2.16 Timer
Proprit Description
Interval Dfinit linterval en milliseconde. La valeur doit tre comprise entre 1
et 65536
Enabled Active ou dsactive le timer
Evnement Description
Tick Dclench chaque interval.
Le drag and Drop (ou Glisser Dposer) est une des fonctionnalits en terme
dergonomie qui fit le succs de Windows. Il permet de dplacer des informations (Fichiers,
Images, Texte, Objet) au sein dune mme application ou entre plusieurs en accrochant un
lment au curseur pour ensuite le dposer sur lobjet de destination (Liste, champs texte).
Pour dmarrer le drag and drop, vous devez dtecter lorsque lutilisateur quitte un
contrle avec un bouton enfonc. Pour cela, on utilise lvnement MouseMove :
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 Description
All Les donnes sont copies, supprimes et parcourues dans la zone cible
Copy Les donnes sont copies dans la zone de dplacement
Link Les donnes sont lies la cible de dplacement
Move Les donnes sont dplaces vers la cible de dplacement
En premier lieu, vous devez spcifier que le contrle cible peut recevoir des lments :
pour cela, paramtrez la proprit AllowDrop True .
Proprit Description
Pour rcuprer llment ou lobjet dplac, vous devez utiliser la mthode suivante :
e.Data.GetData(DataFormats.type_donnes)
Cette mthode est utilise pour vrifier le type dobjet dplac (dans la mthode DragEnter).
End If
End Sub
Au final, lADO est un ensemble de classe mettant disposition les objets, mthodes et
vnements ncessaire linterfaage avec une base de donnes. Ces classes sont disponibles
dans plusieurs espaces de nom :
Le mode dconnect est une nouveaut de lADO .Net. Ce mode permet de travailler
sur des donnes sans avoir un accs direct et permanent la base. Il est principalement utilis
pour les applications nomades qui ne disposent pas toujours dun accs la source de
donnes comme par exemple, les portables des commerciaux dans une socit.
Fournisseur Classe
ODBC Odbc.OdbcConnection
OLEDB OLEDB.oledbConnection
SQL Server 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
Lexemple suivant ouvre une connexion avec une base Microsoft Access :
Lexemple ci-dessous ouvre une connexion avec un serveur SQL Server, spcifie un
compte SQL pour lauthentification et paramtre le timeout :
cn.close
7.3.2 Mthodes
Mthode Description
Open Ouvre la connexion
Close Ferme la connexion et libre les ressources
BeginTransaction Dbute une transaction avec un niveau disolation
CreateCommand Cre un objet Command
7.3.3 Evnements
Evnement Description
Lors de la cration dun objet commande, vous devez dfinir le type dopration quil
devra raliser ainsi que la connexion laquelle il est rattach.
Proprit Description
Commandtext Texte SQL de la requte ou nom de la procdure stocke
CommandType Type de la commande (requte, table, procdure)
Connection Connexion lie la commande
Transaction Objet transaction li (voir plus bas)
CommandTimeOut Nombre de seconde pour lexcution de la commande
Parameters Collection de paramtres envoyer avec la commande
Mthode Description
Cancel Annule lexcution de la commande
ExecuteNonQuery Excute la requte daction et retourne le nombre de ligne affectes
ExecuteReader Excute la requte de slection et retourne un objet de type DataReader
ExecuteScalar Excute la requte et retourne la valeur scalaire (1re ligne, 1re colonne)
CreateParameter Cre un objet paramtre
ExecuteXMLReader Excute la requte de slection et retourne un objet de type XmlReader
dr_sql = com_sql.ExecuteReader
com_sql.Connection = cn_sql
com_sql.CommandType = CommandType.Text
com_sql.CommandText = "update STAGIAIRE set sta_nom = 'toto' where sta_num = -
55"
MsgBox(com_sql.ExecuteNonQuery)
com_sql.Connection = cn_sql
com_sql.CommandType = CommandType.Text
com_sql.CommandText = "select count(*) from STAGIAIRE"
MsgBox(com_sql.ExecuteScalar)
com_sql.Connection = cn_sql
com_sql.CommandType = CommandType.StoredProcedure
com_sql.CommandText = "sp_who"
dr_sql = com_sql.ExecuteReader
Proprit Description
FieldCount Nombre de champs (colonne)
HasRows Dtermine si le DataReader comporte 1 ou plusieurs lignes
Mthode Description
Close Ferme le DataReader et remplit les paramtres de retour
Read Avance au prochain enregistrement
GetValue(i) Retourne la valeur du champs lindice i
GetName(i) Retourne le nom du champs lindice i
GetType(i) Retourne le type du champs lindice i
com_sql.Connection = cn_sql
com_sql.CommandType = CommandType.Text
com_sql.CommandText = "select * from FORMATEUR"
dr_sql = com_sql.ExecuteReader
La cration dun DataSet se fait par simple dclaration en spcifiant son nom.
Attention, deux DataSet ne peuvent avoir le mme nom.
Mthode Description
AcceptChanges Valide toutes les modifications effectues dans le DataSet
RefuseChanges Refuse toutes les modifications effectues dans le DataSet
Proprits Description
HasChanges Retourne vrai si le DataSet contient des tables dont les
enregistrements ont t modifis, supprims, ajouts
Proprit Description
Columns Collection des colonnes de la table
Constraints Collection des contraintes de la table
Rows Collection des lignes de la table
MinimumCapacity Taille initiale pour les enregistrements
CaseSensitive Mode de comparaison (Respect de la casse ou non)
PrimaryKey Tableau de colonnes faisant parti de la cl primaire
Les objets DataColumn correspondent aux diffrentes colonnes dune table. En crant
une colonne, vous devez spcifier plusieurs informations :
Le nom de la colonne
Le type de la colonne (ci dessous figure la liste des types utilisables
Type Description
Boolean Valeur boolene
Byte Octets (Entier de 0 254)
Char Reprsente 1 caractre
DateTime Heure & Date
Decimal Dcimal
Double Nombre virgule flottante double prcision
Int16 Entier sign de XX Bits
Proprit Description
AllowDBNull Autorise la valeur Null
AutoIncrement Dfinit si la colonne est un compteur dont la valeur
sincrmente automatiquement (Attention, le champs doit
tre de type Integer )
AutoIncrementSeed Valeur de dpart pour lautoIncrement
AutoIncrementStep Pas de lincrment
Defaultvalue Valeur par dfaut de la colonne
MaxLength Longueur maximale pour le champs texte
Unique Dfinit si les valeurs de la colonne doivent tre uniques
Lexemple suivant ajoute des champs la table personne en utilisant les diffrentes
proprits et spcifie la cl primaire :
'creation de la relation
Dim rel As New DataRelation("personne_categorie",
donnees.Tables("categorie").Columns("cat_num"),
donnees.Tables("personne").Columns("pers_cat_num"))
donnees.Relations.Add(rel)
Une fois que la structure du DataSet est en place, vous devez tre en mesure dajouter
des donnes aux DataTable. Chaque DataTable contient une collection de DataRow qui
correspond aux diffrents enregistrements de la table.
Le parcourt des donnes permet de lire les enregistrements stocks dans le DataTable.
Il existe deux modes de parcourt :
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
Dim i As Int16
Dim contenu As String
With donnees.Tables("personne")
For i = 0 To .Rows.Count - 1
contenu &= .Rows(i).Item("pers_num") & " - " & .Rows(i).Item("pers_nom") &
vbCr
Next
End With
MsgBox(contenu)
Le rsultat obtenu :
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)
Le rsultat obtenu :
Dim contenu3 As String = "--- Liste des personnes avec le libell catgorie---" & vbCr
With donnees.Tables("personne")
For i = 0 To .Rows.Count - 1
Le rsultat obtenu :
Pour insrer un nouvel enregistrement, vous devez crer un objet DataRow partir du
Datatable, configurer les valeurs des diffrentes colonnes et enfin ajouter le DataRow au
DataTable.
A ce moment, une exception est leve car les enregistrements ne respectent pas la
relation personne_categorie :
With donnees.Tables("personne").Rows(0)
.BeginEdit()
.Item("pers_nom") = "saturnin"
.EndEdit()
End With
donnees.Tables("personne").Rows(0).Delete()
Lobjet DataView permet dextraire, filtrer et trier des donnes issues dun DataTable.
De plus, il est possible de modifier, ajouter, supprimer des donnes directement partir du
DataView et les modifications seront automatiquement retranscrites dans le DataTable li. Un
DataView peut tre vu comme une vue au niveau base de donnes.
Proprit Description
AllowDelete Autorise la suppression denregistrements
AllowEdit Autorise la modification denregistrements
Mthode Description
Addnew Ajoute un enregistrement
Delete Supprime un enregistrement
Find Retourne lindice de lenregistrement correspondant aux
paramtres de recherche par rapport au champs spcifi dans
lattribut sort
FindRows Retourne un ensemble de DataRow correspondant la recherche.
Evnement Description
ColumnChanged Valeur de colonne change
ColumnChanging Valeur de colonne en cours de modification
RowChanged Ligne de la table modifie
RowChanging Ligne de la table en cours de modification
RowDeleted Ligne de la table supprime
RowDeleting Ligne de la table en suppression
7.7.1 Cration
OleDbDataAdapter
SqlDataAdapter
Limportation des donnes consiste remplir les DataTable dune DataSet partir
dun DataAdapter dfini.
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 :
Attention, lors de la cration des DataTable, la mthode Fill les nomme Table1 ,
Table2 Il est donc vivement conseill de renommer les tables aprs excution.
Jusqu prsent, pour remplir un DataTable dj existant, nous devions une structure
identique celle dfinit dans la source de donnes, en particulier au niveau des noms et des
types de champs. Le mappage des donnes permet de dfinir pour chaque table et colonne de
la source leur correspondance au niveau du DataTable.
no num
name nom
surname prenom
birth daten
'connexion
Dim cn As New OleDb.OleDbConnection
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=E:\Support\vbnet\bd2.mdb;"
'definition du DataAdapter
Dim da As New OleDb.OleDbDataAdapter("select num, nom, prenom, daten from
Client", cn)
'remplissage
da.MissingMappingAction = MissingMappingAction.Ignore
da.Fill(ds.Tables("customer"))
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 Description
DataSet Le dataSet vers lequel exporter les donnes
SchemaType Spcifie si les mappings dfinit doivent tre utiliss :
SchemaType.Mapped oui
SchemaType.Source non
SrcTable Nom du DataTable vers lequel envoyer la structure
'connexion
Dim cn As New OleDb.OleDbConnection
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\bd2.mdb;"
Rsultat obtenu :
Cette mise jour peut cependant lever des conflits au niveau des enregistrements :
imaginez un enregistrement que vous modifiez et qui est supprim par un utilisateur juste
avant la demande de mise jour ! Pour rglez ces conflits, le DataAdapter possde un
ensemble dobjets et dvnements permettant de cibler et rsoudre les problmes.
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 Description
1 Detached : la ligne nest encore intgre aucun DataTable
2 Unchanged : Aucun changement depuis le dernier appel de AcceptChanges
4 Added : la ligne a t ajoute
8 Deleted : La ligne a t supprime
16 Modified : La ligne a t modifie
En fonction de ltat des lignes, lobjet DataAdapter excutera des requtes diffrentes
afin de mettre jour la source de donnes. Le comportement du DataAdapter est dfinit par
trois objets command :
- 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
'connexion
Dim cn As New OleDb.OleDbConnection
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=E:\Support\vbnet\bd2.mdb;"
'dataset, dataadapter
Dim ds As New DataSet
Dim da As New OleDb.OleDbDataAdapter("select * from Client", cn)
da.Fill(ds, "Client")
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.
o Commande Insert
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 = ?)) )
Dans lexemple suivant, la commande de suppression ne filtre les enregistrements que par
rapport leur cl primaire : ainsi, si un autre utilisateur a modifi les enregistrements entre
temps, la suppression se fera quand mme.
Pour dclencher la mise a jour des donnes, il suffit dappeler la mthode Update de
lobjet DataAdapter en passant en paramtre le DataSet ainsi que le nom de la table du
DataSet valider.
da.Update(ds, "Client")
If ds.HasChanges Then
da.Update(ds, "Client")
Else
MsgBox("aucun changement")
End If
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.
Une fois la mise jour effectue, la proprit RowState des diffrents DataRow
concerns est passe UnChanged spcifiant que la ligne est valid.
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 .
da.ContinueUpdateOnError = True
da.Update(ds, "Client")
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.
Proprit Description
StatementType Type de la commande
Command Objet commande
Row Objet DataRow actualiser
Status Rgle de gestion des lignes suivantes
Errors Erreurs gnres (seulement dans RowUpdated)
Case DataRowState.Modified
If Not TypeOf e.Errors Is DBConcurrencyException Then
'erreur d'integrite referentielle
MsgBox("Erreur de mise jour" & vbCr & "type
erreur = " & e.Errors.Message)
Else
'conflit d'actualisation, l'enregistrement n'existe
plus
MsgBox("L'enregistrement mettre jour n'existe
plus dans la source de donnes")
End If
End Select
End If
End Sub
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")
da.InsertCommand.Transaction = transac
da.DeleteCommand.Transaction = transac
da.UpdateCommand.Transaction = transac
'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)
Lors de la mise en place de contrles lis, les objets suivants sont mis contribution :
7.8.1.1 DataBinding
Cet objet permet de lier une proprit dun contrle un champs de la source de donnes.
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 Description
Count Nombre de ligne gres par le BMB
Position Indice de la ligne en cours
Mthode Description
AddNew Ajoute un nouvel enregistrement
CancelCurrentEdit Annule ldition ou lajout en cours
RemoveAt(indice) Supprime lenregistrement la position Indice
7.8.1.4 BindingContext
Contient lensemble des objets BindingManagerBase pour les contrles dun formulaire
par exemple.
Pour dfinir la connexion, ouvrir lexplorateur de serveur, clic droit sur Connexions de
donnes , Ajouter une connexion :
Une fois la connexion dfinie, vous devez gnrer les objets Connexion et
DataAdapter qui seront utiliss pour lier vos contrles a la source de donnes : pour cela,
fates glisser la table voulue sur le formulaire : les objets connexion et DataAdapter sont alors
crs.
Afin de pouvoir faire rfrences aux donnes de la table slectionne dans les
diffrents contrles, vous devez gnrer le groupe de donnes. Cette opration permet de
gnrer un DataSet contenant les informations des diffrentes tables.
Pour gnrer le groupe de donnes, clic droit sur lobjet DataAdapter prcdemment
cr, Gnrer le groupe de donnes :
Une fois toutes ces opration ralises, vous tes en mesure de lier les diffrents
contrle aux donnes du DataSet. Cette opration est diffrente suivant les contrles utiliss :
Pour un TextBox
Pour un ListBox
End Sub
Pour cela, il suffit de crer dans le mme DataSet deux tables lies par une relation et
de modifier la proprit DataMember en lui passant en paramtre le nom de la table matre
et le nom de la relation.
'liaison du DataGrid
Me.DataGrid1.CaptionText = "Liste des commandes"
Me.DataGrid1.DataSource = Me.ds
Me.DataGrid1.DataMember = "Client.client_commande"
'recupere le context
bmb = Me.BindingContext(Me.ds, "Client")