Vous êtes sur la page 1sur 7

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 : 18
Thème : Utilisation d'une liste de choix pour rentrer une donnée Temps
alloué : 04 H

Objectif opérationnel

A la fin de la séance, le stagiaire sera capable d’utiliser une liste de choix pour entrer une

données dans la base de données à partir du composant DBcombobox 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.
*Datashow pour la démonstration d’ajouter une liste de choix 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 7
Remarqu Le stagiaire L’enseignant
es
* Rappel.
*Création du centre d’intérêt
- Si on veut filtrer les stagiaires dans la liste comment le fait ?
*il est préférable que *L’objectif opérationnel.
les stagiaires A la fin de la séance, le stagiaire sera capable de chercher …
découvrent le titre de la *Mise en difficulté°1«1. Utilisation d'une liste de choix pour
leçon. rentrer une donnée»
 Comment utiliser une liste de choix pour ajouter des
données ?
*Les réponses *Exposition, explication et démonstration :
possibles : On manipule le dbcombobox pour réaliser l’ajout des données.
*insertion des *Evaluation partielle :
composants d’un BDD, Question Ouverte : -refaire l’exemple sur PC.
… *Mise en difficulté°2«2. Le combobox »
 Qu’est-ce qu’un dbcombobox ?
* attention et *Exposition, explication et démonstration :
concentration. Un compisant qui propose des choix dans une BDD.
*Evaluation partielle :
Question Ouverte : -faire un exemple sur PC.
*Mise en difficulté°3«3. Indiquer le contenu de la liste
*Les réponses déroulante du DBComboBox»
possibles :  Comment indiquer le contenu du dbcombobox?
Correcte *Exposition, explication et démonstration :
En modifiant la propriété ‘items’.
*Evaluation partielle :
Question Ouverte : -refaire l’exemple sur PC.
*Mise en difficulté°4«4. Indiquer la table et le champ à
*Les réponses modifier»
possibles :  Y-t-il une méthode pour Indiquer la table et le champ à
Correcte modifier ?
*Exposition, explication et démonstration :
Faire la liaison avec Datasource et datafield.
*Evaluation partielle :
Question Ouverte : -refaire l’exemple sur PC.
*Les réponses *Mise en difficulté°5«5. Le DBLookUpComboBox ou
possibles : comment remplir la liste à l'aide d'une table»
* dans le cours.  Comment remplir la liste à l’aide d’une table ?
*Exposition, explication et démonstration :
Prenant l’exemple d’une BDD bibliothèque et appliquant les
étapes citées.
*Evaluation partielle :
Question Ouverte : -refaire l’exemple sur PC.

Page 2 sur 7
*Mise en difficulté°6«6. Trier, filtrer, la liste de choix»
 Comment trier filer la liste des choix dans une base de
données ?
*Exposition, explication et démonstration :
Pour effectuer ces opérations il faut ajouter un index et le reste
avec une Query.
*Evaluation partielle :
Question Ouverte : -refaire l’exemple sur PC.
*Evaluation finale :
Evaluer le stagiaire par un TP qui illustre les exemples du cours
d’une base de données.
Solution :
La solution des questions sera selon le cours présenté.

Contenu du cours
1. Utilisation d'une liste de choix pour rentrer une donnée

Page 3 sur 7
Dans les bases de données, il arrive fréquemment de vouloir que le choix de l'utilisateur se limite à un
certain nombre de possibilités. Si on reprend l'exemple de notre bibliothèque, on ne souhaite pouvoir
entrer dans les mouvements (entrées, sorties de livres) que des livres présents dans notre inventaire. Cela
évitera par exemple de saisir Delphi deux au lieu de Delphi2

2. Le DBCombobox

Le DBCombobox va nous permettre de rentrer "en dur" la liste de choix par l'intermédiaire de sa
propriété Items.

Reprenez la base de données vue au cours précédant (bibliothéque). Ajoutez un DBCombobox (onglet

ContrôleBD) sur la form1

3. Indiquer le contenu de la liste déroulante du DBComboBox

Il faut maintenant remplir la liste qui se déroulera. Cliquez sur les ... à droite de la propriété
Items et rentrez la liste de livre de votre inventaire.

Lancez le programme (F9). Cliquez sur de votre DBComboBox. Vous voyez la liste de choix se
dérouler.

A ce stade, même si vous sélectionnez une valeur, cela ne rentrera rien dans votre base de donnée car
on a pas encore indiqué la table et le champ qu'il faudra modifier. Si vous sélectionnez une valeur, le
DBComboBox reste vide

Page 4 sur 7
Il reste vide car ce qu'il affiche est justement la donnée du champ de la table concernée. Pas de table
indiquée => rien d'affiché.
4. Indiquer la table et le champ à modifier
Choisissez le DataSource qui correspond à la table concernée à l'aide de la propriété DataSource du
DBCombobox (ici DataSource2).
Choisissez le Champ concerné à l'aide de la propriété DataField (ici LivreEmprunte)

Lancez le programme. Déplacez-vous dans le DBGrid, vous verrez que ce qui s'affiche dans le
DBCombobox est bien la valeur du champ LivreEmprunte de l'enregistrement courant.

