Vous êtes sur la page 1sur 139

Microsoft

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

Microsoft Visual Basic . Net - Aot 2003 2/139


4.4.1 Les conditions .......................................................................................................... 22
4.4.2 Structures conditionnelles ....................................................................................... 22
4.4.2.1 Structure If........................................................................................................ 22
4.4.2.2 Structure Select Case ........................................................................................ 23
4.4.2.3 Instruction conditionnelles ............................................................................... 24
4.4.3 Structures rptitives ............................................................................................... 24
4.4.3.1 Structure While ................................................................................................ 25
4.4.3.2 Structure Do loop ............................................................................................. 25
4.4.3.3 Structure For ..................................................................................................... 25
4.4.3.4 Structure For each ............................................................................................ 26
4.5 PROCEDURES ET FONCTIONS ............................................................................................ 26
4.5.1 Cration de procdure ............................................................................................ 27
4.5.1.1 Dclaration ....................................................................................................... 27
4.5.1.2 Appel ................................................................................................................ 27
4.5.2 Cration de fonction ................................................................................................ 27
4.5.2.1 Dclaration ....................................................................................................... 27
4.5.2.1 Appel ................................................................................................................ 28
4.5.3 Passage de paramtres............................................................................................ 28
4.5.3.1 Dclaration ....................................................................................................... 28
4.5.3.2 Appel ................................................................................................................ 28
4.5.3.3 Passage par valeur et par rfrence .................................................................. 29
4.5.3.4 Passer un nombre quelconque de paramtre .................................................... 30
4.6 FONCTIONS INTEGREES .................................................................................................... 30
4.6.1 Fonctions sur les chanes de caractres ................................................................. 30
4.6.2 Fonctions sur les nombres....................................................................................... 31
4.6.3 Fonctions sur les dates ............................................................................................ 32
4.6.4 Fonctions sur les tableaux....................................................................................... 32
4.6.5 Fonctions de conversion.......................................................................................... 33
4.6.6 Fonction de formatage (Format)............................................................................. 33
4.6.6.1 Caractres de formatage pour les numriques.................................................. 34
4.6.6.2 Caractres de formatage pour les dates ............................................................ 34
4.6.7 Les botes de dialogue ............................................................................................. 35
4.6.7.1 Boite de message .............................................................................................. 35
4.6.7.2 Bote de saisie................................................................................................... 37
4.7 LES COLLECTIONS............................................................................................................ 38
4.7.1 Classe CollectionBase ............................................................................................. 38
4.7.1.1 Crer la collection ............................................................................................ 38
4.7.1.2 Utilisation ......................................................................................................... 39
4.7.2 Classe Stack............................................................................................................. 39
4.7.3 Classe Queue ........................................................................................................... 40
4.8 GESTION DES ERREURS .................................................................................................... 40
4.8.1 Types derreurs ....................................................................................................... 40
4.8.2 Gestion en ligne ....................................................................................................... 41
4.8.2.1 Linstruction On Error ...................................................................................... 41
4.8.2.2 Linstruction Resume ....................................................................................... 42
4.8.2.3 Lobjet Err ........................................................................................................ 42
4.8.3 Les Exceptions ......................................................................................................... 43
4.8.3.1 Try, Catch & Finally ........................................................................................ 43

Microsoft Visual Basic . Net - Aot 2003 3/139


5 PROGRAMMATION OBJET ........................................................................................... 44
5.1 INTRODUCTION A LA POO ............................................................................................... 44
5.2 CLASSES & OBJETS ......................................................................................................... 45
5.2.1 Cration dune classe .............................................................................................. 45
5.2.2 Visibilit de la classe ............................................................................................... 46
5.2.3 Options dhritage................................................................................................... 46
5.2.5 Implements & Inherits ............................................................................................. 46
5.2.6 Cration et utilisation dobjets ................................................................................ 46
5.3 LES PROPRIETES............................................................................................................... 48
5.3.1 Variables ................................................................................................................. 48
5.3.2 Procdures de proprits ........................................................................................ 49
5.4 LES METHODES ............................................................................................................... 52
5.4.1 Gnralits .............................................................................................................. 52
5.4.2 Constructeur et Destructeur .................................................................................... 53
5.4.2.1 Constructeur ..................................................................................................... 53
5.4.2.2 Destructeur ....................................................................................................... 54
5.4.3 La surcharge ........................................................................................................... 54
5.4.4 Lobjet Me ............................................................................................................... 55
5.5 LHERITAGE .................................................................................................................... 55
5.5.1 Introduction ............................................................................................................. 56
5.5.2 Mise en place ........................................................................................................... 57
5.5.3 Objet MyBase .......................................................................................................... 58
5.5.4 Le remplacement ..................................................................................................... 58
5.6 METHODES ET VARIABLES PARTAGEES ............................................................................ 59
5.7 LES INTERFACES .............................................................................................................. 60
5.7.1 Cration ................................................................................................................... 60
5.7.2 Utilisation ................................................................................................................ 61
5.7.3 Exploiter les interfaces .Net .................................................................................... 62
5.7.3.1 Implmenter linterface .................................................................................... 62
5.7.3.2 Utiliser linterface ............................................................................................ 63
5.8 LA DELEGATION .............................................................................................................. 63
5.8.1 Signature de la mthode .......................................................................................... 63
5.8.2 Appel du Delegate ................................................................................................... 64
5.9 LES EVENEMENTS ............................................................................................................ 64
5.9.1 Cration ................................................................................................................... 64
5.9.2 Utilisation ................................................................................................................ 65
5.9.2.1 Utilisation de With Events ............................................................................... 65
5.9.2.2 Utilisation du gestionnaire dvnement .......................................................... 66
5.10 CLASSES DEXEMPLE ..................................................................................................... 67
5.10.1 Classe personne..................................................................................................... 67
5.10.2 Classe Cadre ......................................................................................................... 69
6 APPLICATIONS WINDOWS ........................................................................................... 70
6.1 LES FORMULAIRES ........................................................................................................... 70
6.1.1 Diffrents types ........................................................................................................ 70
6.1.1.1 Windows Forms ............................................................................................... 70
6.1.1.2 Web forms ........................................................................................................ 71
6.1.1.3 Modes de prsentation ...................................................................................... 71
6.1.2 Membres de la classe Form .................................................................................... 71

Microsoft Visual Basic . Net - Aot 2003 4/139


6.1.2.1 Proprits .......................................................................................................... 73
6.1.2.2 Mthodes .......................................................................................................... 80
6.1.2.2 Evnements ...................................................................................................... 81
6.1.3 Botes de dialogue ................................................................................................... 82
6.1.3.1 Ouverture .......................................................................................................... 82
6.1.3.2 Enregistrement ................................................................................................. 83
6.1.3.3 Choix dune couleur ......................................................................................... 84
6.1.3.4 Choix dune police ........................................................................................... 85
6.2 LES CONTROLES............................................................................................................... 85
6.2.1 Membres communs .................................................................................................. 86
6.2.1.1 proprits .......................................................................................................... 86
6.2.1.2 Mthodes .......................................................................................................... 88
6.2.1.3 Evnements ...................................................................................................... 89
6.2.2 Principaux Contrles .............................................................................................. 89
6.2.2.1 TextBox ............................................................................................................ 89
6.2.2.2 Label ................................................................................................................. 90
6.2.2.3 CheckBox ......................................................................................................... 91
6.2.2.4 RadioButton ..................................................................................................... 92
6.2.2.5 GroupBox et Panel ........................................................................................... 93
6.2.2.6 Button ............................................................................................................... 94
6.2.2.7 ListBox ............................................................................................................. 94
6.2.2.8 ComboBox ....................................................................................................... 95
6.2.2.9 Splitter .............................................................................................................. 95
6.2.2.10 ImageList ........................................................................................................ 96
6.2.2.11 Treeview ......................................................................................................... 97
6.2.2.12 ListView ......................................................................................................... 99
6.2.2.13 TabControl ................................................................................................... 101
6.2.2.14 Menus ........................................................................................................... 102
6.2.2.15 DateTimePicker ............................................................................................ 103
6.2.2.16 Timer ............................................................................................................ 103
6.2.3 Le Drag and Drop ................................................................................................. 103
6.2.3.1 Dmarrer le drag and drop ............................................................................. 104
6.2.3.3 Contrler la rception ..................................................................................... 104
6.2.3.3 Rcuprer llment ....................................................................................... 105
7 ACTIVEX DATA OBJECT .NET ................................................................................... 106
7.1 MODE CONNECTE ET DECONNECTE ................................................................................ 106
7.1.1 Mode connect....................................................................................................... 106
7.1.2 Mode dconnect ................................................................................................... 107
7.2 LES FOURNISSEURS DACCES ......................................................................................... 107
7.3 LOBJET CONNECTION ................................................................................................... 108
7.3.1 Proprits ........................................................................................................... 108
7.3.2 Mthodes ........................................................................................................... 109
7.3.3 Evnements ....................................................................................................... 109
7.4 OBJET COMMAND .......................................................................................................... 110
7.5 OBJET DATAREADER..................................................................................................... 111
7.6 OBJET DATASET ............................................................................................................ 112
7.6.1 Objet DataTable .................................................................................................... 113
7.6.2 Objet DataColumn ................................................................................................ 113

Microsoft Visual Basic . Net - Aot 2003 5/139


7.6.3 Objet DataRelation ............................................................................................... 114
7.6.4 Travailler avec les donnes ................................................................................... 116
7.6.4.1 Parcourir les donnes ..................................................................................... 116
7.6.4.2 Insertion de donnes ....................................................................................... 118
7.6.4.3 Modification de donnes ................................................................................ 119
7.6.4.4 Suppression de donnes ................................................................................. 119
7.6.5 Objet DataView ..................................................................................................... 119
7.6.6 Les vnements ...................................................................................................... 120
7.7 OBJET DATAADAPTER................................................................................................... 120
7.7.1 Cration ................................................................................................................. 121
7.7.2 Importer des donnes ............................................................................................ 121
7.7.2.1 Remplir un DataSet ........................................................................................ 121
7.7.2.2 Mappage des donnes..................................................................................... 123
7.7.2.3 Importer la structure ....................................................................................... 125
7.7.3 Exporter des donnes ............................................................................................ 125
7.7.3.1 Mise jour de la source de donnes ............................................................... 126
7.7.3.1 Dfinition des requtes dactualisation .......................................................... 126
7.7.3.2 Dclencher la mise jour des donnes........................................................... 128
7.7.3.3 Gestion des conflits ........................................................................................ 129
7.8 LIAISON DE DONNEES AUX CONTROLES ......................................................................... 132
7.8.1 Objets utiliss ........................................................................................................ 132
7.8.1.1 DataBinding ................................................................................................... 132
7.8.1.2 ControlBindingCollection .............................................................................. 133
7.8.1.3 BindingManagerBase ..................................................................................... 133
7.8.1.4 BindingContext .............................................................................................. 133
7.8.2 Liaison de donnes par Interface Graphique ........................................................ 133
7.8.2.1 Dfinir la connexion ....................................................................................... 133
7.8.2.2 Cration des objets connexion et DataAdapter .............................................. 134
7.8.2.3 Gnrer le groupe de donnes ........................................................................ 134
7.8.2.4 Lier les contrles ............................................................................................ 135
7.8.2.5 Finalisation par le code .................................................................................. 136
7.8.3 Exemple dapplication........................................................................................... 136
7.8.4 Formulaires de donnes Maitre / Dtail .............................................................. 138
7.9 ADO & XML ...................................................................... ERREUR ! SIGNET NON DEFINI.
7.3.1 Schma SXD .................................................................... Erreur ! Signet non dfini.
7.3.2 Lire et crire des documents XML .................................. Erreur ! Signet non dfini.
7.3.3 Synchronisation avec la source de donnes .................... Erreur ! Signet non dfini.

Microsoft Visual Basic . Net - Aot 2003 6/139


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 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.

Microsoft Visual Basic . Net - Aot 2003 7/139


Ci dessous figurent les spcifications Microsoft :

Config. Minimum Config Optimale


Processeur P2 450 Mhz P3 733 Mhz

Mmoire Vive (Ram) 128 Mo 256 Mo

Espace Disque 3 Gb 3Gb

Carte Vido 800x600, 256 Couleurs 1024x768, 65536 Couleurs

Lecteur CD Rom Obligatoire Obligatoire

Systme dexploitation Windows 2000


Windows NT 4.0
Windows Me
Windows 98

Ces spcifications concernent lutilisation du FrameWork .Net ainsi que de lIDE, pas
lexcution des programmes MSIL.

2. Environnement Visual Studio


2.1 Linterface
Les habitus de Visual Studio 6.0 ne seront pas drouts : linterface de Visual Basic .net
reprend la plupart des palettes standards avec quelques outils en plus :
- la barre doutils regroupe les diffrents contrles par catgories
- La zone centrale permet tour tour dcrire le code et de dfinir les interfaces
graphiques utilisateurs
- A droite, lexplorateur de solutions et la fentre de proprits

Microsoft Visual Basic . Net - Aot 2003 8/139


2.2 Fentres dexploration

2.2.1 Explorateur de serveur

Lexplorateur de serveur permet de recenser sous


forme hirarchique lensemble des objets dun serveur
(Serveurs SQL, journaux, Services ). Cette fentre est
principalement utilises afin daccder au schma dune
base de donnes utilise dans une application.

Microsoft Visual Basic . Net - Aot 2003 9/139


2.2.2 Explorateur de Solutions

Lexplorateur de solutions (Ex explorateur de projet sous


VB 6.0) rfrence lensemble des lments du projets
(Fichier de configuration pour lassemblage, super classes
hrits, Feuilles.)

Une solution contient les fichiers suivants :


.sln : fichier de configuration de la solution
.vbproj : fichier projet, (ancien .vbp)
.vb : fichiers contenant du code (anciens .bas, .frm, .cls)
.resx : associ une feuille, contient les ressources

2.2.3 Laffichage de classes

Laffichage de classes liste de manire hierarchique les


diffrentes classes du projet ainsi que leurs mthodes,
proprits, vnements et autre relations dhritage.

