Vous êtes sur la page 1sur 8

République Algérienne Démocratique et Populaire

Ministre de la formation et de l’Enseignement Professionnels


Centre de Formation Professionnelle et d’Apprentissage
Zouaie Mebarek *Sédrata* Souk Ahras

Date :
Spécialité : TS en Informatique*BASES DE DONNEES* Semestre : S3
Module : Implémenter une BDD en monoposte N° de la
Séance : 16

Thème : Liaison entre deux tables Temps


alloué : 04 H

Objectif opérationnel

A la fin de la séance, le stagiaire sera capable de lier deux tables dans la base de données à
partir d’une méthode illustrée par des images en Delphi 7 en une heure et sans faute.

Moyens Didactiques :
L’enseignant Le stagiaire
*Tableau magique *Cahier
*Marqueurs *stylos
*Brosse *Créant
* le Cours, plan de leçon et fiche technique * PC
*PC

Aides Pédagogiques:
* CD Delphi 7.
*Darashow pour la démonstration des étapes de liaison de deux tables dans une BDD.

Le lien du site web: http://bardou.pagesperso-orange.fr/michel/delphi.htm


L’auteur: MC BELAID.
Numéro des pages: onglet de Delphi.

Les phases principales de déroulement du cours


Page 1 sur 8
Remarqu Le stagiaire L’enseignant
es
* Rappel.
*Création du centre d’intérêt
*il est préférable que - Si on veut filtrer les stagiaires dans la liste comment le fait ?
les stagiaires
*L’objectif opérationnel.
découvrent le titre de la
leçon. A la fin de la séance, le stagiaire sera capable de chercher …
*Mise en difficulté°1«1. Utilisation d'un DataModule»
 Comment utiliser un DataModule dans une base de données ?
*Les réponses
possibles : *Exposition, explication et démonstration :
*insertion des En suivant les étapes : fichiers / nouveaux puis onglet
composants d’un BDD,
… Nouveaux : choisir Module de données
*Evaluation partielle :
* attention et
concentration. Question Ouverte : -refaire l’exemple.
*Mise en difficulté°2«Lier deux tables »
 Comment lier deux tables dans une base de données ?
*Exposition, explication et démonstration :
*Les réponses
possibles : Prenant l’exemple d’une BDD bibliothèque et appliquant les
Correcte
étapes de liaison.
*Evaluation partielle :
Question Ouverte : -refaire l’exemple sur PC.
*Les réponses *Evaluation finale :
possibles :
Evaluer le stagiaire par un TP qui illustre les exemples du cours
Correcte
et d’autres sur la liaison de deux tables dans une base de
données.
Solution :
*Les réponses
La solution des questions sera selon le cours présenté.
possibles :
* dans le cours.

Contenu du cours

Page 2 sur 8
1. Utilisation d'un DataModule

Delphi nous permet, si on le désire, de regrouper tous ces composants non visuels non pas sur une
form mais sur un DataModule. A l'image d'une Form, un DataModule permet d'y déposer des
composants.

Le DataModule, contrairement à une Form n'est pas visuel. On ne peut donc y déposer des
composants visuels. Comme pour une Form, A chaque DataModule correspond une Unit.

Concrètement, allez dans fichiers / nouveaux puis onglet Nouveaux : choisir Module de données

Sur ce DataModule, vous pouvez y placer des DataSource, Table etc...

Attention, il faut se rappeler que ce DataModule correspond à une Unit (par exemple Unit2).
Pour pouvoir utiliser les composants qui y sont placés à partir d'une autre Unit, par exemple un DBGrid
placé sur la form1, il faut placer Unit2 dans la clause Uses de l'Unit comportant le DBGrid.

uses
Windows, ... Forms, Dialogs, Unit2;

2. Lier deux tables (Relation maître-détail ou relation un-à-plusieurs entre deux tables)

Que veut-on faire ?

Supposez le cas suivant :

Vous êtes bibliothécaire et vous devez créer un programme qui gère les prêts de vos livres.

Vous avez besoin de connaître en permanence :

