Vous êtes sur la page 1sur 117

I.N.S.E.

A 2011 - 2012

Environnement de Dveloppement graphique


(Visual Basic)

Tlchargement cours, exemples, TD :


Adresse: http://ekhalid.magix.net/public/ M. Khalid EL HACHEMI

Sommaire

Introduction Notion dobjet Prsentation de Visual Basic Syntaxe de base Contrles et Proprits Evnements et Mthodes Fonctions prdfinies Fonctions et Procdures utilisateur Transmission des paramtres

Sommaire

Types de donnes utilisateur Manipulation des Dates Les botes de message et la fonction InputBox Formatage de donnes (Fonction Format) Contrles avancs (menus et menus contextuels les grilles) Gestion des erreur (Lobjet Err) Accs aux bases de donnes

Introduction

La programmation

Problme

Analyse

Algorithme

Traduction

Programme

Excution

Rsultat

Notion dobjet
Objet:Super-variable(groupe de variables de diffrents types) Les variables sont dsignes par un nom = Proprits Exemple 1 : lobjet Voiture Proprits: couleur, marque, modle, carburant, puissance fiscale, vitesse Maxi, prix. Syntaxe : objet proprit Voiture.couleur = rouge Voiture.marque = Peugeot p = Voiture.puissanceFiscale

Notion dobjet
Exemple 2 : lobjet Etudiant Proprits: nom, classe, adresse, situation familiale, ge, taille, budget, situation/justice. utilisation : Etudiant.ge = 23 Etudiant.Budget = Etudiant.Budget + 100 n = Etudiant.nom

Notion dobjet
Mthodes = fonctions de lobjet
Exemple : Voiture Acclrer, ralentir, avancer, reculer, sarrter. Syntaxe : objet Mthode() Voiture.acclrer() Voiture.reculer(10 m) Voiture.changerCouleur(bleu) Voiture.couleur = bleu

Notion dobjet
Exemple 2 : Mthode de lobjet : Etudiant Russir, Redoubler, Tricher, sabsenter, prparerExamen, AugmenterBudget. Syntaxe : objet Mthode() Etudiant.Russir() Etudiant.Sabsenter(2) Etudiant.AugmenterBudget(100) Etudiant.Budget = Etudiant.Budget + 100

Prsentation de visual basic

Sauvegarde: fichier projet .vbp Feuilles .frm

Prsentation de visual basic

Syntaxe de base

Variables:

Noms de variables:
1-Pas de longueur maximale 2-Commence par un caractre: 12xy 3-Pas despace: date_de_naissance date de naissance
4-Pas de sensibilit la casse (toto=Toto=ToTO)

Syntaxe de base
Variables: Types:

Boolean : True False Byte : 0 255 Integer : -32 768 32 767 Long : -2 2 milliards Single : rels avec 6 chiffres dcimaux (x=10/3; 3,333333) Double : rels avec 14 chiffres dcimaux String : chanes de caractres Date : Date et heure Variant : entier, rel, chane, boolen, Objet : objets VB (Contrles, feuilles,..)

Syntaxe de base
Dclaration des Variables: Dclaration optionnelle (! Mmoire vive)

Porte des Variables: 1-Niveau Procdure : Dim NomVariable As Type 2-Niveau Form : Dim NomVariable as Type 3-Niveau Projet (module) : Public NomVariable As Type

Exemple: Dim i As integer, Public b As boolen

Syntaxe de base

Variables indices (Tableaux):Dclaration obligatoire!!

1- Taille connue lavance : Dim MonTableau(n) As Integer


Dim MonTableau(11) As Integer (indices : de 0 11 => 12 lments)

2- Tableau dynamique : Dim MonTableau( ) As Integer 3- Mes propres indices : Dim MonTableau(2 to 5) As Integer 4- Taille fixe ultrieurement : Redim MonTableau(10) Prserver les valeurs existantes : Redim Preserve MonTableau(11)

Les Matrices (mmes rgles que les tableaux!)


Dim Mat(2,3) As Integer

Syntaxe de base

Oprateurs
Oprateurs numrique : + - * / Oprateurs boolens : And Or Xor Not Oprateur caractre : & (concatnation) \ : Division entire ^ : puissance Mod : reste de la division entire

Syntaxe de base

Lalternative (si..sinon..)

If (Conditions) Then Liste dinstructions End If


If (Conditions) Then Liste dinstructions Else Liste dinstructions End If

If (Conditions) Then Liste dinstructions Elseif (Conditions) Then Liste dinstructions Elseif (Conditions) Then Liste dinstructions

Else Liste dinstructions End If

Syntaxe de base

Select case :

Select case x case 0 instructions case 1 to 6

case else instructions End Select

Syntaxe de base

Les Boucles
For x = a to b Step c Liste dinstructions Next x Exemple : For i = 1 to 10 s=s+i Next i

Fin prmature (Exit For)

For i = 1 to 10
If t(i) = c then Trouv = true Exit For End if

Next i

Syntaxe de base

Les Boucles (test avant excution)


Do While (condition de continuit) instructions Loop

While (Conditions) Liste dinstructions Wend

Do Until (condition darrt) instructions Loop

Syntaxe de base (complment)

Les Boucles (test aps excution)


Do
instructions Loop While (condition de continuit)

Do instructions Loop Until (condition darrt)


Exemple

