Vous êtes sur la page 1sur 8

ECOLE VEGA IP Bases de Données sous Delphi

Bases de Données sous l’environnement Delphi

Résumé
Ce chapitre est consacré à quelques rappels sur les bases de données (en particulier les bases de données
relationnelles). Par la suite, nous verrons comment développer une application bases de données sous
l’environnement Delphi.
Ce support de cours ne se veut nullement exhaustif. Ce n’est qu’une référence de base.

I. DEFINITIONS ELEMENTAIRES
 Bases de données : une base de données est un ensemble d’informations structurées mémorisées sur un
support permanent.
 SGBD (Système de Gestion de Bases de Données): un SGBD (en anglais DBMS, Data Base
Management System) est un programme (logiciel) informatique de haut niveau qui permet de créer et
de maintenir une base de données. C’est à dire :
- décrire les données qui seront stockées,
- manipuler ces données (ajouter, modifier, supprimer des informations),
- Consulter les données (sélectionner, trier, calculer, agréger, etc)
- Définir des contraintes d'intégrités sur les données (contraintes de domaines, d'existence,etc)
- Définir des protections d'accès (mots de passe, autorisations, etc.),
- Résoudre les problèmes d'accès multiples aux données (interblocages),
- Prévoir des procédures de reprise en cas d'incident (sauvegardes, journaux, etc).
On distingue trois types de SGBDs : SGBD hiérarchique, SGBD réseau, et SGBD relationnel. Dans ce
qui suit dans ce fascicule, nous nous intéresserons à ce dernier type de SGBD pour plusieurs
raisons parmi lesquelles notamment le fait qu’ils soient les plus utilisées actuellement. Parmi les SGBD
relationnels existants sur le marché, on peut citer par exemple : Oracle, Paradox, Access, DB2,
Gemstone, Sybase, Informix, DBase, Ingres, etc.

 Alias : Il est possible de définir un alias au répertoire de travail. Cet alias sera utilisé ultérieurement
dans le développement de l'application et permettra d'éviter d'avoir à fournir le chemin absolu du
répertoire de travail. Par exemple : alias c:\delphi\bdd\

La notion d'alias permet de développer une application complète en s'affranchissant de la configuration


physique de la machine support. Il suffit en effet de configurer l'alias (grâce à l'utilitaire adéquat) pour
prendre en compte un chemin d'accès aux différentes tables différent (de celui utilisé lors de la phase de
conception mais aussi, éventuellement, en cas de déplacement de l'application sur d'autres machines).

 Bases de données relationnelles : Les bases de données relationnelles gèrent les données selon le