Page 3 sur 8
 Vos clients (coordonnés, n° de leur carte d'adhérent ...). Ces renseignements figureront dans une
table.
 Les mouvements de vos livres (qui les a emprunté, quand, sont-ils rendus ...). Ces mouvements
feront l'objet d'une autre table.

Vous souhaitez, lorsque vous consultez les mouvements de vos livres, voir en même temps les
coordonnés de l'emprunteur. Vous voulez donc qu'à chaque fois que vous vous placez sur un
enregistrement de la table contenant un mouvement, la table contenant les clients se place
automatiquement sur l'enregistrement correspondant au client correspondant.
C'est une relation un-à-plusieurs car à un client ne correspondra qu'un seul enregistrement de la table
des clients (c'est en fait un champ indexé). Par contre, il peut y avoir plusieurs enregistrements de la table
des mouvements qui contiennent le même client dans le champ correspondant.

2.1. Création des 2 tables :

Pour les créer, se référer en créant l'alias TEST.

 Une pour vos clients que l'on nommera Annuaire.

Bien mettre les champs NumClient et Nom en Index

 Une qui stockera les mouvements et que l'on nommera Mouvements

2.2. Utilisation d'un DataModule

Pour cet exemple, bien que ce ne soit pas indispensable, nous allons utiliser un DataModule. Placez le.

Page 4 sur 8
2.3. Connexions à nos tables

Sur ce DataModule, placez 2 composants Table et 2 composants DataSource

Entrez le nom de l'Alias de notre base de donné dans le champ DataBaseName de Table1 et Table2

Faisons pointer Table1 vers la table Annuaire.DB modifiant sa propriété TableName :

Faisons de même pour Table2 mais en le faisant pointer vers Mouvements.DB :

Reste à "brancher" nos DataSources vers leur table respective.

Affecter Table1 à la propriété DataSet de DataSource1

et Table2 à la propriété DataSet de DataSource2

Il faut maintenant placer des composants qui nous permettrons de visualiser, modifier ces tables.

Dans la Form1, placez deux DBGrid.

Page 5 sur 8
Nous allons utiliser leur propriété DataSource pour "brancher" chaque DBGrid vers leur
DataSource respectif. Ils pourront ainsi afficher respectivement les contenus de la Table 1 et de la
Table2.

Observez la propriété DataSource de l'un deux, Delphi ne nous en propose aucun. Normal, nos
DataSources sont placés à l'extérieur de notre Form1.
Dans le uses de l'Unit1, il faut ajouter l’Unit2

uses
Windows, ... Forms, Dialogs, Unit2;

Affecter DataSource1 à la propriété DataSource du DBGrid1

et DataSource2 à la propriété DataSource du DBGrid2.

Dès maintenant, mettez à true la propriété Active de Table1 et Table2. Pour la suite de l'exemple,
faite attention à ce que les n° des clients rentrés dans les mouvements correspondent à un NumClient
existant de l'annuaire.

2.4. Liaison des deux tables

Affectons DataSource2 à la propriété MasterSource de Table1 (ainsi, Table1 est lié à DataSource2
qui lui-même est lié à Table2).
Il nous reste à désigner quel champ de Table1 servira de lien avec quel champ de Table2.

Pour cela, cliquez sur les ... à droite de la propriété MasterFields de notre Table1

Delphi nous affiche à gauche les champs indexé de Table1 et à droite, tous les champs de Table2.

Cliquez sur le champ NumClient de la colonne Champs Détail et sur NumClient de la colonne
Champs maître, puis sur le bouton Ajouter.
Page 6 sur 8
Le lien est fait : un enregistrement de Table2 sera lié à un enregistrement de Table1 : celui qui a le
même n° de client.

A noter que cela a changé les propriétés MasterFields et IndexFieldNames de Table1. MasterFields
a pris le nom du champ de Table2 (Client) qui doit être lié avec le champ de Table1 désigné par la
valeur d'IndexFieldNames (NumClient).

2.5. Test du programme

Vérifiez que les propriétés Active de Table1 et Table2 sont à True. Lancez le programme (F9). A
chaque fois que l'on se déplace dans Table2, Table1 se place automatiquement sur l'enregistrement
correspondant. Le DBGrid1 n'affiche plus que lui.

Page 7 sur 8
Page 8 sur 8

Vous aimerez peut-être aussi