Contrles et Proprits
Le contrle Form
Proprits BackColor BorderStyle Caption ControlBox Enabled Signification Dfinit la couleur d' arrire plan Dfinit le style de la bordure d' un objet Dfinit le texte dans la barre de titre de la feuille Dtermine si les boutons du menu systme en haut droite dans la barre de titre de la feuille sont affichs. Dtermine si l' objet peut rpondre aux vnements, c'est dire s'il est utilisable.

Font ForeColor
Height Icon

Dfinit une police, un style et une taille de caractre Dfinit la couleur de premier plan
Dfinit la hauteur de l' objet partir du haut Indique l' icne qui est affiche quand la feuille est rduite

Contrles et Proprits
Le contrle Form
Proprits Signification

Exemple

Left
MaxButton MidiChild MinButton MouseIcon Picture tag Top Width

Indique la position horizontale gauche l' excution de la feuille


Dfinit si une feuille contient un bouton "Agrandissement" Dfinit si une feuille est considre comme feuille enfant MIDI Dfinit si une feuille contient un bouton "Rduction" Dfinit une icne de souris personnalise Dfinit un graphisme utiliser Permet de stocker des informations supplmentaires Dtermine la position verticale de l' objet excution Indique la largeur de l' objet

MousePointer Dfinit le type de pointeur de souris

Contrles et Proprits
Contrles visuels standards

Contrles et Proprits

Exemples :

textBox textBox (calculette) AutresExemples

Principales Proprits
Proprit
Name Caption BackColor ForeColor Height Width Top Left Alignement Enabled

Description
permet d'identifier un contrle dans le code. VB attribue des nom par dfaut exemple: Label1, Label2,, Text1,. Etiquette qui accompagne un objet (Label, CommandButton, OptionButton, CheckBox, Frame couleur de fond d'un contrle Remarque: pour dfinir une couleur on utilise la fonction RGB(rouge, vert, bleu) Couleur du text d'un contrle hauteur d'un contrle en twip (Twentieth of a Point) = 1cm/567 largeur distance en twip qui spare le bord sup du contrle du bord sup de la feuille - - - - - - - - - - - - - - - - - - - - - - - - - gauche du contrle du bord gauche - - - Alignement du text dans un contrle: 0 = gauche, 1 = droite, 2 = centre permet d'autoriser un contrle ragir ou non un vnement, ( = true -->ragit) Exemple

Principales Proprits
Proprit
Visible Text MaxLength PassWordChar Locked TabIndex AutoSize Value Min Max SmallChange LargeChange

Description
permet de rendre un contrle visible ou non dtermine le contenu d'une zone de texte pour : textBox et ComboBox dtermine la longuer maximale d'un texte dans un TextBox dtermine le caractre masque des caractres taps dans un TextBox :***** permet de verrouiller une zone de texte quand elle prend la valeur true dtermine l'ordre de tabulation d'un contrle dans la feuille (0, 1, 2,..) dtermine si un contle Label est automatiquement redimentionn pour afficher la totalit de son contenu dtermine la valeur d'un contrle (true, false | 0,1,2 ) Valeur minimale pour un une barre de dfilement Valeur maximale pour un une barre de dfilement dtermine le pas de deplacement de l'assenseur lorsqu'on clique sur les flches dtermine le pas de deplacement de l'assenseur lorsqu'on clique sur sur une zone de la barre

Principales Proprits
Proprit
FontSize FontBold FontName

Description
dtermine la taille des caractres : Label, TextBox, CommandButton, OptionButton, Frame, CheckBox
Caractres en gras si true nom de la police de caractres d'un text

UnderLine
FontStrike FontItalic

Soulignement si true
barr si true caractres en italique si true mode de selection de lments d'une liste ( 0 = 1 seul, 1 = plusieurs lments, 2 = plusieurs blocs d'lments) nombre total d'lmnts dans une liste nombre d'lments selectionns dans une liste position de l'lment slctionn ( -1 si aucun) renvoi true si un lment est slectionn ( List1.Selected(2) ) Contenu d'un lment de la liste spcifi par sa position (List1,List (10) ) parmet le remplissage d'lment avec tri automatique (ordre croissant) exemple

MultiSelect
ListCount SelCount ListIndex Selected List Sorted

Principales Proprits
Proprit
Rows Cols FixedRows FixedCols Row Col

Description
nombre total de lignes dans une grille nombre total de colonnes dans une grille nombre de lignes fixes dans une grille nombre de colonnes fixes dans une grille position de la ligne slectionne l'excution position de la colonne slectionne l'excution

TextMatrix
Interval

contenu d'une case de la grille (grille1.TextMatrix(num ligne, num colonne)


nombre de millisecondes entre les appels un vnement Timer du contrle Timer exemple

vnements & Mthodes associes


Evnement = Action produite par lutilisateur (click, survol .) ou par le systme (Timer) au moment de lexcution sur un contrle

Evnement 1

Procdure 1

Contrle

Evnement 2
Evnement i

Procduret 2
Procdure i

Syntaxe : Private Sub Objet_vnement([arguments]) exemple : Private Sub Command1_Click( ) Private Sub Check1_GotFocus(Index As Integer)