Microsoft Visual Basic . Net - Aot 2003 10/139


2.2.4 Fentre de proprits

Dj prsente dans la version 6.0, cette fentre recense


toutes les proprits relatives lobjet selectionn.

2.2.5 Laide dynamique

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.

2.2.6 La liste des tches

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
-

Microsoft Visual Basic . Net - Aot 2003 11/139


3. Gestion de projets
3.1 Les solutions
Une solution le plus haut conteneur logique dlments (projets, fichiers, feuilles, classes).
Une solution peut contenir plusieurs projets.

3.2 Cration dun projet


Il est possible de crer un projet soit directement dans une solution ouverte soit dans une
nouvelle solution.

Menu Fichier > Nouveau > Projet

Principaux projets Visual Basic


Type Description
Application Windows
Bibliothque de classe
Bibliothque de contrle Windows
Application Smart Device
Application Web ASP.Net
Service Web ASP.Net
Application console
Service Windows

Microsoft Visual Basic . Net - Aot 2003 12/139


3.3 Configuration dun projet
Pour chaque projet de votre solution, un ensemble de proprits sont configurables.
Pour accder aux proprits dun projet, clic droit sur le projet dans lexplorateur de solution
et Proprits.

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

Microsoft Visual Basic . Net - Aot 2003 13/139


dexcution
Argument de la ligne de Permet de passer des paramtres lors de lexcution du
commande programme
Rpertoire de travail Rpertoire actif pour lapplication
Dbogueurs Dbogueurs activer lors de lexcution
Optimisation Dfinit un ensemble de contrles que le compilateur ne fera pas
lors de la compilation du programme
Chemin de sortie Rpertoire o sera gnr lexcutable ou la bibliothque
Activer les avertissements de Si coch, le compilateur ajoutera ses remarques la liste des
gnration tches
Considrer les Lors de la compilation, les avertissements (Warning) fait par le
avertissements du compilateur stopperont la compilation (aucun fichier gnr)
compilateur comme des
erreurs
Constantes de compilation Cette option permet de dfinir des constantes qui influeront sur
conditionnelles les lignes compiles

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

Microsoft Visual Basic . Net - Aot 2003 14/139


Lors de la cration dun nouveau module, le code suivant est automatiquement gnr :

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.

Microsoft Visual Basic . Net - Aot 2003 15/139


Il est possible de crer vos propres rgions avec la syntaxe suivante :

#Region libell de la rgion



#End Region

#Region Dclaration des variables


dim i, j as integer =0
dim nom as string
#End Region

4.2 Les variables


Les variables permettent de stocker des informations lors de lexcution du programme.
Une variable est caractrise par les informations suivantes
- Un nom : le nom dune variable commence obligatoirement par une lettre, peut
contenir des lettres, chiffres et le signe _ (underscore) avec un maximum de 255
caractres. Visual Basic ne tient pas compte de la casse (Majuscules / Minuscules)
- Un type : le type dun variable prcise le type de la valeur stockes par la mmoire
(numrique, chane de caractre, date )
- Une porte : la porte dune variable correspond sa dure de vie

4.2.1 Types de variables

4.2.1.1 Types numriques

Nom Min Max Taille

Byte 0 255 8 bits

Short -32768 32767 16 bits

Integer -2 147 483 648 2 147 483 647 32 bits

Microsoft Visual Basic . Net - Aot 2003 16/139


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

Decimal -79228162514264337593543950335 79228162514264337593543950335 16 Octets

4.2.1.2 Types chane de caractre

Depuis la version .Net, les chanes de caractre sont enregistres au format Unicode, cest
dire que chaque caractre utilise 2 octets.

Nom Description Exemple


Char Utilis pour stocker un seul caractre a
String Chane de caractre longueur variable Sandrine Desayes
dune taille de 0 environ 1 milliard de
caractres

4.2.1.3 Autres types

Nom Description Exemple


Boolean Variable dont le contenu peut tre False (0) True
ou True (1)
Date Stocke les informations de date et heure. Si #12/07/02 15:33:17#
la date est omise, le 1er janvier de lanne en #12/07/02#
cours sera utilis. Si lheure est omise, #15:33:17#
minuit sera lheure par dfaut.
Object Le type object est un type universel !Erreur !
(anciennement nomm Variant). Ce type ne Laffectation des adresses
stocke en fait pas la donne elle mme mais mmoire se fait de manire
il contient un pointeur vers ladresse implicite
mmoire contenant la donne. De ce fait,
une variable de type object peut pointer vers
(contenir) nimporte quel type de donnes

4.2.2 Dclaration de variables

La dclaration des variables permet, lors de lexcution dun programme de rserver


lespace mmoire ncessaire au stockage des informations. Par dfaut, la dclaration des
variables est obligatoire mais il est possible de la dsactiver (voir les options communes de
projet). Il est cependant dconseiller de la dsactiver car une simple erreur de syntaxe au
niveau du nom dune variable ne sera pas interprt comme une erreur par le compilateur et
de ce fait, le programme travaillera sur deux emplacements mmoire bien distincts.

Microsoft Visual Basic . Net - Aot 2003 17/139


La dclaration des variables se fait de la faon suivante

Dim nomvariable1, nomvariable2, nomvariable3 as type_variables = valeur_par_defaut

Laffectation dune valeur par dfaut est facultative.

Dim i as integer = 0
Dim moncar as char = i
Dim aujourdui as date = #12/07/02#
Dim nom as string

4.2.3 Porte et visibilit des variables

4.2.3.1 Porte des variables

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 Procdure : si la variable est dclare lintrieur dune procdure ou dune


fonction, elle ne sera accessible qu lintrieur de cette procdure / fonction

- Niveau Module : la variable dclare dans un module sera accessible uniquement


partir des lments du modules (procdures, fonctions)

- 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.

Microsoft Visual Basic . Net - Aot 2003 18/139


- 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)

4.2.5 Les constantes

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.

Dim tx_tva = 19.6


Dim voyelles as string = aeiouy

4.2.6 Les numrations

Les numrations permettent de dfinir un type de variable dont les valeurs


appartiennent un domaine prcis. Chacune des valeurs dune numration correspond un
entier : le premier lment de lnumration est initialis 0, le second 1 etc

Enum civilite
Monsieur
Madame
Mademoiselle
End enum

Microsoft Visual Basic . Net - Aot 2003 19/139


Il est cependant possible de personnaliser les indices utiliss :

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.

Dim macivilite as civilite

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

De manire gnrale, les numrations sont utilises pour le passage de paramtres, de


faon utiliser des constantes parlantes plutt que des valeurs numriques pas toujours
comprhensibles.

4.3 Les oprateurs


il existe 5 types doprateurs

4.3.1 Oprateur daffectation

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

Attention, le signe gal est aussi utilis pour la comparaison.

Il est galement possible dutiliser les oprateurs arithmtique lors dune affectation.

Dim i as integer = 5
I += 3 quivalent i = i + 3

4.3.2 Oprateurs Arithmtiques

les oprateurs arithmtique permettent deffectuer des calculs sur des variables, constantes

Microsoft Visual Basic . Net - Aot 2003 20/139


Oprateur Description Exemple Rsultat
+ Addition 3+2 5
- Soustraction 86 2
* Multiplication 3*4 12
/ Division 8/2 4
\ Division entire 9\2 4
Mod Modulo (Reste de la division entire) 9 mod 2 1
^ Puissance 3^2 9

Dim nombre as double


Nombre = 50 + 7
Nombre = 8 mod 2

4.3.3 Oprateurs de comparaison

Il permettent de comparer deux membres et, en fonction du rsultat, retournent True ou False

Oprateur Description Exemple Rsultat


= 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 Egalit de chane de caractres maison like m* True

4.3.4 Oprateurs de concatnation

La concatnation est lunion de deux chanes. Deux oprateurs existent :

- 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.

Microsoft Visual Basic . Net - Aot 2003 21/139


Dim chaine as string
Dim nombre as integer
Chaine = nous sommes le
Nombre = 23
Msgbox (chaine & nombre) affiche nous sommes le 23
Msgbox (chaine + nombre) plantage !

4.3.5 Oprateurs logiques

Les oprateurs logiques permettent de combiner des expressions logique (renvoyant


True ou False) lintrieur de conditions.
Par rapport la version 6 du langag, deux oprateurs font leur apparition : AndAlso et OrElse.
Ces oprateurs permettent une optimisation des conditions dans le sens o il neffectueront le
second test que si le premier ne rpond pas la condition.

Oprateur Description Exemple Rsultat


And Et logique True and False False
Or Ou logique True or False True
Xor Ou exclusif True Xor True False
Not Ngation Not true False
AndAlso Et logique optimis Test1 AndAlso test2 Test2 sera valu que
si Test1 est True
OrElse Ou logique optimis Test1 OrElse Test2 Test2 sera valu que
si Test1 est faux

4.4 Les structures de contrle


Les structures de contrle permettent de modifier le nombre dexcution dune instruction.

4.4.1 Les conditions

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 Structures conditionnelles

Egalement nommes structures de dcision, les structures conditionnelles aiguillent


lexcution de tel ou tel bloc de code en fonction dune condition.

4.4.2.1 Structure If

Microsoft Visual Basic . Net - Aot 2003 22/139


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
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 constante : test valide si valeur = constante

- 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

Microsoft Visual Basic . Net - Aot 2003 23/139


Dim note as integer
Note = inputbox(Veuillez saisir une note)
Select case Note
Case is <= 10
Msgbox(Examen chou)
Case 11 to 19
Msgbox(Examen russi)
Case 20
Msgbox(Excellent, tout est juste)
Case else
Msgbox(Note invalide)
End Select

4.4.2.3 Instruction conditionnelles

3 autres instructions existent pour effectuer des tests :

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

Linstruction Switch regroupe plusieurs conditions et retourne le rsultat correspondant


pour la premire condition vraie.

Switch (condition1, valeur1, condition2, valeur2 .)

Lib_famille = Switch (code_famille=1, Info, code_famille=2, Consommable)

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)

4.4.3 Structures rptitives

Microsoft Visual Basic . Net - Aot 2003 24/139


Les structures rptitives ou structures de boule permettent dexcuter un bloc dinstructions
un certain nombre de fois.

4.4.3.1 Structure While

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

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

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

4.4.3.3 Structure For

Microsoft Visual Basic . Net - Aot 2003 25/139


La structure For est utilise pour excute un bloc dinstruction un nombre de fois
dtermin tout en grant un compteur qui sera automatiquement incrment. Le nombre
dexcution est fonction de lintervalle dfinit pour le compteur :

For compteur = valeur_depart to valeur_fin step valeur_increment



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

4.5 Procdures et fonctions


Dans une application Visual Basic, les instructions doivent obligatoirement figurer
dans une procdure ou une fonction. Ce sont des units logique de code qui seront ensuite
appeles. Le dcoupage dun programme en procdures et fonctions prsente plusieurs
intrts :

Lisibilit du code : lors de dbogage, il est plus facile danalyser le comportement de


plusieurs blocs de code de 10 lignes quun pav de 200 lignes

Modularit : lcriture de procdures et fonctions permet ensuite deffectuer des appels


partir de plusieurs endroits dans le code au lieu de rcrire les mme instructions

Evolutivit : lorsquune procdure est utilise dans plusieurs partie du programme,


modifier la procdure permettra de rpercuter les modifications pour tous les appels de
la procdure

Enfin, il existe plusieurs cas dans lequel lutilisation de procdures est impos par Vb.

Il existe en Vb 4 catgories de procdures :

Les procdures sub qui excutent du code la demande

Microsoft Visual Basic . Net - Aot 2003 26/139


Les procdures vnementielle dclenches automatiquement lorsquun vnement se
produit (clic sur un bouton par exemple)
Les fonctions qui excutent un bloc de code et retournent une valeur
Les procdures de proprits obligatoires lors de la manipulation dobjets (leur
utilisation est spcifi dans le chapitre consacr aux objets)

4.5.1 Cration de procdure

Lutilisation dune procdure comporte deux tapes : la dclaration dfinissant le


comportement de celle ci et lappel demandant lexcution.

Attention, la dclaration dune procdure ne lexcute en aucun cas !!!

4.5.1.1 Dclaration

public sub nom_procedure(paramtres)



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)

4.5.2 Cration de fonction

Les fonction sont des procdures retournant un rsultat.

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.

Public function nom_fonction(paramtres) as type_retour



return valeur_retour
end function

Microsoft Visual Basic . Net - Aot 2003 27/139


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))

4.5.3 Passage de paramtres

Le passage de paramtres permet de personnaliser le fonctionnement dune procdure


ou dune fonction en lui prcisant lors de lappel les valeurs sur lesquelles elle devra
travailler.

4.5.3.1 Dclaration

Cest lors de la dclaration de la procdure ou de la fonction que vous devez prciser


les paramtres attendus. Ces paramtres seront ensuite utilisables comme des variables locales
la procdure.

Public sub nom_procedure (parametre1 as type_parametre1, parametre2 as type_parametre2


)

Public sub feliciter (nom as string)


Msgbox (bravo & nom)
End sub

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)

Microsoft Visual Basic . Net - Aot 2003 28/139


4.5.3.3 Passage par valeur et par rfrence

Lors du passage de paramtres une procdure ou une fonction, deux mthodes sont
disponibles :

Passage par valeur

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

Passage par rfrence

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

Sub modifier(byref enom as string)


Enom = titi
End sub

Microsoft Visual Basic . Net - Aot 2003 29/139


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)

4.6 Fonctions intgres


Visual Basic comporte un ensemble de fonctions dj intgres permettant de raliser les
oprations de base sur les nombres, chanes et dates. Ces fonctions peuvent apparatre sous
deux formes :
- Fonction standards Vb
- Mthodes des classes de type (System.String, System.DateTime )

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.

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 Description Exemple Rsultat


.Chars(Index) Retourne le caractre lindice Ch.Chars(2) r
Index

Microsoft Visual Basic . Net - Aot 2003 30/139


