Vous êtes sur la page 1sur 27

www.al-ma3rifa.

com

Cours sur la liaison VB6 avec une base de donne Access 2003 et les manipulations classiques sur une table.

VISUAL BASIC 6 ET LES BASES DE DONNES ACCESS

Une base de donnes ?


Certes, son nom fait peur, mais en ralit ce

nest rien quun maudit tableau o sont enregistres des information.


champs id Entre 1 1 nom Raad mail raad@rd.com tel -212221122

Entre 2
Entre 3

2
3

Pedro
rich

pedrovet@rm.com
rich@rich.com

-213221122
-214221122

Toujours
Une base de donnes ne se compose en fait

pas forcement dun seul tableau mais de plusieurs, dsormais on appellera ce tableau une table ;-) Ok?
i d i d i d 1 2 3 nom 1 Raad 2 Pedro 3 rich nom 1 nom Raad mail mail tel raad@rd.com tel -212221122

tel Raad2 mail Pedro raad@rd.com -212221122 -213221122 pedrovet@rm.com raad@rd.com -212221122 Pedro pedrovet@rm.com -213221122 -214221122 3 rich rich@rich.com pedrovet@rm.com -213221122 -214221122 rich rich@rich.com rich@rich.com -214221122

Crer une table


Pour ce faire on se sert dun logiciel, Access
1- dmarrer accs puis cliquer sur base de donne vide 2-cliquer sur crer pour crer la BD.

Dans cette fentre donner un nom votre table

3- enregistrer

1- ici on cre les champs de notre table

2- ici on indique le type des donnes de chaque champ (numro, text, date)

id 1 2

nom Raad Pedro

mail raad@rd.com pedrovet@rm.com

tel -212221122 -213221122

rich

rich@rich.com

-214221122

1 2

Et cest fini..
Le rle dACCESS est termin et ce qui reste retenir:

Bien sur rien ne nous empche de revenir de temps autre pour jeter un coup dil sur notre BD sur Access ;)

la table est prte


Maintenant jai cr ma table, elle contient le

champ id pour numroter les entres, le champ nom pour enregistrer les noms , le champs mail pour les email et le dernier cest tel pour le numro de tlphone.
Vous pouvez deviner que le programme pour lequel est destin cette table enregistre des noms mails et numros de tel de mes amis par exemple, ;)

Lapplication?
Alors linterface de mon application VB6 sera

comme a:

La liaison..

La liaison..
Pour faire la liaison il faut dabord que le VB comprend ce que veut dire une base De donnes. Pour ce faire il faut activer une rfrence (ensemble de

dans le menu Projet >> rfrences


dfinitions pour le VB)

Microsoft DAO Object Library

Cest une rfrence qui dfinie des Objet supplmentaires pour le VB.
Dans notre cas les objets ajouts (on peut les appeler variables) Sont la base de donne et autre Chose que je ne vais pas vous Dire toute suite..;-) Une fois ajoute, le VB comprend Ce que veut dire base de donne.

Ce nest pas tous


Maintenant pour que le VB donne des ordres la table il faut quil les crive avec un Autre langage, le SQL (Structured Query Langage) En fait ce nest quun ensemble dinstruction pour faire les 4 oprations de base sur une Table: Ecrire sur une table Mettre jour une entre Supprimer de la table Lire partir dune table Une ligne crite avec le SQL est dite : Requte.

SQL

(langage dinterrogation des bases de donnes) ma table est nomme : contact

Pour ecrire dans une table


INSERT INTO contact (id ,nom , mail , tel) values (1,mohamed , m.ron@hotmail.com, 012211234);

On indique les champs quon dsir crire

Puis leurs valeurs dans le mme ordre

INSERT INTO contact (nom , mail , tel) values (mohamed , m.ron@hotmail.com, 012211234);

id 1

nom mohamed

mail m.ron@hotmail.com

tel 012211234

Pour auto incrementer l id

SQL

(langage dinterrogation des bases de donnes) ma table est nomme : contact

Pour mettre jour une table


UPDATE contact SET nom=mehdi , tel=0451252312 where id=1

On indique les champs quon dsir modifier avec leurs nouvelles valeurs spar de virgules

id 1

nom mehdi

mail m.ron@hotmail.com

tel 0451252312

SQL

(langage dinterrogation des bases de donnes) ma table est nomme : contact

Pour supprimer une entre de la table


DELETE FROM contact WERE id=1