Principaux vnements
1- Click
Se produit lorsque lutilisateur appuie puis relche le bouton gauche de la souris (ou entre si le contrle a le focus) Private Sub Objet_Click( [Index As Integer]) 2- DblClick Se produit lorsque lutilisateur ralise un double click Private Sub Objet_DblClick( [Index As Integer]) 3- GotFocus Se produit lorsquun contrle reoit le focus (click ou tabulation ou par code : Objet.SetFocus) Private Sub Objet_GotFocus( [Index As Integer])

Principaux vnements
4- LostFocus >>>

Se produit lorsquun contrle perd le focus Private Sub Objet_LostFocus( [Index As Integer]) 5-KeyPress >>>

Se produit lorsque lutilisateur appuie et relche une touche du clavier


Private Sub Objet_KeyPress( [Index As Integer], KeyAscii As Integer) Codes : 0 : 48 | 9 : 57 | A : 65 | Z : 90 | a : 97 | z : 122 | entrer : 13 >>> 6- Change Se produit lorsque le contenu dun contrle change Private Sub Objet_Change( [Index as Integer])

Principaux vnements
7- Timer
Se produit chaque fois que la priode de temps fixe par la proprit interval dun contrle Timer sest coule Private Sub Objet_Timer( [Index As Integer]) 8- Autres vnements lis la souris MouseDown MouseUp MouseMove >>>

Mthodes associes
Mthode = sous programme propre au contrle qui, en sexcutant, permet deffectuer une action donne
Utilisation : Objet.Mthode [Liste darguments]

Quelques mthodes :
1- SetFocus : envoi le focus un contrle qui peut le recevoir (Enabled = True et Visible = True) appel : Objet.SetFocus 2- AddItem : ajoute un lment dans un contrle List ou ComboBox Appel : List1.addItem element 3- RemoveItem : supprime un lment dune liste, llment est spcifi par sa position Appel : List1.RemoveItem position

Mthodes associes
Quelques mthodes :
4- Clear : supprime tous les lment dune liste appel : List1.Clear 5- Move : deplace un contrle vers de nouvelles coordonnes (gauche, haut) Appel : Objet.Move 100, 500 >>> >>>

Fonctions Prdfinies
Fonction : sous programme qui reoit un ensemble de donnes
dentre, effectue un traitement et qui renvoie un et un seul rsultat Donnes dentre : Arguments Rsultat calcul : retourn par le nom de la fonction

Fonctions prdfinies : offertes par Visual Basic


(mathmatique, chanes, boolennes, conversion, fichiers )

1- Fonctions Numriques
Fonction Abs(x) Sqr(x) Fix(x) Int(x) Description Valeur absolue Racine carre Partie entire Plus grand entier < x Type rsultat numrique numrique entier entier exemple a=Abs(-3,4) 3,4 a=Sqrt(25) 5 a=Fix(3,62) 3 a=FIx(-3,21)-3 a=Int(3,62) 3 a=Int(-3,21)-4 a=Sgn(3) 1 a=Sgn(0) 0 a=Sgn(-3)-1 x=Rnd ?

Sgn(x) Rnd