.IndexOf(Caractre, Retourne lindice de la Ch.IndexOf(p) 6
debut) premire occurrence de
caractre partir de la position
dbut
.Insert(Indice, Insre chaine la position Ch.Insert(2,ta) Tatartanpion
chaine) indice
.Length Retourne le nombre de Ch.length 10
caractre de la chane
.PadLeft(nb, Formate la chane sur nb Ch.PadLeft(15,s) Ssssstartanpion
remplissage) caractres en remplissant les
espaces vides gauche avec
remplissage
.PadRight(nb, Identique mais droite Ch.PadLeft(15,s) Tartanpionsssss
remplissage)
.Remove(debut, Supprime les caractres de la Ch.remove(2,3) Tanpion
nombre) chane partir de lindice
dbut sur une longueur de
nombre
.Replace(recherche, Remplace les occurrences de Ch.replace(an, Tartipion
remplace) recherche par remplace i)
.Split(Sparateur) Dcoupe une chane selon Ch.Split(a) T
sparateur et retourne un Rt
tableau Npion
.StartWith(debut) Retourne un boolen spcifiant Ch.StartWith(tar) True
si la chane commence par
debut
.SubString(Debut, n) Retourne la sous chane Ch.SubString(4,2) Anp
partir de la position Debut sur
1 longueur de n caractres
.ToLower() Met la chane en minuscule Ch.tolower Tartanpion
.ToUpper() Met la chane en majuscule Ch.toUpper TARTANPION
.Trim(caractre) Supprime les occurrences de Ch.trim(t) Artanpion
caractre en dbut et en fin de
chaine

Dautres fonctions sont disponibles dans lespace de nom


microsoft.VisualBasic.Strings

4.6.2 Fonctions sur les nombres

Lensemble des fonctions disponibles pour la gestion des nombres est disponible dans la
classe Math.

Fonction Description Exemple Rsultat


.Floor(n) Tronque la valeur .Floor(3.25) 3
.Ceiling(n) Retourne le nombre entier juste .Ceiling(3.25) 4

Microsoft Visual Basic . Net - Aot 2003 31/139


suprieur
.Pow(n, p) Retourne n la puissance p .pow(2,3) 8
.abs(n) Retourne la valeur absolue de n .abs(-8) 8

4.6.3 Fonctions sur les dates

Pour les exemples ci dessous, nous utiliserons la variable suivante comme base :

Dim d as datetime = #12/07/2003 16:00#

Mthodes Description Exemple Rsultat


.addmonths(n) Ajoute n mois la date d.addmonths(2) #12/09/2003 16 :00#
.addDay(n) Ajoute n jours la date d.addDay(1) #13/07/2003 16:00#
.addHours(n) Ajoute n heures la date d.addHours(1) #12/07/2003 17:00#
.addMinutes(n) Ajoute n minutes la d.addMinutes(1) #12/07/2003 16:01#
date
.addSeconds(n) Ajoute n secondes la d.addSeconds(1)
date
.addYears(n) Ajoute n annes la date d.addyears(1) #12/07/2004 16:00#
.Day Jour du mois d.day 12
.DayOfWeek Jour de la semaine d.DayOfWeek 6
.DayOfYear Jour de lanne d.DayOfYear 341
.DaysInMonth(y, Nombre de jour pour le d.DaysInMonth(1,2003) 31
m) mois m de lanne y
.Minute Retourne la valeur de d.minute 00
minute
.Hour Retourne la valeur de d.hour 16
heure
.Day Retourne la valeur de d.day 12
jour
.Month Retourne la valeur de d.month 07
mois
.Year Retourne la valeur de d.year 2003
anne
.Now Retourne lheure et la d.now
date courante

4.6.4 Fonctions sur les tableaux

pour les exemples ci dessous, nous utiliserons la variable suivante :

dim t() as integer = {1,9,4,3}

Mthodes Description Exemple Rsultat


.Length Retourne la taille du tableau t.length 4

Microsoft Visual Basic . Net - Aot 2003 32/139


.Reverse(tab) Inverse les lments de tab t.reverse(t) 3,4,9,1
.Sort(tab) Trie les lments de tab t.Sort(t) 1,3,4,9
.GetUpperBound(d) Retourne lindice de llment le t.GetUpperBound(0) 3
plus grand dans la dimension
spcifie

4.6.5 Fonctions de conversion

Les fonctions de conversion permettent de travailler sur plusieurs variables possdant


des types de donnes diffrents. Dans tous les cas, le type de donnes retourn est modifi et
la valeur, lorsque cela est possible, adapte au nouveau type. Une erreur sera gnre dans les
autres cas.

Fonction Type de donnes retourn


Cbool Boolen
Cdate Date
CDbl Double
Cint Entier
Cstr String

Il existe principalement deux cas dutilisation de ces fonctions :

Convertir une donne lors dun passage de paramtres


Sassurer du bon fonctionnement des oprateurs de comparaison

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)

4.6.6 Fonction de formatage (Format)

Les fonctions de formatage permettent une reprsentation diffrentes des donnes


numriques ou dates mais ne sont pas utilise pour des conversion de types.
Une seule fonction est utilise en Vb : la fonction format.

Format(expression_a_formater, style) as string

Lexpression formater peut tre une valeur numrique ou de type date / heure.

Microsoft Visual Basic . Net - Aot 2003 33/139


Le style est un format spcifiant les lments de reprsentation de lexpression (par exemple,
le nombre de dcimal aprs la virgule ). Deux possibilits sont offertes lutilisateur pour
le formatage :
- Des formats prdfinis sous vb (par exemple, la date au format amricain)
- Des caractres de formatage permettant lutilisateur de dfinir ses propres formats

4.6.6.1 Caractres de formatage pour les numriques

Formats prdfinis

Caractre Description Exemple


C Sparateur de milliers et 2 dcimales 12 846.49
Percent Multiplie le nombre par 100 et ajoute le signe % 1284648.61%
Scientific Notation scientifique 1.28E+04

Formats dfinis par lutilisateur

Caractre Description
0 Affiche le chiffre ou 0
# Affiche le chiffre ou rien
. Dcimal
, Sparateur de milliers
\ Caractre dchappement

Dim nb as double = 12.263