Inversement, vous pouvez modifier la valeur en question par le biais de la liste de choix du
DBCombobox.

Il va falloir recompiler à chaque fois que l'on ajoute un livre dans l'inventaire ! Effectivement, la
solution DBCombobox est certainement bien pour rentrer par exemple "vrai ou faux" ou "oui ou non"
mais ce n'est certainement pas la bonne solution pour gérer notre bibliothèque. La bonne solution est
d'afficher le contenu d'un champ d'une table. C'est le rôle du DBLookUpComboBox.

5. Le DBLookUpComboBox ou comment remplir la liste à l'aide d'une table

5.1. Création de la table


Créons une nouvelle table pour notre base de données nommées Livres.db :

La liste déroulante du DBLookUpComboBox va être remplie à l'aide d'un champ de la table livre.

 Placez un TTable (qui se nommera Table3) et un DataSource (DataSource3) sur notre


DataModule.
 Connectez Table3 à la Base TEST en choisissant la Table
Livre
 Connectez le DataSource3 à Table3 par l'intermédiaire de sa propriété DataSet.
 Mettez la propriété Active du Table3 à True.

Placez un DBLookUpComboBox sur la Form1. Ce composant est l'équivalent


d'un DBComboBox, mais il permet de remplir la liste déroulante à partir d'une table.

5.2. Indiquez le contenu de la liste déroulante du DBLookUpComboBox.

Page 5 sur 7
 Indiquez au DBLookUpComboBox qu'il doit remplir sa liste à l'aide des données que lui fournira
le DataSource3 : Modifiez la propriété ListSource du
DBLookUpComboBox
 Indiquez le ou les champ à afficher dans la liste déroulante à l'aide de sa propriété
ListField. Ici, par exemple, on verra les champ NumLivre et
NomLivre. (Séparer les champ par un ";").
 Il faut maintenant indiquer quel champ sera transmis suite à la sélection par l'utilisateur d'un
élément dans la liste déroulante :

5.3. Indiquez la table et le champ de cette base qui doivent être modifiés suite au choix dans cette
liste déroulante.

 Exactement de la même façon que pour le DBCombobox, indiquez quel champ de quelle Table

doit recevoir cette donnée. .


Le champ pointé par DataField doit être du même type que le champ pointé par KeyField.

Actuellement, la liste déroulante apparaît ainsi :

On voit bien, dans la liste, les champs NumLivre et NomLivre.


Ce qui s'affiche dans le DBLookUpComboBox est le premier des
champs décrits par la propriété ListField et donc le champ NumLivre. Il est probable que vous
préféreriez voir le nom du livre et non un simple numéro.

 La propriété ListFieldIndex permet d'indiquer lequel des champs pointés par ListField doit
s'afficher dans cette partie. 0 affichera le premier (ici NumLivre) 1 affichera le 2° (ici NomLivre)
etc... Pour continuer l'exemple, entrez 1 dans cette propriété ListFieldIndex.

5.4. Quelle valeur s'affiche dans le DBLookUpCombobox ?

Ce qui est affiché dans est l'élément de la liste déroulante qui a une
valeur telle que, pour l'enregistrement en cours, son champ pointé par KeyField est égal à la valeur du
champ pointé par ListField. En d'autres termes, si vous vous déplacez dans votre DBGrid, vous ne verrez
une valeur s'afficher dans que si le nom du livre contenu dans
l'enregistrement en cours du DBGrid existe dans la liste déroulante du DBLookUpComboBox.

Petite expérience

Vous avez la possibilité de rentrer dans la table "Livres" des noms de livres de 30 caractères alors que
dans le champ "LivreEmprunte" de la table "Mouvements", vous êtes limité à 15 caractères. Lancez le
programme, et sélectionnez dans la liste déroulante un nom de livre supérieur à 15 caractères.

Seulement les 15 premiers caractères du nom sont pris par la table "LivreEmprunte" et donc
seulement les 15 premiers caractères apparaissent dans le DBGrid. Résultat, on n’a pas la même chaîne
de caractère dans "NomLivre" que dans le champ "LivreEmprunte". On ne verra donc pas de valeur
s'afficher dans le DBLookUpComboBox
Page 6 sur 7
Il est évident que pour un cas réel, il aurait fallu que le nombre de caractères autorisés pour
LivreEmprunte et NomLivre soit le même.

Il aurait même mieux valu, dans le champ LivreEmprunte, non pas stocker le nom du livre mais un
numérique correspondant au champ NumLivre de la table Livres. On aurait alors mis NumLivre dans la
propriété KeyField du DBLookUpComboBox avec toujours LivreEmprunte dans la propriété
DataField.

6. Trier, filtrer, la liste de choix

Pour trier la liste de choix, il suffit d'utiliser un index. Créez par exemple un index secondaire nommé
IndexNomLivre indexant le champ NomLivre affectez IndexNomLivre à la propriété IndexName de
table3. Si vous relancez le programme, la liste de choix est triée par ordre alphabétique.

Pour des filtres / tris plus subtils, vous pouvez utiliser un Query au lieu de la table3. Pour plus
d'explications et mieux comprendre les Query.

Page 7 sur 7

Vous aimerez peut-être aussi