Signe de x Nombre alatoire [0, 1[

entier rel

1- Fonctions Numriques
Gnrer un nombre entier alatoire entre a et b: X = Fix ( Rnd * (b a + 1) + a ) Changer la valeur de dpart Randomize Timer

>>>

Exercice : Loto

2- Fonctions chanes
Fonction Len(ch) Description Longueur de ch Type rsultat entier exemple a=Len(Insea) 5

Asc(ch)
Chr(x) Ucase(ch) Lcase(ch) Space(x)

Code Ascii du 1er caractre de ch


Caractre dont le code Ascii = x conversion en majuscules Conversion en miniscules Chane forme de x espaces

entier
string string string string

a=Asc(Insea) 73
a=Chr(103) g

a=Space(3)

2- Fonctions chanes
Fonction Ltrim(ch) Rtrim(ch) Trim(ch) Description limine les espace de gauche limine les espace de droite limine les espace de gauche et de droite Type rsultat string string string Ltrim( exemple salut) salut ) Insea

Rtrim(Insea

Trim ( Insea ) Insea

String(n,c)
Left(ch,n) Right(ch,n) Mid(ch,p,n)

Chane forme de n fois le caractre c


Chane forme de n caractres de gauche Chane forme de n caractres de gauche Chane forme de n caractres partir de p

string
string string string

String(3, A) AAA
Left(insea,2) in Right(insea,3) sea Mid(abcdef,4,2) de

3- Fonctions de conversion
Fonction Str(x) Val(ch) CSng(ch) DateValue(ch) Description Convertit x en chane Convertit ch en entier Convertit ch en rel Convertit ch en date Type rsultat string entier rel date exemple Str(123) 123 Val(123) 123 CSng(103,41) 103,41 CSng(2,5e3 ) 2500 DateValue(05/02/1976) 05/02/1976

CVDate(ch)
Date Time now

Convertit ch en moment (date et heure)


Date systme Heure systme Date et heure systme

date
date date date

CVDate(14/02/2006 3:40:00) 14/02/2006 3:40:00

Autres Fonctions de conversion


Les fonctions ci-dessous convertissent une expression en un type de donnes spcifique.

Syntaxe :
CBool( expression ) CByte( expression ) CDate( expression ) CDbl( expression ) CDec( expression ) CInt( expression ) CLng( expression ) CSng( expression ) CStr( expression ) CVar( expression )

Oprations sur les dates


Nombre de jours qui spare deux dates: Nbj = Date1 Date2

Dure en jours entre deux horaires H1 = TimeValue(11:00:00) H2 = TimeValue(17:00:00)

X = H2 H1 = 0,25
dterminer une nouvelle date partir dune ancienne date + n jours - Quelle date seront nous aprs 20 jours?

D2 = Date + 20

Fonctions Utilisateur
Syntaxe: [Public | Private] Function NomFonction([Liste arguments]) As Type

Instructions
NomFonction = expression End Function Exemple Function Racine (N As Double) As Double If N < 0 Then ' value l'argument. Exit Function ' Quitte pour revenir la ' procdure appelante. Else ' Renvoie la racine carre. Racine = Sqr(N) End If End Function

Procdures Utilisateur
Syntaxe: [Public | Private] Sub NomProcedure([Liste arguments])

Instructions
End Sub Exemple Private Sub Init( ) Nom.Text = "" Prnom.Text = "" End Sub

Appel Call Init >>> TP

Transmission des paramtres


Deux modes de transmission :
1- Par rfrence (ByRef) Mode par dfaut Private Sub Toto ( ByRef Y as Integer) Private Sub Toto ( Y as Integer) Private Function Carre(X as Double) Carre = X * X End Function 2- Par valeur ( ByVal ) Private Sub Dodo ( ByVal Y as Integer) >>>

Types dfinis par lutilisateur


Dclaration : (dans un module !!!)
[Private | Public] Type NomType
Var1 as type Var2 as type

..... End Type Utilisation : Public n As NomType n.Var1 = expression

Manipulation de Date
DateAdd(m,3,31-jan-95) DateDiff(d,01/01/2005,16/05/2006) DatePart(q,Date) Year(Date) Month(Date) MonthName(2, true) WeekDay(Date) weekdayName(3, false, VbSunday) Day(Date) Hour(Time) Minute(Time) Second(Time) >>>
Valeur Description

yyyy q m y d w

Anne Trimestre Mois Jour de l'anne Jour Jour de la semaine

ww
h n

Semaine
Heure Minute

Seconde

MsgBox - Instruction ou fonction ?


Cette instruction trs utilise dans Visual Basic permet de poser une question l' utilisateur au travers d' une bote de dialogue.

Syntaxe: Variable = MsgBox("Message", Type, "Titre de la fentre")


Variable : Variable de type Entier(Integer) recevant la valeur du bouton Message : Chane de caractres affiche comme message dans la bote de dialogue Type : Expression numrique qui contrle les boutons et les icnes afficher. Titre : Expression chane affiche dans la barre de titre de la bote de dialogue.

MsgBox (type)

Les constantes pour les boutons


Constante VB
Chiffre

Affichage le bouton OK uniquement les boutons Ok et Annuler les boutons Abandonner, Rpter et Ignorer les boutons Oui, Non et Annuler

vbOKOnly vbOKCancel vbCancelRetryIgnore vbYesNoCancel

0 1 2 3

vbYesNo vbRetryCancel

4 5

les boutons Oui et Non les boutons Rpter et Annuler

MsgBox (type)

Les constantes pour les icnes


Chiffre

Constante VB vbCritical vbQuestion

Affichage l'icne erreur critique l'icne question

16 32

vbExclamation
vbInformation

48
64

l'icne message d'avertissement


l'icne message dinformation

MsgBox "Erreur fatale, division par 0", vbCritical

MsgBox (type)

Les constantes pour le bouton par dfaut


Chiffre

Constante vbDefaultButton1 vbDefaultButton2 vbDefaultButton3

Description Le 1er bouton est le bouton par dfaut

10

256 Le 2me bouton est le bouton par dfaut 512 Le 3me bouton est le bouton par dfaut

MsgBox
Exemple

x = MsgBox("Echec de connexion!", vbDefaultButton2 + vbAbortRetryIgnore + _ vbInformation, "titre")

MsgBox (constantes renvoyes)

Les constantes renvoyes par MsgBox


Constante Chiffre vbOk vbCancel vbAbort vbRetry 1 2 3 4 OK Annuler Abandonner Ressayer Description

vbIgnore
vbYes vbNo

5
6 7

Ignorer
Oui Non

La fonction : InputBox

Syntaxe

InputBox (prompt [, title] [, default] [, xpos] [, ypos] [, helpfile, context])

X = ""

x = InputBox("quel est votre ge?", "Age", , 1000, 2000)

La fonction Format( )
Format(expression__formater, format_donn)
expression__formater :
1- chane de caractre 2- numrique 3- date

La fonction Format( )
1- chane de caractre
Caractre de Formatage @ & Description

Un caractre apparat la position @


Un caractre sil existe apparat la position &

<
>

Convertit en minuscules
Convertit en majuscules

Important !! : les @ et & sappliquent de droite gauche


Exemples: Format("022554466", "@@@-@@-@@-@@") 022-55-44-66 022-554-466 Format("022554466", "&&&&-&&&-&&&") Format("Intressant", ">") INTERESSANT

La fonction Format( )
1- numrique
Caractre de Formatage 0 # . , Exemples: Format (3456.199, "# # #,# # #.00") 3 456.20 Format(3456.199, "000,000.00") 003 456.20 Format(0.199, "# #.# #") .2 Format(0.199, "#0.00") 0.20 Description Un chiffre apparat la position 0 Un chiffre sil existe apparat la position # Point dcimal Sparateur de milliers

La fonction Format( )
1- Date
Caractre de Formatage d dd ddd Description Affiche le jour sans zro non significatif (1 31) Affiche le jour avec un zro non significatif (01 31) Affiche le jour en lettre sous sa forme abrge (lun-dim)

dddd
m mm mmm

Affiche le jour en lettre sous sa forme complte (lundi)


1-2-3 -..12 01-02-03 - 12 jan-fv- .. dc

mmmm
y yy yyyy

Janvier- .dcembre
Jour de lanne (1-366) Anne avec 2 chiffres (00-99) Anne avec 4 chiffres (100-9999)

Linstruction With
With Text1 .BackColor = vbRed .BorderStyle = 1 .Alignment = 2 With .Font .Bold = True .Size = 14 End With End With

Contrles avancs
Les menus :

Contrles avancs (les menus)

Application raliser

Contrles avancs
Les menus contextuels (PopupMenu) :
Un menu contextuel est un lment du menu mais invisible!

Dmonstration

Gestion des erreurs

Linstruction On Error

Exemple :
Public Sub Divise() On Error GoTo Oops Tata = 12 / 0 Exit Sub Oops: Msgbox("Diviser par zro, cest pas malin !") End Sub

Rcupration des erreurs

Lobjet Err

Cet objet, qui ntant pas un contrle, ne possde pas dexistence graphique, est utilis par toute application pour stocker ltat des Erreurs quelle a ventuellement provoques. On pourra, dans le code, avoir recours diffrentes proprits de lobjet Err : Number : dsigne le code de cette erreur, permettant didentifier son type Description : il s'agit d'un rapide bla-bla sur la nature de lerreur Source : qui indique lobjet lorigine de lerreur

Rcupration des erreurs

Lobjet Err

Exemple:
Public Sub Divise() On Error GoTo Oops Tata = 12 / 0 Exit Sub Oops: Msgbox "Erreur numro: "& Err.Number & Err.Description End Sub

Gestion des fichiers


Etape 1: Ouverture Le systme rserve une place en mmoire pour permettre laccs au fichier par lapplication. Elle est ralise par linstruction : Open (si le fichier nexiste pas, elle le cre !!) Etape 2: Traitement du fichier Lectures ou critures de donnes. Il est possible aussi de se positionner dans le fichier un endroit quelconque Etape 3: Fermeture du fichier Le systme libre la mmoire rserve. Elle est ralise par linstruction : Close

Gestion des fichiers

Accs squentiel (ouverture)

1- En lecture seule : Input 2- En criture : Output Attention ! : le fichier est rinitialis vide et son contenu prcdent est perdu 3- En Mise jour (ajout): Append Le contenu prcdent est conserv, et lcriture dans le fichier ajoute de nouveaux enregistrement Exemple: Open "Monfich.txt" For Input As #1 Open "Monfich.txt" For Append As #1

Gestion des fichiers

Accs squentiel
Open "Monfich.txt" For Input As #1 Open "Monfich.txt" For Append As #500

Exemple:

Remarque : De 1 255 : accs exclusif au fichier, les autres applications ne peuvent pas y accder tant quil est ouvert De 256 511 : fichier partag avec dautres applications

Gestion des fichiers

Accs squentiel
Open C:\contact.txt" For Input As #1 Line Input #1, ligne Open C:\contact.txt" For Append As #1 nom = txtnom prenom = txtprenom tel = txttel Print #1, nom & prenom & tel

Lecture :

Ecriture :

Important : un enregistrement est compos de plusieurs champs (variables String) de taille fixe : Dim nom As String * 20 Dim prenom As String * 20 Dim tel As String * 9

Gestion des fichiers

Lecture squentielle
Line Input #1, ligne

toto
fofo salah mohamed

tata
fifi salim mahmoud

111111111
222222222 333333333 444444444 >>>

EOF(1) = True

Gestion des fichiers

Accs Direct (Random)


Open "Monfich.txt" For Random As # 1 Len = tailleEnregistrement

Exemple : Open App.Path & "\test.txt" For Random As #1 Len = Len(contact) Lecture : Exemple : Get numFichier, numEnregistrement, variable Get 1, 3, contact (retourne le 3me enregistrement et laffecte la variable contact) Put numFichier, numEnregistrement, variable

Ecriture :

Exemple :

Put 1, 5, contact

Gestion des fichiers

Accs Direct (Random)

Remarque: La variable contact est une variable de type compos


Public Type enregistrement nom As String * 20 prenom As String * 20 tel As String * 9 End Type (dclaration dans un module !!)

Ensuite : quelque part dans le code Dim contact As enregistrement Open App.Path & "\test.txt" For Random As #1 Len = Len(contact) Get 1, 1, contact txtnom = Trim(contact.nom) txtprenom = Trim(contact.prenom) txttel = Trim(contact.tel) >>>

Accs aux bases de donnes


Le langage SQL
LDD : Langage de Dfinition de Donnes
cration, modification et suppression dobjets de base de donnes (Tables, champs, contraintes )

LMD : Langage de Manipulation de Donnes Extraction de donnes Regroupement et synthse de donnes Jointure des tables Modification de donnes (mise jour et suppression) LMD : Langage de Contrle de Donnes
Gestion des utilisateurs (connexionx, droits daccs, mots de passe)

Le langage SQL
1. Extraction de donnes
SELECT champ [, champ2] FROM table WHERE condition ORDER BY champ [ASC | DESC]

Utilisation de la clause SELECT


Exemple: 1SELECT CodeFact, DateFact, Montant * 1.2 FROM Facture ORDER BY DateFact SELECT * FROM Facture

2-

Le langage SQL
Utilisation de la clause WHERE
Exemple: SELECT CodeFact, DateFact, Montant * 1.2 FROM Facture WHERE Montant > 10 000 And DateFact < # 31/12/2005 # ORDER BY DateFact

Oprateurs:

= < > <= >= And Or Xor Not IN Like

<>

Between a And b

Le langage SQL
Utilisation de la clause WHERE
Exemple: SELECT Personnes.Nom, Personnes.Prnom FROM Personnes WHERE Personnes.Nom Like "c*"

* : designe 0 ou plusieurs caractres


? : Dsigne un caractre Question : Personnes dont le nom est compos de 5 caractre ? SELECT Personnes.Nom, Personnes.Prnom FROM Personnes WHERE Personnes.Nom Like "?????" Au moins 5 caractre : Like "?????*" Contient la lettre b : Like "*b*" Not Like "*b*" Ne contient pas la lettre b :

Le langage SQL
limination des doublons : (DISTINCT)
SELECT Distinct Type FROM Produit

Limitation de nombre de lignes renvoyes par une requte :


SELECT TOP 10 nomProduit FROM Produit Question : nom des 3 tudiants les mieux classs ainsi que leurs moyennes? SELECT TOP 3 nom, moyenne FROM Resultat ORDER BY moyenne DESC

Question : nom et moyenne du dernier de la classe ? SELECT TOP 1 nom, moyenne FROM Resultat ORDER BY moyenne

Le langage SQL
2. Regroupement et synthse de donnes
Fonctions dagrgation : SUM : somme AVG : moyenne MIN : minimum Max : maximum COUNT : nombre de lignes SELECT MAX(moyenne) FROM Resultat SELECT COUNT(*) FROM Employe SELECT SUM(Salaire) FROM Employe ( ou MAX(DISTINCT(moyenne) ) )

(nombre demploys dans lentreprise)

(masse salariale)

Le langage SQL
- Regroupement avec GROUP BY
SELECT Type, MAX(Prix), MIN(Prix) FROM Produits GROUP BY Type ORDER BY Type Important : tout champ qui nest pas contenu dans une fonction dagrgation doit figurer dans la clause GROUP BY Question : types de produits dont le prix maximum dpasse 1000 DH? SELECT Type, MAX(Prix) FROM Produits GROUP BY Type HAVING MAX(Prix) > 1000 Important : la clause WHERE exprime des conditions sur les champs (application avant regroupement) alors que la clause HAVING exprime des condition sur le groupe (application aprs regroupement)

3. Jointure des tables: jointures internes


Pere
numPere 1 2 Nom prenom

Fils
numPere 1 1 3 prenom Slimane salima Laila

Salmi Mohamed Bahi Rida

3
4

Alami Khalil
Rizki Rachid Nom Salmi Salmi Alami prenom Slimane salima Laila

SELECT Pere.Nom, Fils.Prenom FROM Pere Join Fils On Pere.numPere = Fils.numPere

La requte retourne uniquement les enregistrements qui respectent la condition, on parle de Jointure interne

3. Jointure des tables: jointures externes


Question : Liste de tous les pres (nom et prenom) ainsi que le prnom du fils pour ceux qui en ont
SELECT p.Nom, p.Prenom, f.Prenom As "Prenom fils" FROM Pere p Left Join Fils f On p.numPere = f.numPere
Nom Salmi Salmi Bahi Alami prenom Prenom fils

Mohamed Slimane Mohamed salima Rida Khalil NULL Laila

Rizki

Rachid

NULL

1- La requte retourne tous les enregistrements de la table de gauche ainsi que les enregistrements de la table de droite qui respectent la condition

2- Lusage des alias (p, f) permet de rduire le code et le rendre plus lisible. Dans le cas o les tables jointes possdent des noms de champs identiques, cette recommandation devient obligatoire

3. Jointure des tables: jointures externes


Remarque : On dispose galement de jointure externes droite: Right Join. Le principe est le mme, il suffit dinverser lordre des tables
SELECT p.Nom, p.Prenom, f.Prenom FROM Fils f Right Join Pere p On p.numPere = f.numPere
Nom Salmi Salmi Bahi Alami prenom Prenom fils

Mohamed Slimane Mohamed salima Rida Khalil NULL Laila

Rizki

Rachid

NULL

Question: Rsultats de la requte suivante ?


Nom SELECT p.Nom, p.Prenom, f.Prenom FROM Fils f Left Join Pere p On p.numPere = f.numPere Salmi Salmi Alami prenom Prenom fils

Mohamed Slimane Mohamed salima Khalil Laila

3. Jointure des tables: jointures externes


Employe
nume
1 2 3 4

Service
nums 10 20 30 nomService Rehcerche Vente Achat ville Rabat Knitra Fs

Nom
Salmi Bahi Alami Rafik

nums
20 10 20

Question : noms de tous les employs aisni que le nom du service o ils travaillent ?
Nom nomService Vente Recherche Vente

SELECT e.Nom, s.nomService FROM Empoye e Left Join Service s On e.nums = s.nums

Salmi Bahi Alami

Rafik

3. Jointure des tables: jointures externes


Employe
nume
1 2 3 4

Service
nums 10 20 30 nomService Rehcerche Vente Achat ville Rabat Knitra Fs

Nom
Salmi Bahi Alami Rafik

nums
20 10 20

Question : nombre demploys par service ?


nomService nbrEmploye

SELECT s.nomService, COUNT(e.nume) As "nbrEmploye" FROM Service s Left Join Empoye e On e.nums = s.nums GROUP BY s.nomService

Recherche Vente Achat

1 2 0

4. Ajout de donnes: INSERT [ INTO ]


INSERT Etudiant (nom, prenom, note) VALUES ("Carlos", "Santana", 14) INSERT Etudiant VALUES ( Liste valeurs dans lordre des champs de la table)

5. Modification de donnes: UPDATE


UPDATE Etudiant SET note = note+2 WHERE Classe = 3 And Option = "Actuariat" Remarque : La clause WHERE est utilise de la mme manire quavec la clause SELECT

6. Suppression de donnes: DELETE


Supprimer ltudiant Carlos DELETE Etudiant WHERE nom = "Carlos" Vider la table Etudiant : DELETE Etudiant

Accs aux bases de donnes

Le contrle Data

Utilisation du contrle Data


1-Initialiser les principales proprits DatabaseName = C:\magasin.mdb RecordSource = Nom Table (ou requte accss) 2- Lier les diffrentes zones de texte au contrle Data DataSource = nom du contrle Data 3- Lier la zone de texte un champ de la table DataField = nom du champ

Utilisation du contrle Data


Les contrles pouvant tre lis un contrle Data:
Label (tiquette) TextBox (chamm de saisie) CheckBox (case cocher) PictureBox (zone dimage) ListBox (liste) ComboBox (liste combine)

Il est galement possible dutiliser dautres contrles : DBCombo (liste combine lie) DBList (liste lie) DBGrid (grille lie)

Utilisation du contrle Data


Remarque : pour travailler avec les listes, les listes combines et les grilles, il faut
les ajouter la bote outils : Click bouton droit dans la bote outils , puis Composant (ou bien : Menu Projet Composants, Ou utiliser directement le raccourcis clavier : Ctrl + t )

Utilisation du contrle Data


Cocher Microsoft Data Bound Grid et List

Utilisation du contrle Data


La proprit Recordset : Cre automatiquement
Partir de la prorit RecordSource (table ou requte), elle donne accs aux enregistrements a- Ajout dun nouvel enregistrement: 1.Utiliser la mthode AddNew ( Data1.Recordset.AddNew ) 2.Modifier le contenu des contrles lies 3.Appeler la mthode Update pour enregistrer leur contenu
( Data1.Recordset.Update )

Utilisation du contrle Data


b- Modification de lenregistrement courant : 1.Modifier le contenu des contrles lies (enregistrement courant) 2.Appeler la mthode Update c- Suppression de lenregistrement courant : Appeler la mthode Delete du Recordset :
Data1.Recordset.Delete Data1.Recordset.MoveNext
pour se placer sur lenregistrement suivant
Les proprits BOF et EOF du Recordset peuvent tre utilises pour savoir si la position courante se trouve au dbut ou la fin du Recordset Exemple >>>

Utilisation du contrle Data


Les contrles lis Complexes :
Affichage du contenu de toute une table (ou requte) avec le contrle DBGrid :

Utilisation du contrle Data


Le contrle DBGrid :
Pour les diffrentes manipulations denregistrements, il suffit de mettre True les proprits correspondantes

a- Ajout dun nouvel enregistrement : AllowAddNew = True (saisie dans la dernire ligne)
b- Modification : AllowUpdate = True c- Suppression : (slection dune ligne puis touche suppr) AllowDelete = True Exemple >>>

Utilisation du contrle Data


Les contrles lis DBList et DBCombo prsentent des proprits complmentaires permettant un fonctionnement plus complexe: ils autorisent la visualisation simultane de toutes les lignes dun champ du Recordset Proprits :
RowSource : nom du contrle Data ListField : nom du champ de la table affich dans la liste Exemple >>>

Utilisation du contrle Data


Aide la saisie :

Saisie trs difficile

Utilisation du contrle Data


Aide la saisie: Ralisation
1- Ajouter un 2eme contrle Data name = dataSencondaire DatabaseName = Entreprise (la mme base) RecordSource = Service (table lie) 2- Remplacer le TextBox par un ComboBox RowSource = dataSecondaire (source de donnes du contrle) ListField = nomService (champ qui contient le nom du service) DataSource = Data1 (contrle qui est mis jour (table employ) DataField = numService (champ devant tre mis jour) BoundColumn = numService (lien entre les deux tables)

Exemple >>>

Utilisation du contrle Data


Les filtres (listes dpendantes)
Exemple >>>
Le principe est de changer la proprit RecordSource en cours dexcution, actualiser le contrle Data en appelant la mthode Refresh et actualiser le 2me DBCombo en appelant la mme mthode Private Sub DBCombo1_Click(Area As Integer) Construction de la requte requete = "Select * FROM Ville WHERE numPays = (" requete = requete + "SELECT numPays FROM Pays WHERE nomPays = '" & DBCombo1.Text & "')" Data2.RecordSource = requete Data2.Refresh DBCombo2.Refresh End Sub

Accs aux donnes avec ADO


Pour pouvoir utiliser ADO dans un projet Visual Basic vous devez rajouter la bibliothque Microsoft AtiveX Data Objects 2.0 Library
menu Projets Rfrences, puis cocher Microsoft AtiveX Data Objects 2.0 Library ADO propose les objets suivants : Recordset : jeu d'enregistrements retourns lors de l'excution d'un SELECT Connection : connexion une source de donnes (fichier texte, fichier Excel, ou une base de donnes) Error : ensemble des erreurs retournes par le SGBD Command : permet d'excuter des requtes Parameter : permet de dfinir un paramtre d'une requte

Accs aux donnes avec ADO


1- Cration dun DSN (Data Source Name)
- Dans le panneau de configuration de windows, slectionnez outils dadministration, puis Sources de donnes (ODBC) - Dans ladministrateur de source de donnes ODBC, slectionnez Sources de donnes utilisateur (le 1er onglet) - Cliquez sur le bouton ajouter, puis slectionner Microsoft Access Driver(*.mdb) et cliquer sur terminer - La bote de dialogue installation ODBC Microsoft Access est affiche. Entrez le nom de la source de donnes : Gestion entreprise - Cliquez sur le bouton slectionner et slectionnez le fichier de votre base de donnes, le DSN Gestion entreprise est ajout la liste, cliquez ensuite sur ok (Dmonstration )

Accs aux donnes avec ADO


Lobjet Recordset
La proprit Fields tant la proprit par dfaut, les lignes suivantes sont quivalentes: rs.Fields(nomService) rs.Fields(1) le 1er champ est dindice 0 rs (nomService) rs.Fields(1) rs![nomService]
Exemple>>>

Accs aux donnes avec ADO


Lobjet Recordset
Lexemple prcdent nest pas optimis. En ffet, une connexion la base de donnes est tablie chaque fois quune requte est gnre : lors du remplissage initial de la liste, puis chaque slection dun lment de la liste. Problme : temps dtablissement dune connexion peut devenir long, surtout si la base se trouve sur une autre machine Solution : Etablir une connexion permanente indpendamment des requtes en utilisant lobjet Connection

Accs aux donnes avec ADO


Lobjet Connection : (dclaration dans le volet gnral !!)
Private cn As Connection Private Sub Form_Load() 'cration d'une connexion Set cn = New Connection 'etablessement de la connexion cn.Open "DSN=gestion entreprise" 'cration du Recordset Dim rs As New Recordset 'lien avec la connexion cn Set rs.ActiveConnection = cn ..

Exemple>>>

Accs aux donnes avec ADO


A- Ajout dun nouvel enregistrement :
dim rs As New ADODB.Recordset rs.Open Select * from Service ,DSN=gestion entreprise,_ adOpenDynamic, adLockOptimistic rs.AddNew rs![numService] = 50 rs![nomService] = Ressources humaine rs.Update Remarque : adOpenDynamic cest pour permettre lcriture sur la base (le mode par dfaut tant la lecture seule)

Accs aux donnes avec ADO


B- Modification de tous les enregistrements :
dim rs As New ADODB.Recordset rs.Open Select * from Article ,DSN=gestion entreprise,_ adOpenDynamic, adLockOptimistic dim stock as integer Do While Not rs.EOF stock = rs![stock] rs![stock] = stock 10 rs.Update rs.MoveNext Loop

Accs aux donnes avec ADO


C- Suppression de tous les enregistrements :
dim rs As New ADODB.Recordset rs.Open Select * from Article ,DSN=gestion entreprise,_ adOpenDynamic, adLockOptimistic Do Until rs.EOF rs.Delete rs.MoveNext Loop Remarque : pour supprimer un enregistrement particulier il faut ajouter un filtre dans la requte (clause WHERE)

Accs aux donnes avec ADO


Le contrle ADODC (ADO DataControl) :
Le contrle ADODC est semblable au contrle Data prsent prcdemment Pour lajouter au projet, il faut ajouter le composant : Microsoft ADO Data Control 6.0 (OLEDB)

Accs aux donnes avec ADO


Le contrle ADODC :
Initialisation : ADODC1.ConnectionString = DSN=gestion entreprise

Accs aux donnes avec ADO


Utilisation de lAssistant Feuille de donnes

Menu fichier,

puis nouvelle feuille.


Choisissez Assistant Feuille de donnes

Cliquez sur Ouvrir

Accs aux donnes avec ADO


Utilisation de lAssistant Feuille de donnes

Accs aux donnes avec ADO


Utilisation de lAssistant Feuille de donnes

Accs aux donnes avec ADO


Utilisation de lAssistant Feuille de donnes

Accs aux donnes avec ADO


Utilisation de lAssistant Feuille de donnes

Accs aux donnes avec ADO


Utilisation de lAssistant Feuille de donnes

Accs aux donnes avec ADO


Utilisation de lAssistant Feuille de donnes

Rsultat :

Environnement de Dveloppement graphique


(Visual Basic)

FIN
Tlchargement cours + exemples + TP : Adresse: http://ekhalid.magix.net/public