Msgbox (format(nb, 000,000.00)) affiche 000 012.26
Msgbox (format(nb, ###.##)) affiche 12,26
Msgbox (format(nb, rsultat\ : ###,###.##)) affiche rsultat : 12.26

4.6.6.2 Caractres de formatage pour les dates

Formats prdfinis

Caractre Description Exemple


G Affiche la date selon les paramtres du 4/3/2003
systme
D Format date longue spcifi au niveau du 04/03/2003
systme

Formats dfinis par lutilisateur

Caractre Description
: Sparateur dheures
/ Sparateur de date

Microsoft Visual Basic . Net - Aot 2003 34/139


d Jour sans zro non significatif
dd Jour sur 2 chiffres
ddd Jour sous la forme dabbrviation (ex : Lun)
dddd Jour sous la forme du nom complet (ex : Lundi)
M Mois sans zro non significatif
MM Mois sur 2 chiffres
MMM Mois sous la forme abrge (ex : Juil)
MMMM Mois sous la forme de nom complet
gg Affiche lre (A.D)
h Heure sans zro significatif
hh Heure sur 2 chiffres
m Minute sans zro significatif
mm Minute sur 2 chiffres
s Seconde sans zro significatif
ss Seconde sur 2 chiffres
tt Format 12 heures
yy Anne sur 2 chiffres
yyyy Anne sur 4 chiffres
z Affiche le dcalage horaire

Dim madate as datetime = #12/07/2002 15 :30#


Msgbox(format(madate, M/d/yy)) affiche 12/7/02
Msgbox(format(madate, d-MMMM-yyyy)) affiche 12-Juillet-2002
Msgbox(format(madate, ddd d MMM yy)) Lun 12 Juil 02

4.6.7 Les botes de dialogue

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.

4.6.7.1 Boite de message

La bote de message (MsgBox) permet laffichage dune information et donne la


possibilit de configurer les boutons, le titre et licne associe.

MessageBox.Show(prompt, titre, type_boutons, icne, bouton_par_defaut)

Microsoft Visual Basic . Net - Aot 2003 35/139


Titre

Prompt
Icne

Type boutons

Types de bouton

Types de bouton (membres de la classe MessageBoxButtons)


Constante Description
Ok Bouton Ok Seulement
OkCancel Boutons Ok et bouton annul
AbortRetryIgnore Boutons Abandonner, Ressayer, Ignorer
YesNoCancel Boutons Oui, Non et Annuler
YesNo Boutons Oui et Non
RetryCancel Boutons Ressayer et Annuler

Constantes de Retour

La dfinition du type de boutons modifie laffichage mais permet la mthode .Show de


retourner une valeur correspondant au bouton slectionner par lutilisateur.

Constantes de retour (membres de la classe DialogResult)


Constante Description
Ok Bouton Ok
Cancel Bouton Annuler
Abort Bouton Abandonner
Retry Bouton Ressayer
Ignore Bouton Ignorer
Yes Bouton Oui
No Bouton Non

Type dicne

Types dicne (membres de la classe MessageBoxIcon)


Constante Aperu
Error

Exclamation

Information

Question

Microsoft Visual Basic . Net - Aot 2003 36/139


Bouton par dfaut

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

MessageBox.Show("Le total de la commande s'lve 1000 Eur", "Rsultat",


MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1)

If MessageBox.Show("Continuer ?", "Confirmation", MessageBoxButtons.YesNo) =


DialogResult.Yes then
MessageBox.Show("Vous avez choisi Oui ")
Else
MessageBox.Show("Vous avez choisi Non ")
End if

4.6.7.2 Bote de saisie

La bote de saisie (InputBox) permet la saisie dune chane de caractre par


lutilisateur. Il est possible de paramtrer le titre, le texte affich ainsi que le texte saisi par
dfaut.

Titre

Message

Valeur par dfaut

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)

Microsoft Visual Basic . Net - Aot 2003 37/139


4.7 Les collections
Une collection est une classe contenant un ensemble dobjets de mme type ainsi que
plusieurs proprits et mthodes afin de grer cette liste. Suivants vos besoins, il existe
plusieurs types de collection tous issu de lespace de nom System.Collections .
Pour imager, une collection est un tableau dobjets.

4.7.1 Classe CollectionBase

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.

4.7.1.1 Crer la collection

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 .

Public class PersonneCollection


Inherits system.collections.CollectionBase
End class

La classe PersonneCollection hrite des lments suivants :

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

Microsoft Visual Basic . Net - Aot 2003 38/139


End Set
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)

4.7.2 Classe Stack

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 :

Dim nom_pile as new Stack(nb)

Dim mapile as new Stack(10)

Proprits et mthodes disponibles


Pop Supprime la valeur au sommet de la pile et la retourne
Peek Retourne la valeur au sommet de la pile
Contains(valeur) Return true si valeur est prsent dans la pile
Count Nombre dlment de la pile
Push Insre une nouvelle valeur
Clear Vide la pile

Dim mapile as New Stack(10)

Microsoft Visual Basic . Net - Aot 2003 39/139


Mapile.push(5)
Mapile.push(8)
Mapile.push(10)

Msgbox (Mapile.peek) affiche 5


Msgbox (Mapile.pop) affiche 5 et supprime llment

Msgbox (Mapile.contains(10)) affiche true

Msgbox (Mapile.count) affiche 2

4.7.3 Classe Queue

La classe Queue est galement issue de lespace de nom System.collections . Elle


permet de grer des files FIFO (Premier rentr, premier sorti).

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).

Dim maliste as new Queue(taille_initiale, facteur)

Dim malisteas new Queue(100,1.5)

Proprits et mthodes disponibles


Enqueue(valeur) Ajoute un lment la liste
Dequeue Retourne la valeur et supprime llment
Peek Lit la valeur
Count Nombre dlment
Clear Vide la liste
Contains(valeur) Retourne true si la valeur est prsente dans la liste

4.8 Gestion des erreurs


La gestion des erreurs est fondamentale en programmation : une bonne gestion
derreur permet dviter tout plantage brusque avec risque de perte de donnes, renseigner le
dveloppeur sur lorigine du problme et enfin proposer ou choisir des alternatives.

4.8.1 Types derreurs

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

Microsoft Visual Basic . Net - Aot 2003 40/139


dexcution ne correspond pas lopration demande (Accs un
fichier inexistant, dpassement de capacit). Ces dernire affiche
un message derreur incomprhensible pour lutilisateur final avant
de stopper le programme.
De logique 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.

4.8.2 Gestion en ligne

La gestion en ligne existait dj sur la version 6. Elle permet de dfinir les traitements
effectuer dans une procdure lorsquune erreur survient.

4.8.2.1 Linstruction On Error

Linstruction On error est la base de la gestion derreur : cest elle qui va spcifier
les oprations raliser lorsquune erreur survient.

Il existe 3 gestion diffrentes :

On error resume next

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.

On error goto tiquette

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

Microsoft Visual Basic . Net - Aot 2003 41/139


fin :
msgbox(Une erreur est survenue)
end sub

On error goto 0

Cette instruction dsactive simplement les gestionnaires derreur.

4.8.2.2 Linstruction Resume

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.

Lexemple suivant illustre lutilisation de Resume :

On Error GoTo fin


Dim i, j As Integer
j=0
i = (3 / j)
MsgBox("Fin")
Exit Sub
fin:
Select Case MessageBox.Show("Une erreur est survenue, souhaitez vous ressayer ?",
"", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning,
MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
Case DialogResult.Cancel
Exit Sub
Case DialogResult.Yes
Resume
Case DialogResult.No
Resume Next
End Select

4.8.2.3 Lobjet Err

Avec la mthode prcdente, vous rcuprez toutes les erreur de la procdure et ce


quelque soit lerreur. Pour une gestion derreur plus pointue, vous avez la possibilit de
rcuprer des informations sur la dernire erreur gnre : cest lobjet Err .
Cet objet est toujours accessible.

Microsoft Visual Basic . Net - Aot 2003 42/139


Proprit Description
Description Description textuelle de lerreur
Erl Numro de la dernire ligne excute
Number Numro de lerreur
Source Objet ou application lorigine de lerreur

Mthode Description
Clear Efface les paramtres de lobjet
Raise Dclenche une erreur

Le code suivant affiche les informations sur lerreur :

On Error GoTo fin


Dim i, j As Integer
j=0
i = (3 / j)
MsgBox("Fin")
Exit Sub
fin:
With Err()
MsgBox("Erreur no " & .Number & vbCr & "Description : " & .Description & vbCr &
"Apparu dans : " & .Source)
End With

4.8.3 Les Exceptions

4.8.3.1 Try, Catch & Finally

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}

Microsoft Visual Basic . Net - Aot 2003 43/139


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

Lexemple suivant montre lutilisation des exceptions lors de laccs un fichier


contenu sur une disquette :

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.

5.1 Introduction la POO


Lorsque nous parlons de programmation squentielle, nous avons un ensemble de
variables, de tableaux, de bloc de code, de procdure et de fonction relatifs au mme domaine
mais sans lien logique entre eux : par exemple, pour grer un groupe de personne avec un
nom et un prnom, nous utiliserons deux tableaux en faisant correspondre les indices pour la
mme personne. De mme, les fonctions comme envoyer un mail ou augmenter le salaire
travailleront sur les tableaux sans quil y ait de rel lien.

Lide de la Programmation Oriente Objet est de faire correspondre chaque lment du


monde rel une entit informatique. Cest la notion dobjets. Chaque objet reprsente un
lment du rel et contient ses informations (Couleur, taille .). De plus, les fonctionnalits

Microsoft Visual Basic . Net - Aot 2003 44/139


attendues pour les objets seront implmentes sous la forme de mthode : cest dire une
fonction ou une procdure lie un type dobjet (les classes) et dpendante. Par exemple, la
fonction calculer age perd tout son sens si vous ne lappelez pas partir dune personne
existante (objet). De ce fait, nous obtenons un programme structur logiquement et
grandement clarifi.

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.

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

5.2 Classes & Objets


Nous lavons dit prcdemment, une classe reprsente un objet du rel : elle sera
compose dattributs (variable contenant les caractristiques de lobjet), de mthodes
(procdures ou fonctions matrialisant leur comportement) et dvnement (bloc de code
excuter lorsque lobjet passe un tat dfinit).

La dfinition dune classe permet de dfinir un modle pour les objets qui seront crs.

5.2.1 Cration dune classe

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 .

Public class personne



End class

En visual Basic .Net, il est possible de dfinir une classe lintrieur dune autre classe :

Public class personne



Private class emploi

Microsoft Visual Basic . Net - Aot 2003 45/139


End class
End class

5.2.2 Visibilit de la 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

Protected class personne



End class

5.2.3 Options dhritage

Ces options permettront de prciser le comportement de la classe vis vis de lhritage.

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.

Public MustInherit class personne



End class

5.2.5 Implements & Inherits

Le mot cl Inherits permet dhriter des membres dune super classe(Cf section sur
lhritage).

5.2.6 Cration et utilisation dobjets

Microsoft Visual Basic . Net - Aot 2003 46/139


Une fois la classe dfinie, son utilisation devra se faire par la cration ou instanciation
dobjets. Chaque objet contiendra ses propres caractristiques (valeurs des proprits) mais
aura les mme possibilits (mthodes) que les autres objets.

La cration dun objet se fait en deux tapes :

Dabord, il faut crer une variable capable de rfrencer lobjet cr en mmoire :


cest dire que cette variable ne contiendra que ladresse de lobjet. Le type de cette
variable est le nom de la classe qui instanciera lobjet.

Dim MonObjet as MaClasse

Dim moi as personne


Dim toi as personne

Ensuite, crer lobjet avec loprateur new et stocker ladresse retourne dans la
variable

MonObjet = New MaClasse()

Moi = new personne()


Toi = new personne()

Le mot cl New effectue plusieurs oprations :

Rservation de lespace mmoire ncessaire au stockage de lobjet


Retourne ladresse mmoire de lobjet cr
Le constructeur de la classe est appel (Cf plus bas), gnralement pour initialiser les
proprits de lobjet.

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 :

Microsoft Visual Basic . Net - Aot 2003 47/139


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
Toi = nothing

5.3 Les proprits


Une proprit permet de dfinir une caractristique dun objet. Une proprit peut tre une
variable ou un objet dont la valeur sera dfinie pour chaque objet.

Il existe deux faon dimplmenter une proprit :

5.3.1 Variables

La premire solution consiste dclarer des variables directement lintrieur de la


classe. En fonction de leur visibilits, celles ci seront accessibles uniquement lintrieur de
la classe ou alors dans tout le programme

Public Class personne


Public nom As String
Public prenom As String
Private mdp As String

Microsoft Visual Basic . Net - Aot 2003 48/139


Public Sub afficher()
MsgBox(Me.nom & " " & Me.prenom)
End Sub

End Class

Visibilit partir de la classe :

Visibilit partir dun autre module :

les proprits ainsi cres sont accessibles en lecture / criture :

dim p as personne
p = new personne()
p.nom = toto
p.prenom = titi

5.3.2 Procdures de proprits

Microsoft Visual Basic . Net - Aot 2003 49/139


Lutilisation de variables directement dclares dans la classe nest pas trs souple. En
effet il nest pas possible de :
Crer des proprits en lecture seule
Crer des proprits en criture seule
Effectuer des calculs avant de retourner la valeur dune proprit (pour le formatage
par exemple)
Effectuer des calculs lors de la modification dune proprit (Effectuer des
vrifications de date de naissance par exemple)

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.

Pour crer les procdures de proprit, utiliser la syntaxe suivante :

Private variable_stockage as type_proprit

Property nom_proprit() as type_proprit


Get

End Get

Set (byval value as type_proprit)



End set
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.

Microsoft Visual Basic . Net - Aot 2003 50/139


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 :

Microsoft Visual Basic . Net - Aot 2003 51/139


Enfin il est possible dutiliser les mots cls private et public pour la dfinition des
proprits.

5.4 Les Mthodes

5.4.1 Gnralits

Les mthodes sont des procdures ou des fonctions dclares lintrieur dune classe et
appelable uniquement partir dun objet.

Microsoft Visual Basic . Net - Aot 2003 52/139


lappel de la mthode se fait ensuite par lintermdiaire dun objet issu de la classe.

dim p as personne
p = new personne()
p.afficher()

5.4.2 Constructeur et Destructeur

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.

Public Sub New()

End Sub

Le constructeur suivant permet dinitialiser les proprits de personne

Public Sub New()


v_nom = "toto"
v_prenom = "titi"
v_daten = #12/7/2002#
End Sub

Il est galement possible de passer des paramtres un constructeur. Le constructeur


suivant prend en paramtre le nom de la personne a crer.

Public Sub New(ByVal lenom As String)


v_nom = "toto"
v_prenom = "titi"
v_daten = #12/7/2002#
End Sub

Cest lors de la cration de lobjet que la valeur du paramtre sera dfinie :

Dim p As personne
p = New personne("toto")

Microsoft Visual Basic . Net - Aot 2003 53/139


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.

Protected Overrides sub Finalize()



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

Microsoft Visual Basic . Net - Aot 2003 54/139


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
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

Microsoft Visual Basic . Net - Aot 2003 55/139


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 :


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.

EMPLOYE
Tx_horaire
PERSONNE Duree

Nom
Prnom
Date naissance
CADRE
Calc_salaire() Salaire
Prime

Il sera possible (dans certaines conditions) dinstancier la classe PERSONNE. Cependant,


lorsque nous instancierons les classes EMPLOYE ou CADRE, nous obtiendrons rellement
les classes suivantes :

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.

5.5.2 Mise en place

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.

Public class sous_classe


Inherits super_classe

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

Public Property montant_prime() As Double


Get
Return v_montant_prime
End Get
Set(ByVal Value As Double)
v_montant_prime = Value
End Set
End Property

Public Property salaire() As Double


Get
Return v_salaire
End Get
Set(ByVal Value As Double)
v_salaire = Value
End Set
End Property

Public sub new()


Me.nom =

Microsoft Visual Basic . Net - Aot 2003 57/139


Me.prenom =
Me.daten = #12/07/2002#
Me.salaire = 0
Me.montant_prime = 0
End sub

End Class

Ainsi, lors de linstanciation de la classe cadre, nous retrouvons lensemble des proprits :

5.5.3 Objet MyBase

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 :

Public Sub New()


MyBase.New("tyty", "marine")
Me.salaire = 0
Me.montant_prime = 0
End Sub

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

Microsoft Visual Basic . Net - Aot 2003 58/139


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).

Overrides sub procedure_de_la_super_classe()

Overrides Sub afficher()


MsgBox(Me.salaire)
End Sub

Quelques contraintes doivent cependant tre respectes afin de mener bien le


remplacement :
La mthode de remplacement doit avoir la mme signature que la mthode remplace.
La mthode remplace (dans la super classe) doit comporter loption Overridable

Dans le cas dune mthode de la super classe comportant loption Mustoverride , le


remplacement est obligatoire.

5.6 Mthodes et variables partages


Jusquici, nous avons vu que les mthodes et les proprits ntaient utilisables que par
lintermdiaire dobjet instancis. Les mthodes et variables partages sont elles accessibles
partir de la classe et non dun objet instanci. Ainsi, dans le cas dune variable partage, nous
avons faire une globale au niveau de la classe.

Pour dclarer une proprit ou une mthode partage, il suffit de rajouter le mot cl
shared (partag ) devant le nom du membre :

Public shared nom_variable as type_variable


Public shared function nom_fonction () as type_fonction
Public shared sub nom_procdure ()

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.

Microsoft Visual Basic . Net - Aot 2003 59/139


Public class personne
Private shared v_nbpersonne as integer = 0

Sub New()
v_nbpersonne++
End Sub

Public shared ReadOnly nb_personne() as integer


Get
Return v_nbpersonne
End get
End sub

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)

5.7 Les Interfaces


Une interface est une classe contenant des proprits et dont les mthodes possdent
toutes loption MustOverride , cest dire quelles ne contiennent aucun code.
Les interfaces sont utilises lorsque plusieurs classes doivent implmenter la mme mthode.
Lavantage des interfaces est que le codeur sengage fournir le comportement de toutes les
mthodes lies linterface (Le compilateur sera l pour le vrifier).
Il nest pas possible dinstancier directement une classe.

5.7.1 Cration

La cration dune interface ressemble celle dune classe, elle est dfinie par les mots cl
interface et end interface .

Public interface nom_interface



End interface

Elments susceptibles dintervenir dans une interface


Dclaration de variables
Hritage dune autre interface
Synopsis des mthodes

Microsoft Visual Basic . Net - Aot 2003 60/139


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

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

Il est maintenant possible dutiliser la mthode partir des objets personne :

Public Sub main()