mode, mis au point par E.F. Codd, basé sur l'utilisation du langage SQL (Structured Query Language).
Ce mode sépare l'aspect physique des données (stockage sur disque) de leur représentation logique
(présentation à l'utilisateur). Les données apparaissent alors sous forme de tables qui masquent la
complexité des mécanismes d'accès en mémoire. Ce modèle libère l'utilisateur de tous les détails de
stockage et permet un accès purement logique aux données.
Chaque table permet de stocker un type particulier de données. Une donnée stockée constitue un
enregistrement dans la table (= une ligne). Elle peut être constituée d'un nombre variable d'informations
élémentaires. Chaque information élémentaire constitue un champ de l'enregistrement (= une colonne).
Les besoins actuels nécessitent l'utilisation fréquente de dizaines de tables, chacune permettant le
stockage d'une donnée structurée particulière. Il y a lieu d'éviter la redondance des données élémentaires
stockées. L'ensemble de tables ainsi constitué s'appelle une base de données.

 Clé (key) :
On appelle clé un identifiant permettant de déterminer d'une façon unique un enregistrement dans une
table. Une clé peut être :
• Un des champs de la table si les valeurs qu'il peut prendre sont toutes différentes ;
• Un ensemble de champs permettant de définir un identifiant unique ;
• Un champ spécial qui n'est pas une donnée proprement dite mais dont on peut être
certain de l'unicité (identifiant numérique en général).

 La clé sert à déterminer précisément un enregistrement. Elle est unique.

Enseignant : N. BOUCHAMA
ECOLE VEGA IP Bases de Données sous Delphi

 Index : un index est une information sur l'ordonnancement des différents enregistrements dans une
table (il peut ne pas correspondre à l'ordonnancement physique des enregistrements). Il sert à réaliser
des tris. On peut définir plusieurs indexes pour une même table.
Lorsqu’un index correspond à une clé, on parle d’un index primaire. Autrement, on parle d’index
secondaire.

 Requête :
Pour accéder aux différentes informations l'utilisateur doit exécuter différentes requêtes qui seront
ensuite interprétées par le gestionnaire de base de données. Dans le cas d'une base utilisée dans le
contexte client / serveur, seule la requête est transmise au serveur. Celui-ci la traite puis renvoie les
résultats au client.
Une requête est formulée selon un langage particulier, qui est d'ailleurs un des fondements des bases de
données relationnelles : le langage SQL.

 Vue (view):
Une vue peut être affichée sous forme de tableau (chaque ligne correspond à un enregistrement et les
colonnes correspondent aux champs sélectionnés) ou sous forme de fiche : un seul enregistrement est à
l'écran en même temps. Lorsqu'une table est triée selon un index secondaire, elle présente à l'utilisateur
une "vue" qui diffère de son implémentation physique.

 Moteur Bases de Données (Datase Engine)


Un moteur de base de données est un ensemble de programmes chargés de gérer les différentes données
stockées dans les tables (accès aux tables, ajout, modification et suppression d'enregistrement, gestion
des accès concurrents). C'est le coeur d'un SGBDR. Il ne permet pas de créer les tables et n'assure pas
l'interface avec les utilisateurs. Ces fonctionnalités sont réalisées par d'autres utilitaires.

II. COMPOSANTS BASES DE DONNEES SOUS DELPHI

Delphi dispose de nombreux composants permettant d’accéder aux bases de données et de les exploiter. Delphi
répartit ces composants selon les mécanismes d’accès aux données qui diffèrent d’une technologie à l’autre. Sur
la palette des composants, les composants bases de données sont regroupés dans six pages :

 La page BDE (Borland Database Engin) : C’est cette page qui nous intéresse le plus. Le modèle BDE
représenté par la page BDE correspond aux composants du moteur d’accès BDE qui constitue une
interface fonctionnelle API qui permet de travailler avec les bases de données. Le modèle BDE est le
meilleur moyen d’exploiter une base de données Paradox ou des tables dBase.
 La page ADO (Activex Data Objects)
 La page dbExpress
 La page InterBase
 La Page AccèsBD

La table ci-dessous nous décrit le rôle des composants essentiels :

DataSource Source de données. Agit comme un conduit entre un composant TTable, TQuery
ou TStoredProc et des composants orientés données, tels que TDBGrid.
Table Récupère les données d'une table physique, via le BDE, et les fournit à un ou plusieurs
composants orientés données par le biais d'un composant DataSource. Inversement, envoie
les données reçues d'un composant vers une base de données physique, via le BDE.
Query Utilise des instructions SQL pour récupérer les données d'une table physique, via le BDE,
et les fournir à un ou plusieurs composants orientés données par le biais d'un composant
DataSource. Inversement, utilise des instructions SQL pour envoyer les données reçues
d'un composant vers une base de données physique, via le BDE.

Enseignant : N. BOUCHAMA
ECOLE VEGA IP Bases de Données sous Delphi

 La page ContrôleBD

La table ci-dessous nous décrit le rôle de chaque composant :

DBGrid Grille de base de données. Grille personnalisée orientée données permettant d'afficher les
données sous forme d'un tableau comme dans une feuille de calcul. Possède des propriétés
TField (définies dans l'éditeur de champs) pour déterminer la visibilité d'une colonne, le
format d'affichage, l'ordre, etc.
DBNavigator Navigateur de base de données. Boutons de navigation orientés permettant de déplacer en
avant ou en arrière le pointeur d'enregistrement dans une table. Le navigateur peut aussi
mettre une table en mode insertion, édition ou consultation seulement, valider des
enregistrements nouveaux ou modifiés et récupérer des données mises à jour pour
rafraîchir l'écran.
DBText Texte de base de données. Libellé orienté données qui affiche la valeur d'un champ de
l'enregistrement en cours.
DBEdit Saisie de base de données. Boîte de saisie orientée données permettant d'afficher et de
modifier un champ de l'enregistrement en cours.
DBMemo Mémo de base de données. Mémo orienté données permettant d'afficher et de modifier du
texte BLOB de l'enregistrement en cours.
DBListBox Boîte liste de base de données. Boîte liste orientée données qui affiche une liste défilable
des valeurs d'une colonne d'une table.
DBComboBox Boîte à options de base de données. Boîte à options orientée données qui permet d'afficher
et de modifier une liste défilable des valeurs d'une colonne d'une table.
DBCheckBox Case à cocher de base de données. Case à cocher orientée données qui permet d'afficher et
de modifier un champ booléen de l'enregistrement en cours.
DBRadioGroup Groupe de boutons radio de base de données. Groupe de boutons radio orientés données
qui affichent l'ensemble des valeurs d'une colonne.
DBLookupListBox Boîte liste de références de base de données. Boîte liste orientée données dont les
éléments proviennent d'un champ de référence défini pour un ensemble de données, ou
d'une source de données, d'un champ de données et de touches secondaires

Remarque :

Dans le cadre de cette formation, nous nous intéresserons surtout au moteur de base de données de Borland,
c'est-à-dire BDE .

Onglet QuickReport

En plus de ces six pages, on trouve également une autre page dans la palette des composants de Delphi qui nous
permet d’afficher les états de sortie : Page QReport.

Remarque :

Cette page n’est pas présente par défaut dans Delphi 7. Par conséquent il faut l’installer.

Dans cet onglet, on s’intéresse surtout au composant QuickRep

QuickRep C'est un composant visuel qui adopte la taille du format de papier sélectionné. Vous créez des
états en plaçant des bandes et des composants imprimables sur le composant TQuickRep et en
le connectant à un ensemble de données.

Enseignant : N. BOUCHAMA
ECOLE VEGA IP Bases de Données sous Delphi

III. ARCHITECTURE INTERNERNE PERMETTANT L’ACCES AUX DONNEES

Delphi met en place un certain nombre d'utilitaires et de mécanismes internes pour qu'une application ait accès
aux données gérées par les différents SGBDR.
Il fournit en particulier un moteur de base de données interne appelé BDE (Borland Database Engine), qui
permet de créer et de gérer des bases de données locales. C'est BDE qui assure par ailleurs la communication
avec les autres bases de données.

Figure 1 : Architecture interne d’une BDD sous Delphi.

Moteur BDE :
Le moteur de base de données Borland BDE (Borland Database Engine ) est l'élément central d'une application
de gestion de base de données créée avec Delphi. Il est inclus directement dans les composants spécifiques
fournis avec Delphi. Un programmeur n'a donc pas à s'en occuper et il n'apparaît pas dans l'arborescence de
l'application créée. Par contre l'exécutable généré est plus important. L'application Delphi créée est
essentiellement constituée d'une l'interface utilisateur permettant d'accéder de manière transparente à BDE.

Module de Bases de Données :


Les structures des différentes tables utilisées dans l'application sont mises au point par un utilitaire spécial : DBD
(DataBase Desktop).
Cet utilitaire, accessible par une icône spécifique ou par le menu Outils' permet de créer les différentes tables de
l'application (dénominations, types et tailles des différents champs et définition des clés), de définir les différents
index, de créer les liens entre les différentes tables.

SGBDR (SGBD Relationnel) :


Il est possible d'utiliser des tables déjà conçues par d'autres SGBDR (Paradox ou dBase). Dans notre cas, c’est le
SGBDR Paradox que nous utiliserons.
I
Etats de sortie (Reports) :
L'utilitaire Report Smith (ou le composant QReport) permet de générer des états complexes, en mode
WYSIWYG (What You See Is What You Get), à partir des tables gérées par l'application Delphi.

Pilotes ODBC :
Les pilotes ODBC permettent l'accès à différentes bases de données et serveurs SQL non reconnus directement
par Delphi.

IV. DEVELOPPEMENT D’UNE APPLICATION BASES DE DONNEES SOUS


DELPHI

Delphi permet de gérer les applications de bases de données relationnelles. Les bases de données relationnelles
organisent les informations en tables, qui contiennent des lignes (enregistrements) et des colonnes (champs). Ces
tables peuvent être manipulées par des opérations simples appelées calculs relationnels (sélection, projection,
jointure). Sous Delphi, on peut développer une base de données en suivant les étapes suivantes :

Concevoir le MCD (Modèle Conceptuel de Données) et effectuer le passage au modèle relationnel.


Inutile de rappeler ici que la cohérence et l’efficacité de votre base de données dépendent de façon très
étroite de votre MCD et du respect des règles de passage.
Donner un nom à notre base de données (il est vivement recommandé que votre nom de base de
données soir significatif. Ex : GestionScolarité est préférable à BDD1 )

Enseignant : N. BOUCHAMA
ECOLE VEGA IP Bases de Données sous Delphi

Création des alias


Création des tables en utilisant le module de base de données (Voir figure 2 ci-Dessous). Dans cette
étape, on s’intéresse aux champs de chaque table, à leurs tailles, et à leurs types (numérique,
alphanumérique, date, etc). On doit également préciser les indexes (index) et les clés (key).
Une fois notre base de données créée, on peut procéder au remplissage. On parle alors de phase
d’exploitation de la table

V. CREATION DES TABLES EN UTLISANT LE MODULE BASE DE DONNEES

Figure 2 : Module de base de données.

Dans ce paragraphe, nous donnons un exemple de création d’une table Etudiant qui contiendra les champs
suivants :

• Numéro d’immatriculation
• Nom
• Prénom
• Date de naissance
• Adresse
• Numéro de téléphone

La clé de cette table est Numéro d’immatriculation. Ceci veut dire


que deux étudiants ne doivent pas avoir le même numéro
d’immatriculation sinon il y aura une violation de clé.

Etape 1 : Lancement du module de base de données :


 Pour ce faire, lançons le module base de données de Delphi (si vous
utilisez une version anglaise de Delphi alors lancer Data Base Desktop). Ceci peut être fait soit en choisissant le
module base de données dans le groupe de programme Delphi, soit en allant dans le menu Outils/Module base
de données

Etape 2 : Création des alias :


Rappelons qu’un alias est équivalent à un chemin d’accès.
Pour créer un nouveau alias, aller dans le menu Outils/Gestionnaire d’alias de votre moniteur de base de
données.
Cliquer sur le bouton Nouveau
Dans la case Alias de base définir votre nouveau alias. Par exemple : AliasStudent
Cliquer sur Parcourir pour associer le chemin d’accès correspondant à votre alias. Par exemple : C:\Delphi
 Enregistrer votre nouveau alias en cliquant sur le bouton Enregistrer sous.

Etape 3 : Création de la table :


 Aller sur le menu Fichier/Nouveau/Table
Choisir un pilote de base de données. Dans notre cas, choisir Paradox puis cliquer sur OK.
Définir les champs de votre table tout en définissant le type et la longueur de chaque champ.
Sauvegarder votre table dans l’emplacement que vous avez associé à votre alias (enregistrer votre table sous le
nom Etudiant.db).

Enseignant : N. BOUCHAMA
ECOLE VEGA IP Bases de Données sous Delphi

Figure 3 : Interface pour créer une nouvelle table.

VI. CREATION DE L’APPLICATION

Figure 4 : Composants Base de données sur une fiche Delphi.

Le module Base de Données Delphi nous permet de créer les tables contenant les données. Il s’agit de l’aspect
statique de votre application. Tandis que pour exploiter ces données, on doit utiliser des composant bases de
données dont dispose Delphi.
Pour ce faire, créez une nouvelle applications Delphi en allant dans : Fichier/Nouveau/Application
Une fois votre nouvelle application créée, ajouter les composant suivants à votre fiche :
• TTable : ce composant se trouve dans l’onglet BDE. Associer le champ DatabaseName au nom de
votre alias, et le champ TableName au nom de votre table (dans notre cas ’est Etudiant.db). Une fois
ce deux propriétés définies, définir la propriété Active à true.
• TDatasource : Associer au champ Dataset de ce composant Table1
• TDBNavigator : comme son nom l’indique, ce composant sert à naviguer dans la base de données.
Naviguer veut dire : se déplacer d’un enregistrement à l’autre en utilisant les boutons suivants :

Figure 5 : Boutons du composant DBNavigator

Configurer la propriété DataSource de ce composant à DataSource1

• TDBGrid : ce composant sert à afficher le contenu de la table Table1. On peur également utiliser ce
composant pour modifier directement le contenu de la table. Pour ce faire, configure la propriété
Datasource à Datasource1.

Remarques :

Enseignant : N. BOUCHAMA
ECOLE VEGA IP Bases de Données sous Delphi

• Lorsque vous voulez découvrir les différentes méthodes et propriétés d’un composant Delphi, placez
votre composant sur la fiche et appuyez sur F1 ;
• Vous pouvez accéder aux différentes méthodes et propriétés d’un composant en en tapant le nom du
composant + point+ (CTRL+ESPACE).
• On utilise rarement le navigateur (et une grille) pour réaliser des insertions et suppressions de champs.
Il n'y a pas assez de contrôles de réaliser et l'entrée des données n'est pas très pratique et peut générer
des erreurs (on préférera utiliser une fenêtre spéciale contenant l'ensemble des champs de saisie sous
forme de formulaire). On utilise donc principalement le navigateur pour réaliser des déplacements à
l'intérieur de la base. Il faut donc éliminer les boutons inutiles (cas de manipulation dangereuse) et ne
conserver que ceux que l'on souhaite mettre à la disposition des utilisateurs. Pour cela on sélectionne le
composant Navigateur et on affiche la liste des options accessibles via la propriété VisibleButtons. Il
suffit alors de faire basculer à False les boutons que l'on ne veut pas afficher. L'effet est immédiat dans
la fenêtre de conception et il n'y a plus qu'à redimensionner le navigateur.

VII. UTILISATION DE L’EXPERT FICHE


Dans ce que nous avons vu précédemment, les composants base de données ont été rajoutés manuellement par
un glisser/déplacer sur la fiche. Cependant, il existe un autre moyen plus commode pour visualiser et mettre à
jour une base de données. Il s’agit de l’expert fiche de Delphi.
Pour utiliser cet outil, il faut suivre les étapes suivantes :
 Aller dans Fichier/Nouveau/Autre
Choisir l’onglet Affaires
Cliquer sur Expert Fiche Base de données
Vous pouvez procéder par une autre façon :
Aller simplement dans le menu Base de données/Expert Fiche de Delphi

Figure 6 : Expert fiche

Par la suite, cet assistant vous guidera pour obtenir une fiche contenant une interface vous permettant d’interagir
avec votre base de données.

VIII. MISE À JOUR D’UNE BASE DE DONNES EN UTLISANT DU CODE


Jusqu’à maintenant, nous avons vu comment mettre à jour une base de données en utilisant des composants
visuels (DBNavigator, DBGrid, etc). Il existe un autre moyen pour mettre à jour une base de données ; à savoir :
le code PASCAL.

Numéro d’immatriculation Nom Prénom Date de naissance Adresse Numéro de téléphone


0 1 2 3 4 5

Figure 7 : Numéro de chaque champ de la table Etudiant.

Pour accéder à un champ d’un enregistrement donné, on doit connaître la position du champ ainsi que celle de
l’enregistrement.

Exemple :
Imaginons que le premier enregistrement est le suivant :

A005 Ait Amar Hocine 23/06/1982 Ihaddaden, Béjaia 034202020

Enseignant : N. BOUCHAMA
ECOLE VEGA IP Bases de Données sous Delphi

Et supposons qu’on veuille modifier le nom de cet étudiant à Ait Ammar :

Dans ce cas, Il y deux méthodes pour modifier de champs par code

Méthode 1 (en utilisant les indices des champs):


On doit taper le code suivant :

Table1.Edit ; //ouvrir la table en mode édition


Table1.Fields[1].AsString :=’Ait Ammar’ ; // car l’indice du champ nom est 1 .

Méthode 2 (en utilisant les noms des champs):


Dans ce cas, on n’est pas obligé de savoir l’indice du champs mais son nom exact :

Table1.Edit ; //ouvrir la table en mode édition


Table1.FieldByName(‘Nom’) :=’Ait Ammar’ ; //Ici on utilise directement le nom du champ

IX. PROPRIETES DES COMPOSANTS ESSENTIELS :


Dans ce paragraphe, nous donnons quelques propriétés de trois composants, à savoir : le composant Table, le
composant Datasource, et le composant DBNavigator.

• Composant Table

Active Indique si la table est ouverte ou non. Le fait de basculer Active à True
ouvre la table est et équivalent à : Table1.Open
DataBaseName Indique l'alias ou le chemin d'accès à la table
Fieldefs Donne des renseignements sur les différents champs de la table.
Fields [i] Permet d'accéder à un champ particulier par son indice (base 0).
IndexName Spécifie un index secondaire. Celui-ci doit avoir été définit dans DBD.
MasterSource Utilisé dans le cas de tables liées.
Modified Indique si un champ de l'enregistrement courant a été modifié.
ReadOnly Empêche l'utilisateur de modifier les données si elle est configurée à true.
RecordCount Indique le nombre d'enregistrements.
State Indique l'état courant de la table.
TableName Nom de la table avec laquelle le composant est lié.

• Composant Datasource

Active Indique si le composant est actif ou nom.


DataSet Indique le composant de gestion de données auquel TDataSource est connecté.
State Indique l'état du composant de gestion de donnée.

• Composant DBNavigator

Field [i] Permet d'accéder au i° champ de la grille


FixedColor Spécifie la couleur de la grille
Options Les nombreuses options permettent de modifier l'aspect de la grille
Read Only Permet de déterminer si les données ne sont qu'affichées ou si l'on peut les modifier

Liens très recommandés:


www.developpez.com
www.commentcamarche.com
www.phidels.com
www.borland.com
www.delphi32.com

Enseignant : N. BOUCHAMA