On indique un champ correspondant lentre quon veut supprimer.

id 1

nom mehdi

mail m.ron@hotmail.com

tel 0451252312

SQL

(langage dinterrogation des bases de donnes) ma table est nomme : contact

Pour lire partir de la table


Attendez, l cest un peut diffrent, vous devinez dj? Nest ce pas? Tous les requtes qu'on a vu envoie des ordres la base de donnes (crire, mettre jour, supprimer) ce sont des requtes sens unique. Par contre la requte de lecture, elle donne un ordre puis il faut quon rcupre le rsultat de la requte pour lutiliser dans lapplication.

Le RecordSet,
Cest un objet spcial que VB le reconnais

grce la rfrence Microsoft DAO 3.6 Object Library


On le dclare comme une variable:
Dim rep As RecordSet
Pour lire toutes les entre dune table, dans ce cas le RecordSet contiendra toute la table Le RecordSet contiendra seuls les entres o lid est gal 1

SQL:

lecture

* Veut dire tous les champs

SELECT * FROM contact

SELECT * FROM contact WHERE id=1

On code..
Premirement on dclare nos objets:
La base de donnes

Le Recordset Dim base As Database Dim rep As RecordSet

On dclare une valeur chaine pour quelle

contiendra la requte.
Dim ordre As String

Les 4 rgles dor


Pour manipuler une table on procde sur 4

etapes: 1. Ouverture de la base


Set base = OpenDatabase("E:\red.mdb")
Rgl lobjet base Fonction pour ouvrir la base

2. prparation de la requte:
m.ron@hotmail.com, 012211234);

Chemin de la base

ordre= INSERT INTO contact (id , nom , mail , tel) values (1,mohamed ,

3. excuter

(et traiter) la requte:

base.execute ordre

4. on ferme la porte la base


base.Close

Application >>>> Table


txt1 txt2
Dim base As Database Dim rep As Recordset Dim order As String

txt3 txt4

Private Sub Command1_Click()

Set base = OpenDatabase("E:\red.mdb") order= "insert into contact values (" & txt1.Text & ",' " & txt2.Text & " ',' " & txt3.Text & " '," & txt4.Text & ");" base.Execute order base.Close End sub

Cest la mme dmarche pour les autres oprations Sauf la lecture ;-)

La lecture
1 .ouverture de la base

Set base = OpenDatabase("E:\red.mdb")

2.prparation de la requte:
Ordre=SELECT * FROM contact WHERE id=1;

3. excuter la requte de faon rcuprer le rsultat par

le Recordset
Set rep=base.openrecordset(ordre)

on a rcuprer la ligne o lid =1, rep est devenu une

variable tableau qui contient x cases (x=nbr de champs)


rep(0) contient 1 rep(1) contient mehdi rep(2) contient m.ron@hotmail.com rep(3) contient 0451252312
id 1 nom mehdi mail m.ron@hotmail.com tel 0451252312

Le Recordset est plus fort


Maintenant que disiez-vous jai utilis cette

requete:

Ordre=SELECT * FROM contact; Set rep=base.openrecordset(ordre)

rep contient toute la table :-0 Et oui, et si on demande rep(0) rep(1) rep(2) rep(3) ??? a va nous donner juste la premire ligne (entre) Et si on veut passer la deuxime? Troisime? rappelez-vous, rep est un objet (comme forme, zone de texte, timer) auquel on

peut appliquer des actions (ex action: Form.load )

Des Actions font bouger le recordset

Si on applique laction Movenext


Rep.Movenext

Le recordset passe la ligne suivante, et si on

redemende les rep(0) rep(1) rep(2) rep(3) , il va

nous donner celles de la ligne suivante.

Les autres actions:


Mouvelast : bouger la dernire ligne Mouvefirst : premire MovePrevious : precedante

La proprit EOF
Cest une simple proprit ,de lobjet recordset

(rep) ,qui vaut (true) lorsquon dpasse la dernire ligne et false si on a encore des ligne aprs. Vous allez comprendre toute suite:
While rep.EOF = False msgbox rep(1) rep.mouvenext wend Tant quon na pas arriver la dernire ligne affiche moi le rep(1) puis passe la ligne suivante

Et cest fini
Vous avez maintenant les moyens

lmentaires pour dvelopper une application puissante qui rpond parfaitement vos besoin.

Si vous avez tous compris bravo, sinon sachez que cest ma faute car je nai pas bien expliqu raad

ralis Par : raad