Dim a, b As personne
a = New personne("toto", "titi", #1/1/1901#)
b = New personne("vuvu", "baba", #1/1/1951#)
MsgBox(a.plus_grand(b)) affiche true
End Sub

Microsoft Visual Basic . Net - Aot 2003 61/139


5.7.3 Exploiter les interfaces .Net

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.

Plus simplement, nous devons dfinir dans la classe personne la mthode


CompareTo qui implmente linterface Icomparable et plus particulirement la
mthode CompareTo . Ainsi, lorsque nous appellerons la mthode Sort de la classe
Array , le compilateur utilisera notre mthode afin de comparer les diffrents Objets et
classer notre tableau.

Lintrt des Interfaces est de pouvoir utiliser des mthodes dj dfinies et de


modifier leur comportement afin quelles puissent tre utilises avec des classes utilisateurs.

5.7.3.1 Implmenter linterface

Pour implmenter linterface, il suffit de la dclarer et dcrire le comportement de la


mthode CompareTo :

Public Class personne

Implements comparer
Implements IComparable

Private Function CompareTo(ByVal obj As Object) As Integer Implements _


IComparable.CompareTo

If obj Is Nothing Then Return 1

Dim autre As personne


autre = CType(obj, personne)

If Me.nom < autre.nom Then


Return -1
ElseIf Me.nom > autre.nom Then
Return 1
Else
Return 0
End If

End Function

Microsoft Visual Basic . Net - Aot 2003 62/139


.

5.7.3.2 Utiliser linterface

Une fois linterface implmente, nous pouvons utiliser la mthode Sort avec un
tableau dobjets de type personne :

Sub main()

Dim t_personne(2) As personne


Dim p As personne

t_personne(0) = New personne("toto")


t_personne(1) = New personne("titi")
t_personne(2) = New personne("tata")

Array.Sort(t_personne)

For Each p In t_personne


MsgBox(p.nom)
Next

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.

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

5.8.1 Signature de la mthode

Microsoft Visual Basic . Net - Aot 2003 63/139


Afin de pouvoir stocker une ou plusieurs rfrences vers des fonctions, il faut dfinir
un type de donne correspondant la signature des fonctions qui seront appeles. Nous
dclarerons ensuite une variable de ce type qui contiendra ladresse de la fonction dlgue.

Public delegate function nom_type (parametre) as type_retour

Nous allons crer le type calcul qui sera un pointeur vers fonction :

Public delegate function calcul (byval x as integer, byval y as integer) as integer

Une fois le type dfini, il faut lui assigner une valeur laide de loprateur Address Of

Calcul = addressof multiplier

A ce moment, le type calcul fait rfrence la fonction multiplier .

5.8.2 Appel du Delegate

Une fois le type faisant rfrence la fonction, il suffit dappeler la mthode


invoke afin dexcuter la fonction.

Nom_type.invoke(paramtres)

Msgbox calcul.invoke(1,3) affiche 3

5.9 Les vnements


Les vnements sont des mthodes qui seront automatiquement appeles par les objets
afin de prvenir dun tat donn. Il est galement possible de dfinir des paramtres
lvnement : ces derniers permettront de prciser les conditions dans lesquelles il se
dclenche.

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.

Pour crer un vnement, il faut tout dabord le dclarer dans la classe :

Public event nom_evenement(paramtres)

Dans lexemple suivant, nous crons un vnement lorsque le montant des primes dun cadre
dpasse 10 000.

Microsoft Visual Basic . Net - Aot 2003 64/139


Public event depassement_plafond_prime (byval montant as double)

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.

Raiseevent nom_evenement (valeur_parametre)

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 .

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

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.

5.9.2.1 Utilisation de With Events

La premire solution consiste utiliser le mot cl WithEvents lors de la dclaration


de lobjet :

Dim WithEvents nom_variable as Classe

Dim withEvents violaine as cadre

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

Public sub nom_procedure(parametre) handles objet.nom_evenement



End sub

Microsoft Visual Basic . Net - Aot 2003 65/139


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
procdures ou fonctions et il est impossible de modifier dynamiquement le comportement
dun vnement en le faisant pointer sur une autre procdure par exemple.

5.9.2.2 Utilisation du gestionnaire dvnement

La seconde mthode utilise un gestionnaire dvnement : il nest plus ncessaire


dutiliser le mot cl WithEvents et il faudra associer dynamiquement une procdure pour
grer lvnement. Pour cela, on utilise le mot cl AddHandler prenant en paramtre
lvnement et la procdure.

AddHandler objet.evenement, adresseOf procedure

Dans lexemple suivant, nous avons 2 procdure qui affiche le montant des primes en
mode texte et en mode graphique.

Public sub affiche_txt(byval montant as double)


Console.writeline (montant)
End sub

Public sub affiche_graph(byval montant as double)


Msgbox (montant)
End sub

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.

Dim c1, c2 as Cadre

C1 = new Cadre()
C2 = new Cadre()

Microsoft Visual Basic . Net - Aot 2003 66/139


AddHandler c1.depassement_plafond_prime, addressOf affiche_txt
AddHandler c2.depassement_plafond_prime, addressOf affiche_graph

Ainsi, le traitement des vnements sera diffrent selon lobjet utilis.

A linverse, pour supprimer un gestionnaire dvnement mis en place, il faut utiliser le mot
cl RemoveHandler

RemoveHandler objet.vnement, AddressOf procdure

RemoveHandler c1.depassement_plafond_prime, AddressOf affiche_txt

Si aucune procdure nest lie lvnement, ce dernier sera tout simplement ignor.

5.10 Classes dexemple


5.10.1 Classe personne

Public Class personne

Implements comparer
Implements IComparable

Private Function CompareTo(ByVal obj As Object) As Integer Implements


IComparable.CompareTo

If obj Is Nothing Then Return 1

Dim autre As personne


autre = CType(obj, personne)

If Me.nom < autre.nom Then


Return -1
ElseIf Me.nom > autre.nom Then
Return 1
Else
Return 0
End If

End Function

Public Function plus_grand(ByVal obj As Object) As Boolean Implements


comparer.plus_grand
If Me.daten < obj.daten Then
Return True
Else

Microsoft Visual Basic . Net - Aot 2003 67/139


Return False
End If
End Function

Public Shared v_nbpersonne As Integer = 0

Private v_nom As String = ""


Private v_prenom As String = ""
Private v_daten As Date = #12/7/2002#

Public Overridable Sub afficher()


MsgBox(Me.v_nom & " " & Me.v_prenom)
End Sub

Public Sub New()


v_nom = "toto"
v_prenom = "titi"
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

Microsoft Visual Basic . Net - Aot 2003 68/139


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
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)

Microsoft Visual Basic . Net - Aot 2003 69/139


End If
End Set
End Property

Public Property salaire() As Double


Get
Return v_salaire
End Get
Set(ByVal Value As Double)
v_salaire = Value
End Set

End Property

Public Sub New()


MyBase.New("tyty", "marine")
Me.salaire = 0
Me.montant_prime = 0
End Sub

Overrides Sub afficher()


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 .).

6.1 Les formulaires


les formulaires sont les lments de base des applications graphiques Windows.

6.1.1 Diffrents types

Il existe 2 solutions pour la cration de formulaires sous le FrameWork .Net :


6.1.1.1 Windows Forms

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 ).

Microsoft Visual Basic . Net - Aot 2003 70/139


6.1.1.2 Web forms

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.

6.1.1.3 Modes de prsentation

En fonction de lapplication raliser, plusieurs modes de prsentation des feuilles


peuvent tre utiliss :

Mono document : Ce genre dapplication appele SDI (Single Document Interface) ne


permet laffichage que dune fentre la fois. Loutil Paint en est un bon exemple.

Multi document : Les applications MDI (Multiple Document Interface) sont


constitues dune fentre principale (Fentre mre) contenant son tour plusieurs
documents (fentre fille). Microsoft Word est une application MDI.

Explorateur : Cest le mode de prsentation le plus utilis. Il permet un affichage


hirarchique des menus sur la partie gauche et laffichage des lments sous forme de
liste sur la partie droite. Loutil Gestion de lordinateur sous Windows 2000 en est
un exemple.

6.1.2 Membres de la classe Form

Nous lavons vu au chapitre 4, un formulaire sa cration contient dj plusieurs


lignes de code. Maintenant que nous connaissons la programmation oriente objet ainsi que
ces concepts, voyons dun peu plus prs son contenu :
Hritage de la classe system.windows.forms.form

Inherits System.Windows.Forms.Form

Dfinition du constructeur new avec notamment lappel du constructeur de


MyBase (donc de windows.forms)

Public Sub New()


MyBase.New()
InitializeComponent()
End Sub

Surcharge de mthode Dispose afin de nettoyer les composants ajouts par


lutilisateur

Microsoft Visual Basic . Net - Aot 2003 71/139


Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub

Ajout de la proprit components donnant au formulaire toutes les caractristiques


pour ensuite contenir des contrles

Private components As System.ComponentModel.IContainer

Dfinition des Objets plac sur le formulaire. (remarquez le mot cl withevents


permettant la gestion des vnements). Dans cet exemple, llment ajout est un
champs texte.

Friend WithEvents TextBox1 As System.Windows.Forms.TextBox

Ajout de la mthode InitializeComponent dont le rle est dinitialiser les


diffrentes proprits du formulaire et des contrles. Dans lexemple suivant, nous
avons rajout un champs texte.

<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()


Me.TextBox1 = New System.Windows.Forms.TextBox
Me.SuspendLayout()
'
'TextBox1
'
Me.TextBox1.Location = New System.Drawing.Point(112, 72)
Me.TextBox1.Name = "TextBox1"
Me.TextBox1.Size = New System.Drawing.Size(128, 20)
Me.TextBox1.TabIndex = 0
Me.TextBox1.Text = "toto"
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(292, 273)
Me.Controls.Add(Me.TextBox1)
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)

End Sub

Microsoft Visual Basic . Net - Aot 2003 72/139


6.1.2.1 Proprits

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

Spcifie si le formulaire gre le Drag and Drop (Glisser dpos).

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.

Avec AutoScroll Sans AutoScroll

BackColor

La proprit backColor dfinit la couleur de fond du formulaire.

BackgroundImage

Il est possible de dfinir une image comme fond pour le formulaire. Limage sera
automatiquement rpte en mosaique.

CancelButton

Microsoft Visual Basic . Net - Aot 2003 73/139


Le bouton dannulation ralise lopration inverse du bouton dacceptation. Il permet
dclencher lvnement click dun bouton du formulaire lorsque lutilisateur appuie sur
touche escape.

ControlBox

La proprit ControlBox dfinit si le menu systme apparat au niveau de la barre de titre


du formulaire :

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.

Les diffrentes valeurs sont disponibles dans la classe


System.Windows.Forms.Cursors

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 :

Microsoft Visual Basic . Net - Aot 2003 74/139


Proprit Description Exemple
Name Nom de la police utilise Garamond
Size Taille de la police 12.5
Unit Unit de mesure pour la police (Sachez que Point
la plupart des logiciels utilisent lunit
point )
Bold Texte en gras True
GdiXXXX Paramtres sur le jeu de caractre utilis
Italic Texte en italique True
Strikeout Texte barr False
Underline Texte soulign True

ForeColor

Couleur daffichage par dfaut pour les textes et graphismes du formulaire.

FormBorderStyle

Style de bordure du formulaire :

Valeur Apparence Dimensionnable


None Non

FixedSingle Non

Fixed3d Non

FixedDialog Non

Microsoft Visual Basic . Net - Aot 2003 75/139


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 :

Private sub nom_mthode (ByVal sender As Object, ByVal hlpevent As


System.Windows.Forms.HelpEventArgs) Handles objet.HelpRequested

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 :

Private Sub textBox_HelpRequested(ByVal sender As Object, ByVal hlpevent As


System.Windows.Forms.HelpEventArgs) Handles TextBox1.HelpRequested
converti le paramtre pass en control
Dim requestingControl As Control = CType(sender, Control)
affiche le nom du controle
MsgBox(CStr(requestingControl.name))
valide la gestion de lvnement
hlpevent.Handled = True
End Sub

Microsoft Visual Basic . Net - Aot 2003 76/139


Lobjet sender pass en paramtre rfrence lobjet lorigine de la demande daide.

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.

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()

Microsoft Visual Basic . Net - Aot 2003 77/139


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 :

X : distance entre le bord gauche du conteneur et le bord gauche du formulaire


Y : distance entre le haut du conteneur et le haut du formulaire

Locked

Dtermine si le formulaire est verrouill ou non : cette proprit est identique


enabled mais elle ne grise pas lapparence du formulaire.

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).

Microsoft Visual Basic . Net - Aot 2003 78/139


Opacity

Dfinit un pourcentage dopacit pour la fentre. Une valeur de 100% rend la fentre opaque.

(Exemple avec 65%)

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

Dfinit la position de dpart lorsque la fentre est ouverte :

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

Microsoft Visual Basic . Net - Aot 2003 79/139


Dtermine le texte affich dans la barre de titre

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

Du meilleur effet, cette proprit dfinit la couleur de transparence du formulaire : si vous


spcifiez la couleur jaune en tant que TransparencyKey, toutes les zones du formulaire jaune
seront transparentes :

WindowState

Dtermine ltat du formulaire lors de louverture :

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

Microsoft Visual Basic . Net - Aot 2003 80/139


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

Lobjet formulaire est en cours de cration

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

Le formulaire rcupre le focus.

Deactivate

Le formulaire perd le focus

Closing

Le formulaire est en cours de fermeture, les diffrents lments le composant sont dtruits.
Le formulaire est cependant encore visible.

Closed

Le formulaire est ferm et maintenant invisible.

Dispose

Lobjet formulaire est dtruit.

Resize

Microsoft Visual Basic . Net - Aot 2003 81/139


Cet vnement survient lorsque le formulaire est redimensionn. Gnralement utilis
pour modifier la taille des contrles le composant.

Click

Lutilisateur clique sur le fond du formulaire

DoubleClick

Lutilisateur double clique sur le fond du formulaire

6.1.3 Botes de dialogue

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

La bote de dialogue douverture permet la slection dun ou plusieurs fichiers


physiques. La classe OpenFileDialog permet la gestion de cette bote de dialogue.

Proprit Description Valeur


InitialDirectory Dossier initial C:\winnt
Title Titre de la bote Slection du fichier
Filter Extension des fichiers accepts tous|*.*|Fichier texte|*.txt
DefaultExt Extension par dfaut gif
AddExtension Boolen indiquant si lextension par True
dfaut doit tre automatiquement ajoute
la fin du fichier lors de lenregistrement
MultiSelect Permet la slection de plusieurs fichiers True
CheckFileExist Vrifie lexistence du fichier True
FileName Chemin du fichier slectionn
FileNames Chemin des fichiers selectionns

Microsoft Visual Basic . Net - Aot 2003 82/139


Mthode Description
ShowDialog Affiche la fentre

Le code suivant paramtre la bote de dialogue en acceptant uniquement les fichiers


images (gif ou jpg). La slection multiple est autorise et la liste des fichiers est affiche la
fin.

Dim dlg As OpenFileDialog


dlg = New OpenFileDialog

'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()

'affichage des fichiers selectionns


Dim fichier As String
For Each fichier In dlg.FileNames
MsgBox(fichier)
Next

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 .

Dim dlg As SaveFileDialog


dlg = New SaveFileDialog

Microsoft Visual Basic . Net - Aot 2003 83/139


'paramtrage de la bote
dlg.Title = "Enregistrer le fichier"
dlg.DefaultExt = "gif"
dlg.Filter = "Image gif|*.gif|Image Jpeg|*.jpg"

'affichage de la boite
dlg.ShowDialog()

'affichage des fichiers selectionns


MsgBox("le fichier sera enregistr dans: " & dlg.FileName)

6.1.3.3 Choix dune couleur

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

Dans les deux cas, vous devez utiliser la classe ColorDialog .

Proprit Description

Microsoft Visual Basic . Net - Aot 2003 84/139


Color Dfinit la couleur par dfaut affiche et retourne la couleur slectionne
par lutilisateur
Fullopen Boolen dfinissant si la bote de dialogue saffiche en mode complet ou
non
SolidColorOnly Boolen naffichant que les couleurs gres par la carte graphique

Lexemple suivant affiche une bote de dialogue et modifie la couleur de fond du


formulaire en fonction du choix de lutilisateur :

Dim c As New ColorDialog


c.FullOpen = False
c.Color = Me.BackColor
c.ShowDialog()
Me.BackColor = c.Color

6.1.3.4 Choix dune police

Cette bote de dialogue permet la slection de tous les paramtres concernant le


formatage de chane de caractre (police, taille, gras).

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

Pour afficher la bote de dialogue, utiliser la mthode ShowDialog .

6.2 Les contrles

Microsoft Visual Basic . Net - Aot 2003 85/139


Les contrles permettent de crer linterface entre lutilisateur et notre application.
Cest via les contrles que lutilisateur pourra saisir des donnes, effectuer des slection et
dclencher des actions par lintermdiaires des vnements.

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

6.2.1 Membres communs

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

Nom du contrle. Ce nom ne comporter que des lettres et le caractre underscore _ .

Anchor

Les ancres permettent de modifier automatiquement la taille dun contrle lors du


redimensionnement dun formulaire. Chaque contrle possde sa propre ancre.

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 :

Microsoft Visual Basic . Net - Aot 2003 86/139


CanFocus

Boolen spcifiant si le contrle peut recevoir le focus.

CanSelect

Boolen spcifiant si le contrle peut tre slectionn.

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

Microsoft Visual Basic . Net - Aot 2003 87/139


La proprit Location est un objet permettant de dfinir lemplacement du contrle par
rapport son conteneur. Il est compos de deux proprits (X et Y) qui dfinissent ses
coordonnes par rapport au coin suprieur gauche du conteneur.

Locked

Contrairement la version prcdente, cette proprit ne bloque pas le contrle lors de


lexcution mais lors de la conception. Il permet dviter de modifier les proprits dun
contrle.

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

Par dfaut, la visibilit est friend.

Size

Cet objet permet de dfinir la taille du contrle. Il est compos de deux proprits, width
(largeur) et height (hauteur).

TabIndex

Indice dfinissant lordre de tabulation du contrle par rapport son conteneur.

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

Microsoft Visual Basic . Net - Aot 2003 88/139


6.2.1.3 Evnements

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 Principaux Contrles

Nous ne listerons dans cette partie que les principaux contrles.

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

Microsoft Visual Basic . Net - Aot 2003 89/139


Scrollbars Affiche ou masque les barres de dfilement
Selectionlength Longueur de la slection
SelectionStart Indice de dbut de la slection dans le champs
Text Contenu du champs
TextLength Longueur du texte dans le contrle

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.

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 Description
BorderStyle Style de bordure
AutoSize Le contrle sadapte la taille du texte
Text Contenu du label

Lexemple suivant affiche successivement Bonjour en gras et Au revoir en


rouge lorsque lutilisateur double clic sur le contrle label1 :

Microsoft Visual Basic . Net - Aot 2003 90/139


Private Sub Label1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs)
Handles Label1.DoubleClick
With Me.Label1
If .Text = "Bonjour" Then
.Text = "Au revoir"
.Font = New Font(.Font, FontStyle.Regular)
.ForeColor = System.Drawing.Color.Red
Else
.Text = "Bonjour"
.Font = New Font(.Font, FontStyle.Bold)
.ForeColor = System.Drawing.Color.Black
End If
End With
End Sub

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.

Microsoft Visual Basic . Net - Aot 2003 91/139


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.

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

Microsoft Visual Basic . Net - Aot 2003 92/139


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

Microsoft Visual Basic . Net - Aot 2003 93/139


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 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

Lexemple suivant remplit un ListBox laide dune boucle.

Dim i As Int16
Me.ListBox1.Items.Clear()

Microsoft Visual Basic . Net - Aot 2003 94/139


For i = 1 To 50
Me.ListBox1.Items.Add("Element no " & i)
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.

Microsoft Visual Basic . Net - Aot 2003 95/139


Placer le contrle liste et paramtrer la proprit Dock left
Placer le contrle splitter droite de la liste et paramtrer sa proprit dock
left
Placer le contrle image droite et paramtrer la proprit Dock top
Placer le second splitter en dessous de limage et paramtrer la proprit Dock
top
Enfin, placer le contrle bouton en dessous et paramtrer la proprit Dock
fill

Proprit Description
MinSize
MinExtra

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 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 :

Microsoft Visual Basic . Net - Aot 2003 96/139


Dim chemin as string
Chemin = C:\mes documents\toto.gif
Me.Imagelist1.images.add(Image.fromfile(chemin))
Me.Imagelist1.images.RemoveAt(0)

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 :

Ajouter une racine : Ajoute un lment la racine (Employs par exemple)


Ajouter un enfant : Ajoute un nud enfant au nud slectionn
Etiquette : Texte affich au niveau de llment slectionn
Image : Image du contrle imagelist li.
Image slectionne : Image affiche lorsque llment est slectionn

Microsoft Visual Basic . Net - Aot 2003 97/139


Proprit Description
CheckBoxes Afficher les cases cocher au niveau des lments
FullrowSelect La surbrillance stend sur toute la largeur du contrle
ImageIndex Indice de limage par dfaut du contrle ImageList
ImageList Contrle ImageList contenant les images utilises par le treeview
Indent Valeur en pixel de lindentation
LabelEdit Permet lutilisateur de modifier ltiquette
Nodes Collection de nuds
SelectedImageIndex Indice de limage par dfaut pour les lments slectionns
ShowPlusMinus Affiche les signes + et devant les nuds parents
Sorted Indique si les nuds sont tris

Mthode Description
Nodes.add Ajoute un lment

Le code suivant remplit un ImageList, insre lintrieur du TreeView 2 catgories


principales (Renault & Peugeot) et place ensuite lintrieur les diffrents modle en leur
affectant des images :

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

Dim noeud1, noeud2 As TreeNode


noeud1 = New TreeNode
noeud2 = New TreeNode

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)

Microsoft Visual Basic . Net - Aot 2003 98/139


End With

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 :

Pour chaque lment, il est possible de paramtrer :

Checked : dfinit si llment apparat coch par dfaut


Font : police de llment
ForeColor : couleur daffichage du texte
ImageIndex : indice de limage lie llment
Text : libell de llment
UseItemStyleForSubitems : rpercute les proprit de llment sur les sous lments

Microsoft Visual Basic . Net - Aot 2003 99/139


SubItem : dans un affichage par dtail, correspond aux colonnes partir de la seconde.
Lors du clic sur le bouton correspondant cette proprit, un nouvel assistant est lanc
pour dfinir les autres colonnes.

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 :

Dim elt As ListViewItem


Dim i As Byte

With Me.ListView1
.View = View.Details
.Columns.Add("Ascii", 50, HorizontalAlignment.Center)

Microsoft Visual Basic . Net - Aot 2003 100/139


.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

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.

TabControl possde galement un assistant permettant de le configurer. Pour ouvrir


lassistant, utiliser le bouton droite de la proprit TabPages :

Pour chaque page , il est possible de configurer les options dapparence qui sont
analogues celles dun formulaire.

Microsoft Visual Basic . Net - Aot 2003 101/139


Proprit Description
Alignment Dfinit la position des onglets par rapport aux pages
HotTrack Modifie lapparence des onglets lorsque la souris passe dessus
Imagelist ImageList li pour les icnes donglets
Multiline Permet laffichage des onglets sur plusieurs lignes
TabPages Collection de pages.

6.2.2.14 Menus

les menus permettent doffrir lutilisateur un ensemble de fonctionnalits sans pour


autant surcharger la prsentation du formulaire. Il existe 2 types de menu :

Menu dapplication situ en haut du formulaire


Menu contextuel activ gnralement lors dun clic droit

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

Microsoft Visual Basic . Net - Aot 2003 102/139


6.2.2.15 DateTimePicker

Le contrle DateTimePicker associe une zone de texte et un calendrier permettant la


slection dune date.

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

Il existe un second contrle pour la gestion des dates : MonthCalendar. Ce dernier


reprend les fonctionnalits du contrle DateTimePicker avec en plus la possibilit de dfinir
des jours fris ou des priodes slectionnes.

6.2.2.16 Timer

Le contrle Timer permet de dclencher un vnements intervals rguliers.

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.

6.2.3 Le Drag and Drop

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).

Microsoft Visual Basic . Net - Aot 2003 103/139


6.2.3.1 Dmarrer le drag and drop

Pour dmarrer le drag and drop, vous devez dtecter lorsque lutilisateur quitte un
contrle avec un bouton enfonc. Pour cela, on utilise lvnement MouseMove :

Private Sub TextBox1_MouseMove(ByVal sender As Object, ByVal e As


System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseMove
If e.Button = MouseButtons.Left Then

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 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

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 Description Utilisation


DragEnter Se produit lorsque le curseur entre dans Utilis pour modifier lapparence
la zone du contrle. du contrle cible et du curseur et
vrifier la validit de llment
dplac
DragOver Se produit tant que le curseur reste au
dessus de la zone du contrle
DragLeave Se produit lorsque le curseur quitte la Utilis pour rtablir lapparence
zone du contrle du contrle cible et du curseur

Sur chacun des vnement est pass en paramtre e de type DragEventsArg


contient toutes les informations sur le dplacement :

Proprit Description

Microsoft Visual Basic . Net - Aot 2003 104/139


Data Correspond llment dplac
Effect Dfini laction autorise par le contrle de destination et permet de modifier
lapparence de la souris
KeyState Permet de connatre ltat des touches Shift, Alt, Ctrl
X, Y Position du curseur sur le contrle

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).

6.2.3.3 Rcuprer llment

La rcupration de llment se fait lorsque lvnement DragDrop est dclench.

Ci dessous figure un exemple complet permettant de dplacer du texte dune textbox


une autre :

Private Sub TextBox1_MouseMove(ByVal sender As Object, ByVal e As


System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseMove
If e.Button = MouseButtons.Left Then
Me.TextBox1.DoDragDrop(Me.TextBox1.Text, DragDropEffects.Move)

End If
End Sub

Private Sub TextBox2_DragEnter(ByVal sender As Object, ByVal e As


System.Windows.Forms.DragEventArgs) Handles TextBox2.DragEnter
e.Effect = DragDropEffects.Move
Me.TextBox2.BorderStyle = BorderStyle.FixedSingle
End Sub

Private Sub TextBox2_DragDrop(ByVal sender As Object, ByVal e As


System.Windows.Forms.DragEventArgs) Handles TextBox2.DragDrop
Me.TextBox2.Text = e.Data.GetData(DataFormats.Text)
Me.TextBox2.BorderStyle = BorderStyle.FixedSingle
If CBool(e.KeyState And 32) Then
Me.TextBox1.Clear()
End If
End Sub

Private Sub TextBox2_DragLeave(ByVal sender As Object, ByVal e As


System.EventArgs) Handles TextBox2.DragLeave
Me.TextBox2.BorderStyle = BorderStyle.Fixed3D
End Sub

Microsoft Visual Basic . Net - Aot 2003 105/139


7 ActiveX Data Object .Net
Laccs aux donnes dans le dveloppement dapplications est une tape fondamentale
qui influera ensuite sur la rapidit et lvolutivit de votre application. Dans les versions
prcdentes de Visual Basic, il existait plusieurs mthodes daccs aux donnes en fonction
des configurations (Bases de donnes distantes ou locales, type de fichiers) : DAO, RDO,
ADO. Dans la nouvelle mouture seule la technologie ADO .Net est gard. Elle permet un
accs diffrentes sources de donnes par lintermdiaire de fournisseurs OLE DB. La grande
force de cette technologie est quelle permet une manipulation identique quelque soit la
source de donnes (en dehors des paramtres de connexion).

Cette nouvelle version voit apparatre de nouvelles fonctionnalits :


Gestion des donnes en mode dconnect : les DataSet et DataAdapter permettent de
fusionner la base de donnes avec des fichiers de donnes en intgrant les
modifications effectues de chaque bord et, le cas chant, mettre en avant les conflits
Mise disposition de classe dpendante de la source de donnes afin doptimiser les
traitement et ainsi viter les couches successives
Intgration du format XML pour lchange et le rapatriement de donnes

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 :

Espace de noms Description


System.Data Contient les objets ADO nappartenant pas un fournisseur
spcifique (DataSet, DataTable )
System.data.Common Contient les classes de base pour plusieurs objets des autres
espaces de noms
System.Data.OleDB Contient les objets associs au fournisseurs OLEDB .Net
System.Data.SqlClient Contient les objets associs au fournisseurs Sql Server .Net

7.1 Mode connect et dconnect


Lors de lutilisation de donnes dans une application, deux modes sont opposs :

7.1.1 Mode connect

On parle de mode connect lorsque lapplication client un accs direct la source de


donnes. Dans ce cas, vous devez dans un premier vous connecter la source avant
deffectuer nimporte quelle tche. Ce mode est utilis pour les applications rsidante au
sein dune entreprise dans laquelle la base de donnes est toujours accessible.

Dans ce mode, vous utiliserez les objets suivants :

Connection : permet dtablir une connexion avec la source de donnes

Microsoft Visual Basic . Net - Aot 2003 106/139


Command : cet objet permet dexcuter des traitements o de modifier / lire des
donnes sur la source
DataReader : permet de parcourir un ensemble denregistrement rcupr

7.1.2 Mode dconnect

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.

Dans cette configuration, le traitement des donnes se fait en 3 tapes :

Rcupration des donnes partir de la source


Modification des donnes en mode dconnect
Intgration des donnes modifies la source avec, le cas chant, rsolution des
conflits (gnralement les contraintes dintgrit)

Si vous utilisez le mode dconnect, vous disposerez des objets suivants :


DataSet : jeu de donnes
DataAdapter : classe permettant la fusion entre un jeu de donnes et la source

7.2 Les fournisseurs daccs


Les fournisseurs daccs permettent la communication avec une source de donnes. En
fonction des sources de donnes, le provider sera diffrent. Il existe 3 types de Providers en
ADO.Net :

o Les fournisseurs ODBC permettant de se connecter aux sources ODBC


o Le fournisseur OLE DB (permettant de se connecter toutes les sources ayant
un provider OLE Db). Voir http://www.able-
consulting.com/MDAC/ADO/Connection/OLEDB_Providers.htm pour plus
dinformations
o Les fournisseurs natifs (Pour Sql Server ou Oracle)

Source de donnes Fournisseur Chaine de connexion


Microsoft Access OLEDB Microsoft.Jet.OLEDB.4.0
SQL Server SQL SQLOLEDB.1
Oracle OLEDB OraOLEDB.Oracle
ODBC ODBC MSDASQL
MySQL OLEDB MySQLProv

Le choix du fournisseur aura deux impacts majeurs dans le dveloppement de votre


application :
Influe sur la rapidit des traitements avec la source de donnes : lorsque que vous le
pouvez, utiliser le fournisseur ddi votre base de donnes

Microsoft Visual Basic . Net - Aot 2003 107/139


Utilisation des fonctionnalits propres la source : certaines fonctionnalits ne sont
accessibles que pour certains fournisseurs. Choisir un fournisseurs trop gnrique ne
vous permettra pas dexploiter compltement les fonctionnalits de votre source.

7.3 Lobjet Connection


Lobjet connection constitue la premire tape dans laccs aux donnes : elle permet
de se connecter la source et de connatre le niveau de scurit et les diffrents droits de
lutilisateur sur la source.

En fonction du type de fournisseur choisi, la cration de lobjet Connection diffrera :

Fournisseur Classe
ODBC Odbc.OdbcConnection
OLEDB OLEDB.oledbConnection
SQL Server Sqlclient.SQLconnection

Lexemple suivant cre 3 connexions en fonction du fournisseur :

Dim cn_oledb As New OleDb.OleDbConnection


Dim cn_odbc As New Odbc.OdbcConnection
Dim cn_sql As New 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;"

Microsoft Visual Basic . Net - Aot 2003 108/139


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
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 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

Microsoft Visual Basic . Net - Aot 2003 109/139


StateChange Dclench lors du changement de la proprit State
InfoMessage Dclench lorsque la BD envoie un message

Lexemple suivant permet dafficher un message lorsque la connexion se ferme :

Dim WithEvents cn as new OleDb.OleDbConnection

Private sub cn_State_change(byval sender as Object, ByVal e as


System.Data.StateChangeEventArgs) handles cn.StateChange
If (e.CurrentState = ConnectionState.closed) then
MsgBox("Connexion ferme ! ")
End if
End sub

7.4 Objet Command


Une fois la connexion tablie avec la source de donnes, vous devez communiquer avec cette
dernire pour grer vos traitements. Trois types de traitements peuvent tre effectus :
Requte de slection pour extraire des informations
Requte dexcution
Procdures stockes (scripts stocks sur le serveur)

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

Lexemple suivant permet de rcuprer le rsultat dune requte :

Dim com_sql As New SqlClient.SqlCommand


Dim dr_sql As SqlClient.SqlDataReader

Microsoft Visual Basic . Net - Aot 2003 110/139


com_sql.Connection = cn_sql
com_sql.CommandType = CommandType.Text
com_sql.CommandText = "select * from STAGIAIRE"

dr_sql = com_sql.ExecuteReader

Lexemple suivant permet de modifier les enregistrements dune table et dafficher le


nombre denregistrement modifis :

Dim com_sql As New SqlClient.SqlCommand

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)

Lexemple suivant permet de rcuprer le nombre de stagiaires :

Dim com_sql As New SqlClient.SqlCommand

com_sql.Connection = cn_sql
com_sql.CommandType = CommandType.Text
com_sql.CommandText = "select count(*) from STAGIAIRE"
MsgBox(com_sql.ExecuteScalar)

Lexemple suivant permet lexcution dune procdure stocke :

Dim com_sql As New SqlClient.SqlCommand


Dim dr_sql As SqlClient.SqlDataReader

com_sql.Connection = cn_sql
com_sql.CommandType = CommandType.StoredProcedure
com_sql.CommandText = "sp_who"
dr_sql = com_sql.ExecuteReader

7.5 Objet DataReader


De manire gnrale, il existe deux types de rsultat pour un objet command : soit il
retourne un seul rsultat (cest le cas lorsque vous utilisez les mthodes ExecuteScalar ou
ExecuteNonQuery), soit il retourne un ensemble denregistrements (mthode ExecuteReader).

Lobjet DataReader permet de lire (seulement en avant) les enregistrements issus


dune requte.

Proprit Description
FieldCount Nombre de champs (colonne)
HasRows Dtermine si le DataReader comporte 1 ou plusieurs lignes

Microsoft Visual Basic . Net - Aot 2003 111/139


RecordsAffected Nombre de ligne affecte lors dune opration en Transact SQL

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

Lexemple suivant affiche tous les enregistrement du datareader en sparant chaque


champs par un pipe | . Si aucun enregistrement nest retourn, un message est affich.

Dim com_sql As New SqlClient.SqlCommand


Dim dr_sql As SqlClient.SqlDataReader

com_sql.Connection = cn_sql
com_sql.CommandType = CommandType.Text
com_sql.CommandText = "select * from FORMATEUR"
dr_sql = com_sql.ExecuteReader

if not dr_sql.HasRows then msgBox(Aucun enregistrement)

Dim contenu As String


Dim i As Int16
Do While dr_sql.Read
For i = 0 To dr_sql.FieldCount - 1
contenu &= dr_sql.GetValue(i)
Next
contenu &= vbCr
Loop
MsgBox(contenu)

7.6 Objet DataSet


Un DataSet regroupe un ensemble de classe, collections et objets permettant de
reproduire une source de donnes relationnelle avec des objets Tables et Relation .
Lintrt dun tel objet est de pouvoir travailler sur des donnes sans pour autant tre connect
la base ce qui permet une meilleur monter en charge des bases de donnes qui se verront
soulages dun grand nombre doprations.

La cration dun DataSet se fait par simple dclaration en spcifiant son nom.
Attention, deux DataSet ne peuvent avoir le mme nom.

Dim monds as DataSet


Monds = new DataSet("monds")

Microsoft Visual Basic . Net - Aot 2003 112/139


Une fois cr, vous devez lui ajouter des relations et des tables contenant elle mme
des champs.

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

7.6.1 Objet DataTable

Lobjet DataTable correspond une table.

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

Lexemple suivant cre un objet DataTable en spcifiant ces paramtres et le lie au


DataSet

Dim donnees As New DataSet("donnees")


Dim personne As New DataTable("personne")
personne.CaseSensitive = False
personne.MinimumCapacity = 50
donnees.Tables.Add(personne)

7.6.2 Objet DataColumn

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

Microsoft Visual Basic . Net - Aot 2003 113/139


Int32
Int64
SByte Entier compris entre 127 et 128
Single Nombre virgule flottante
String Chane de caractre
TimeSpan Reprsente un intervalle de temps
UInt16 Entier non sign cod sur 16 bits
UInt32
UInt64

Les proprits de la colonne

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 :

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

Microsoft Visual Basic . Net - Aot 2003 114/139


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)
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)

Dim col3 As New Data.DataColumn("pers_cat_num", GetType(Integer))


donnees.Tables("personne").Columns.Add(col3)

'creation de la table catgorie et ajout des champs


Dim categorie As New DataTable("categorie")
categorie.CaseSensitive = False
categorie.MinimumCapacity = 50
donnees.Tables.Add(categorie)

Dim col4 As New Data.DataColumn("cat_num", GetType(Integer))


col4.AutoIncrement = True
col4.AutoIncrementSeed = 1
col4.AutoIncrementStep = 1
donnees.Tables("categorie").Columns.Add(col4)
donnees.Tables("categorie").PrimaryKey = New DataColumn() {col4}

Dim col5 As New Data.DataColumn("cat_lib", GetType(String))


col5.MaxLength = 50

Microsoft Visual Basic . Net - Aot 2003 115/139


donnees.Tables("categorie").Columns.Add(col5)

'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)

'Ajout des contraintes


Dim fk As ForeignKeyConstraint = rel.ChildKeyConstraint
fk.DeleteRule = Rule.None
fk.UpdateRule = Rule.None

Notez que la dernire partie dfinit le comportement des enregistrements de la relation


lors dopration dinsertion ou de suppression : dans le cas prcdent, la suppression dune
catgorie de personne sera refuse si elle contient des personnes.

7.6.4 Travailler avec les donnes

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.

7.6.4.1 Parcourir les donnes

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

Lexemple suivant affiche tous les lments de la table personne :

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 :

Microsoft Visual Basic . Net - Aot 2003 116/139


Le second exemple permet dafficher pour chaque catgorie, toutes les personnes
correspondantes. Le code va dans 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)

Le rsultat obtenu :

A linverse, il est possible de rcuprer lenregistrement parent dun


enregistrement faisant parti dune relation avec la mthode GetParentRow . Cette mthode
prend galement en paramtre la relation pour laquelle vous souhaitez rcuprer
lenregistrement pre. Lexemple suivant affiche la liste des personnes en affichant galement
le libell de la catgorie laquelle ils appartiennent :

Dim contenu3 As String = "--- Liste des personnes avec le libell catgorie---" & vbCr
With donnees.Tables("personne")
For i = 0 To .Rows.Count - 1

Microsoft Visual Basic . Net - Aot 2003 117/139


contenu3 &= .Rows(i).Item("pers_num") & " - " & .Rows(i).Item("pers_nom") & "
- " & .Rows(i).GetParentRow("personne_categorie").Item("cat_lib") & vbCr
Next
End With
MsgBox(contenu3)

Le rsultat obtenu :

7.6.4.2 Insertion de donnes

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.

Lexemple suivant ajoute un enregistrement dans la table categorie :

Dim dr As DataRow = donnees.Tables("categorie").NewRow()


dr("cat_lib") = "Salari"
donnees.Tables("categorie").Rows.Add(dr)

Lexemple suivant ajoute une personne en lui attribuant la catgorie no 3 (catgorie


inexistante !) :

Dim dr2 As DataRow = donnees.Tables("personne").NewRow()


dr2("pers_nom") = "Victor"
dr2("pers_cat_num") = "3"
donnees.Tables("personne").Rows.Add(dr2)

A ce moment, une exception est leve car les enregistrements ne respectent pas la
relation personne_categorie :

Microsoft Visual Basic . Net - Aot 2003 118/139


7.6.4.3 Modification de donnes

La modification de donnes est possible en modifiant la collection Rows de lobjet


DataTable. La modification dun enregistrement se fait en 3 tapes :

Appel de la mthode BeginEdit sur lobjet DataRow : cette mthode permet de


commencer une opration de modification
Modification des donnes
Appel de la mthode EndEdit pour valider les modifications ou CancelEdit
pour les annuler.

Lexemple suivant modifie le premier enregistrement de la table Personne :

With donnees.Tables("personne").Rows(0)
.BeginEdit()
.Item("pers_nom") = "saturnin"
.EndEdit()
End With

7.6.4.4 Suppression de donnes

La suppression de donnes consiste supprimer des Objets DataRow de lobjet


DataTable. Pour cela, on utilise la mthode Delete de lobjet DataRow.

Lexemple suivant permet de supprimer une personne :

donnees.Tables("personne").Rows(0).Delete()

7.6.5 Objet DataView

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

Microsoft Visual Basic . Net - Aot 2003 119/139


AllowNew Autorise lajout denregistrements
Count Nombre denregistrement
RowFilter Dfinit un filtre pour les donnes : chane de texte quivalente la
clause where dune requte SQL
Sort Dfinit le tri : Equivalant la clause order by dune requte
SQL

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.

Lexemple suivant cre un DataView partir du DataTable personne et ne garde que


les personnes dont le numro de catgorie est 1. les enregistrements sont classs par nom
dcroissant. Enfin, nous recherchons lenregistrement dont le nom est Julien et nous
affichons les informations.

Dim dv As New DataView


dv.Table = donnees.Tables("personne")
dv.AllowDelete = False
dv.AllowNew = False
dv.AllowEdit = True
dv.Sort = " pers_nom"

Dim indice As Integer


indice = dv.Find("Julien")
MsgBox(dv(i).Item("pers_nom"))

7.6.6 Les vnements

La modification des donnes dun DataTable entrane la leve de plusieurs vnements


qui permettront par exemple de valider les valeurs saisies dans les enregistrements.

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 Objet DataAdapter

Microsoft Visual Basic . Net - Aot 2003 120/139


Les Objets DataSet et DataTable permettent de dfinir la structure des donnes au
sein dune application comme mode temporaire de stockage. Ceux ci peuvent ensuite tre
aliments en donnes par un fichier texte par exemple. La ralit est cependant diffrente, la
plupart des applications ncessitent linterrogation et le stockage des informations dans une
base de donnes distante (Oracle, Sql Server) ou local (Access).

Lobjet DataAdapter est un connecteur entre la source de donnes et lobjet DataSet.


Lintrt dun tel composant est de pouvoir dissocier la zone de stockage des donnees (Une
BDR par exemple) de la zone de travail (Le DataSet).

Son utilisation se fait en plusieurs tapes :

Connection la source de donnes


Rcupration des donnes de la base et insertion dans les DataTable
Dconnexion de la source de donnes
Modification des donnes par lapplication
Connexion la source de donnes
Envoi des modifications effectues vers la source

7.7.1 Cration

Lors de la cration dun DataAdapter, il est ncessaire de spcifier la connexion


utilise ainsi que la requte Select. En fonction du Provider utilis, lobjet DataAdapter sera
diffrent car il doit tre en mesure de modifier les donnes dune source.
2 objets existent :

OleDbDataAdapter
SqlDataAdapter

Dim da As New OleDb.OleDbDataAdapter("select * from Table1", cn)

Ainsi, le DataAdapter sait sur quelles donnes il devra travailler.

7.7.2 Importer des donnes

Limportation des donnes consiste remplir les DataTable dune DataSet partir
dun DataAdapter dfini.

7.7.2.1 Remplir un DataSet

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.

Microsoft Visual Basic . Net - Aot 2003 121/139


Remplir un DataTable existant

La premire possibilit consiste remplir une DataTable dj existant : dans ce cas, la


structure du DataTable doit correspondre au jeu de rsultat retourn. Nous verrons plus tard
quil est possible de passer outre cette possibilit en utilisant un Mappage des donnes. La
mthode Fill prend en paramtres un DataSet ainsi que le nom de la table remplir.

'definition dataset et datatable


Dim ds As New DataSet("monds")
Dim t As New DataTable("matable")
Dim col1 As New Data.DataColumn("num", GetType(Integer))
Dim col2 As New Data.DataColumn("lib", GetType(String))
t.Columns.Add(col1)
t.Columns.Add(col2)
ds.Tables.Add(t)

'connexion (dfinition mais pas ouverture)


Dim cn As New OleDb.OleDbConnection
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\bd2.mdb;"

'remplissage datatable partir du DataAdapter


Dim da As New OleDb.OleDbDataAdapter("select * from Table1", cn)
da.Fill(ds, "matable")

Crer et remplir un nouveau DataTable

La seconde possibilit permet de laisser au DataAdapter le soin de crer le DataTable


ainsi que sa structure. Dans ce cas, il suffit dappeler la mthode Fill en passant en paramtre
le nom dun DataTable inexistant.

'definition dataset et datatable


Dim ds As New DataSet("monds")

'connexion (dfinition mais pas ouverture)


Dim cn As New OleDb.OleDbConnection
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\bd2.mdb;"

'remplissage datatable partir du DataAdapter


Dim da As New OleDb.OleDbDataAdapter("select * from Table1", cn)
da.Fill(ds, "matable")

Rcuprer un certain nombre denregistrements

Microsoft Visual Basic . Net - Aot 2003 122/139


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")

Remplissage de Datatable multiples

Il est galement possible de remplir plusieurs DataTable partir dun seul


DataAdapter en passant en paramtres plusieurs requtes spares par des points virgules :

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.

'connexion (dfinition mais pas ouverture)


Dim cn As New OleDb.OleDbConnection
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\bd2.mdb;"

'remplissage datatable partir du DataAdapter


Dim da As New OleDb.OleDbDataAdapter("select * from Client;Select * from
Produit;Select * from Commande", cn)
da.Fill(ds, "matable")
ds.Tables(1).TableName = Client
ds.Tables(2).TableName = Produit
ds.Tables(3).TableName = Commande

7.7.2.2 Mappage des donnes

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.

Une telle mthode peut tre utile afin de :

Modifier le nom dune table


Renommer les champs dune table pour amliorer la lisibilit du code
Rcuprer des informations pour des colonnes ne portant pas de nom (les oprations
daggrgation par exemple)

Microsoft Visual Basic . Net - Aot 2003 123/139


La dfinition dun mappage se fait au niveau du DataAdapter par le biais de la collection
TableMapping et ColumnMapping qui contiennent les quivalences en terme de
tables et de champs.

Lexemple suivant dfinit un mappage correspondant au schma ci dessous :

DataTable : customer Table : Client

no num
name nom
surname prenom
birth daten

'definition dataset et datatable


Dim ds As New DataSet("monds")
Dim t As New DataTable("customer")
Dim col1 As New Data.DataColumn("name", GetType(String))
Dim col2 As New Data.DataColumn("surname", GetType(String))
Dim col3 As New Data.DataColumn("birth", GetType(Date))
Dim col4 As New Data.DataColumn("no", GetType(Int32))
t.Columns.Add(col1)
t.Columns.Add(col2)
t.Columns.Add(col3)
t.Columns.Add(col4)
ds.Tables.Add(t)

'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)

'dfinition des mappings de table & champs


da.TableMappings.Add("Client", "customer")
da.TableMappings(0).ColumnMappings.Add("num", "no")
da.TableMappings(0).ColumnMappings.Add("nom", "name")
da.TableMappings(0).ColumnMappings.Add("prenom", "surname")
da.TableMappings(0).ColumnMappings.Add("daten", "birth")

'remplissage
da.MissingMappingAction = MissingMappingAction.Ignore
da.Fill(ds.Tables("customer"))

Microsoft Visual Basic . Net - Aot 2003 124/139


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 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

Lexemple suivant importe la structure de la table Client vers le DataSet ds et


affiche la structure de la table :

'connexion
Dim cn As New OleDb.OleDbConnection
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\bd2.mdb;"

'definition du DataAdapter & DataSet


Dim da As New OleDb.OleDbDataAdapter("select * from Client", cn)
Dim ds As New DataSet("monds")
da.FillSchema(ds, SchemaType.Source, "dt_client")

'affichage de la structure de la table


Dim chps As DataColumn
Dim contenu As String
For Each chps In ds.Tables("dt_client").Columns
contenu &= chps.ColumnName & " - " & chps.DataType.ToString & vbCr
Next
MsgBox(contenu)

Rsultat obtenu :

7.7.3 Exporter des donnes

Microsoft Visual Basic . Net - Aot 2003 125/139


Dans la plupart des applications exploitant les bases de donnes, vous devrez tt ou
tard mettre jour la source de donnes partir des donnes modifies dans un DataSet ou un
DataReader : cest galement le rle du DataAdapter qui doit pouvoir mettre jour les
enregistrement insrs, modifis ou supprims.

Dans un premier temps, vous devrez dfinir le comportement du DataAdapter pour


chaque type de modification sur la table du DataSet (Insert, Update, Delete). Il est galement
possible deffectuer un mappage pour les donnes du DataSet et de la source.

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.

7.7.3.1 Mise jour de la source de donnes

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

7.7.3.1 Dfinition des requtes dactualisation

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

Microsoft Visual Basic . Net - Aot 2003 126/139


Lexemple suivant cre les commandes dactualisation partir de la 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")

'creation des commandes


Dim cmdbuilder As New OleDb.OleDbCommandBuilder(da)
da.InsertCommand = cmdbuilder.GetInsertCommand
da.DeleteCommand = cmdbuilder.GetDeleteCommand
da.UpdateCommand = cmdbuilder.GetUpdateCommand

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 = ?)) )

Gnrer ses propres commandes

Microsoft Visual Basic . Net - Aot 2003 127/139


De manire gnrale, la commande dinsertion correspond aux besoins de lentreprise.
Cependant, concernant les commandes Update et Delete, elles imposent que lenregistrement
mettre jour nest pas t modifi entre sa lecture et sa mise jour par votre application.

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.

'creation de la commande personnalise de suppression


Dim cmddelete As New OleDb.OleDbCommand("Delete from Client where
num = ?", cn)
'definition du parametre numro
With cmddelete.Parameters.Add("@p1", GetType(Integer))
.SourceColumn = "num" 'colonne lie
.SourceVersion = DataRowVersion.Original 'valeur rcuprer
End With
'dfinition de la requete comme DeleteCommand du DataAdapter
da.DeleteCommand = cmddelete

7.7.3.2 Dclencher la mise jour des donnes

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")

Afin de ne pas lancer de mise jour injustifie, la proprit HasChanges de lobjet


DataSet peut tre consulte :

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.

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)

Microsoft Visual Basic . Net - Aot 2003 128/139


da.Update(tbl2)

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

Afficher les lignes conflictuelles

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)

Microsoft Visual Basic . Net - Aot 2003 129/139


Else
MsgBox("Toutes les mises jour ont t effectues")
End If

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.

Evnements et proprits lis

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 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)

Lexemple suivant utilise lvnement RowUpdated afin de rsoudre les conflits


de maj lorsquils interviennent :

Private Sub da_RowUpdated(ByVal sender As Object, ByVal e As


System.Data.OleDb.OleDbRowUpdatedEventArgs) Handles da.RowUpdated
'gestion des conflits de maj
If e.Row.RowState <> DataRowState.Unchanged Then
Select Case e.Row.RowState
Case DataRowState.Deleted
If Not TypeOf e.Errors Is DBConcurrencyException Then
'erreur d'integrite referentielle
MsgBox("Erreur suppression" & vbCr & "type erreur =
" & e.Errors.Message)
Else
'conflit d'actualisation, l'enregistrement n'existe
plus

Microsoft Visual Basic . Net - Aot 2003 130/139


MsgBox("L'enregistrement supprimer n'existe plus
dans la source de donnes")
End If

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

Revenir en arriere sur plusieurs actualisations

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

Microsoft Visual Basic . Net - Aot 2003 131/139


'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


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()

7.8 Liaison de donnes aux contrles


La liaison de donnes permet de lier un contrle de formulaire 1 ou plusieurs champs
dune source de donnes.

Deux types de liaison de donnes existent :

- Liaison de donnes simple : une seule proprit du contrle est lie une colonne de
la source de donnes (exemple : champs texte)

- Liaison de donnes complexe : plusieurs proprits du contrle sont lies une ou


plusieurs colonnes de la source de donnes (exemple : liste droulante)

De manire gnrale, le fonctionnement est le suivant

- Crer un objet connexion


- Crer un objet DataAdapter
- Crer lobjet DataSet et le remplir laide du DataAdapter
- Lier les proprits des contrles aux champs du DataSet
- Manipuler et naviguer entre les enregistrements avec lobjet BindingManagerBase

7.8.1 Objets utiliss

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.

Microsoft Visual Basic . Net - Aot 2003 132/139


Au niveau dun contrle, la collection DataBindings contient lensemble des liens
source de donnes vers proprit du contrle. Ainsi, lorsque vous souhaitez lier par le
code un contrle un champs, utilisez la mthode Add.

Le code suivant lie la proprit text du contrle textbox1 au champs nom de la


table Client du DataSet11 :

Me.TextBox4.DataBindings.Add("text", Me.DataSet11, "Client.nom")

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.

7.8.2 Liaison de donnes par Interface Graphique

Lenvironnement de dveloppement Visual Studio offre un ensemble doutils


permettant de gnrer la liaison entre contrle et champs de la source de donnes.

7.8.2.1 Dfinir la connexion

Pour dfinir la connexion, ouvrir lexplorateur de serveur, clic droit sur Connexions de
donnes , Ajouter une connexion :

Microsoft Visual Basic . Net - Aot 2003 133/139


Les paramtres de votre connexion dpendent de la source de donnes laquelle vous
souhaitez vous connecter. Pour plus de renseignement, consulter la partie Connexion de ce
chapitre.

7.8.2.2 Cration des objets connexion et DataAdapter

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.

7.8.2.3 Gnrer le groupe de donnes

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 :

Microsoft Visual Basic . Net - Aot 2003 134/139


Une fois les informations de la boite de dialogue paramtre, un nouvel objet DataSet
est cr :

7.8.2.4 Lier les contrles

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

Microsoft Visual Basic . Net - Aot 2003 135/139


7.8.2.5 Finalisation par le code

La dernire tape consiste placer dans lvnement Form_load le code permettant


dune part de remplir le DataSet gnr et dautre part rcuprer une rfrence lobjet
BindingManagerBase afin de naviguer dans la source de donnes :

Dim WithEvents bmb As BindingManagerBase

Private Sub Form_Load(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles MyBase.Load
'remplissage du dataset
Me.OleDbDataAdapter1.Fill(Me.DataSet11, "Client")
'recuperation de la rfrence au BindingManagerBase
bmb = Me.BindingContext(Me.DataSet11, "Client")
End Sub

7.8.3 Exemple dapplication

Le code suivant permet dimplmenter lapplication suivante :

Public Class Form3


Inherits System.Windows.Forms.Form

'declaration globale des objets


Public cn As New OleDb.OleDbConnection
Public WithEvents da As OleDb.OleDbDataAdapter
Public ds As New DataSet
Public bmb As BindingManagerBase

#Region " Code gnr par le Concepteur Windows Form "

Microsoft Visual Basic . Net - Aot 2003 136/139


Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
'initialisation des objets
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=E:\Support\vbnet\bd2.mdb;"
da = New OleDb.OleDbDataAdapter("select * from Client", cn)
da.Fill(ds, "Client")

'liaison des proprits des controles aux champs de la base


Me.lbl_num.DataBindings.Add("text", ds, "Client.num")
Me.txt_daten.DataBindings.Add("text", ds, "Client.daten")
Me.txt_nom.DataBindings.Add("text", ds, "Client.nom")
Me.txt_prenom.DataBindings.Add("text", ds, "Client.prenom")

bmb = Me.BindingContext(Me.ds, "Client")

End Sub

Private Sub btn_premier_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles btn_premier.Click
Me.bmb.Position = 0
End Sub

Private Sub btn_precedent_Click(ByVal sender As System.Object, ByVal e


As System.EventArgs) Handles btn_precedent.Click
Me.bmb.Position -= 1
End Sub

Private Sub btn_suivant_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles btn_suivant.Click
Me.bmb.Position += 1
End Sub

Private Sub btn_dernier_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles btn_dernier.Click
Me.bmb.Position = Me.bmb.Count - 1
End Sub

Private Sub btn_ajouter_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles btn_ajouter.Click
Me.bmb.AddNew()
End Sub

Private Sub btn_supprimer_Click(ByVal sender As System.Object, ByVal e


As System.EventArgs) Handles btn_supprimer.Click
If MsgBox("Supprimer ?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
Try
Me.bmb.RemoveAt(Me.bmb.Position)
MsgBox("Element supprim")
Catch ex As Exception
MsgBox("Erreur de suppression :" & vbCr & ex.Message)
End Try
End If
End Sub

Private Sub btn_valider_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles btn_valider.Click
Me.bmb.EndCurrentEdit()

Microsoft Visual Basic . Net - Aot 2003 137/139


End Sub

Private Sub btn_annuler_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles btn_annuler.Click
Me.bmb.CancelCurrentEdit()
End Sub
End Class

7.8.4 Formulaires de donnes Maitre / Dtail

Les formulaires de donnes permettent dafficher en mme temps le contenu de deux


tables lies par une relation : par exemple, si vous affichez une fiche client avec en dessous la
liste de toutes les commandes passes, la liste des commandes doit tre mise jour lors de la
slection dun autre client.

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.

Lexemple suivant reprend lapplication de gestion de client prcdente en ajoutant


laffichage des commandes pour le client affich :

Les seules modifications appliquer au code prcdent se situe dans le


Form_Load . Voici la version modifie :

'initialisation des objets


cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=E:\Support\vbnet\bd2.mdb;"
da = New OleDb.OleDbDataAdapter("select * from Client", cn)
da.FillSchema(ds, SchemaType.Source, "Client")
da.Fill(ds, "Client")
da2 = New OleDb.OleDbDataAdapter("select * from Commande", cn)
da2.FillSchema(ds, SchemaType.Source, "Commande")
da2.Fill(ds, "Commande")

Microsoft Visual Basic . Net - Aot 2003 138/139


'creation de la relation entre les tables commande et client
Dim r As New DataRelation("client_commande",
ds.Tables("Client").Columns("num"),
ds.Tables("Commande").Columns("cli_num"))
ds.Relations.Add(r)

'liaison des proprits des controles aux champs de la base


Me.lbl_num.DataBindings.Add("text", ds, "Client.num")
Me.txt_daten.DataBindings.Add("text", ds, "Client.daten")
Me.txt_nom.DataBindings.Add("text", ds, "Client.nom")
Me.txt_prenom.DataBindings.Add("text", ds, "Client.prenom")

'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")

Microsoft Visual Basic . Net - Aot 2003 139/139