Vous êtes sur la page 1sur 12

Spécialité : BDD (S3) INSFP de Médéa

Module : Delphi Année : 2021/2022

Chapitre 01:
Programmation des bases de données en utilisant le Moteur ADO

Objectifs du chapitre:
 Découvrir les composants ADO pour la création et l'exploitation d'une BD
 Crée et exploiter une base de donnés complète.

Dans ce chapitre:
1. Programmation des bases de données en utilisant le moteur ADO.
2. Composants de base pour les bases de données (ADO).
3. Etape de connexion d'une base de données sous SGBD(Access) avec Delphi.
4. Exploitation d'une base de données par programme.

1
Spécialité : BDD (S3) INSFP de Médéa
Module : Delphi Année : 2021/2022
Programmation des bases de données aux Delphi

I. Comment connecter une base de données Microsoft Access à une application


Delphi?

1. Notion de base:

Base de données: Une base de données informatique est une représentation de la réalité en
utilisant ce qu’on appelle un SGBD (Système de gestion de Bases de Données) tel qu’Access.
Le SGBD permet de créer une base de données à travers toutes ses tables de données.
Chaque table représente une structure de données, un domaine déterminé.

Données

Table
Table
Table 4
Table 3
2
1

SGBDR (Système de Gestion de Base de Données Relationnelle): Un SGBDR est un SGBD


qui permet de gérer des données par domaine et d’établir des relations entre ces domaines.

ODBC (Open Data Base Connectivity): C'est un protocole qui permet de connecter un BDD
Microsoft Access à une source de données externes

ADO: Page de la palette des composants contient les composants qui permettent à accès a des
sources de données exposées via ODBC

L'architecture d'accès aux BDD:

Ensemble de
Source de
Eléments
données 1
données 1
d'interface ADO
utilisateur Ensemble de
Source de
données N données N

ODBC

SGBDR

BDD

2
Spécialité : BDD (S3) INSFP de Médéa
Module : Delphi Année : 2021/2022
Nous allons dans ce qui suit donner la description de quelques composants usuels de base de
données. Ceux-là ce trouve dans la palette des composants dans les pages suivantes:
(ADO, ControleBD, AccèsBD)

- La page ADO de la palette des composants contient uniquement les composants utilisant le
moteur de base de données ADO

- La page AccèsBD et ContrôleBD regroupe les composants qui peuvent être utilisés par les
bases de données BDE, ADO ou autre.

2. Les Composants de base pour les bases de données (ADO): Delphi dispose d'un certain de
composants spécialisés dans les bases de données

a. Le Composant ADOTable: Récupère les données d'une table physique Via le Ado, et le
fournit à un ou plusieurs composants orienté données par le bais d'un composant DataSource,
envoie les données reçues d'un composant vers une base de données physique via le ADO

b. Le Composant DataSource: Le rôle du Composant DataSource est de connecter plusieurs


composants relatifs aux bases de données avec un ensemble de données
On ne peut pas exploiter les composants d'accès aux données sans utiliser le composant
DataSource.

c. Le Composant ADOConnection: Fait le branchement entre la Base de données Access sur


le disque dur et le programme. C’est le point d’entrée de la communication. Il gère en
particulier le type de protocole de communication (Moteur Access) et les droits d’entrée
(Mot de Passe).Son argument principal est la ConnectionString qui récapitule tous les
arguments de connexion.

d. Les Composants ControleBD usuels:

DBGrid: Permettant d'afficher et modifier un ensemble de données

DBNavigator: Permettant de :
- Déplacer en avant ou en arrière le pointeur d'enregistrement dans un ensemble de données.
- Mettre un ensemble de données en mode insertion ou édition ou consultation
- Valider des enregistrements nouveaux ou modifier.

DBText: Permet d'afficher une valeur d'un champ de l'enregistrement en cours

DBEdit: Boite de saisie orientée donnée permettant d'afficher et de modifier un champ de


l'enregistrement en cours

DBMemo: Boite de mémo orientée donnée permettant d'afficher et de modifier du texte BLOB
dans l'enregistrement en cours

DBImage: Boite image orientée donnée permettant d'afficher de copier ou coller des images
bitmap de BLOB depuis et vert l'enregistrement en cours

3
Spécialité : BDD (S3) INSFP de Médéa
Module : Delphi Année : 2021/2022

Application 0
On considère une application qui utilise une base de données créer dans un SGBDR
(ACCESS), pour afficher ses enregistrements sur un DBGrid, et utilise un DBNavigator pour
parcourir les enregistrements.

 Exécutez Delphi pour créer une nouvelle application.


 Le Composant ADOConnection
 Dans l'onglet ADO, prenez un composant ADOConnection et placez-le sur votre fiche
(Form1).
Ce composant nous permet de construire une chaîne de connexion ADO avec notre base de
données.
Comment construire une chaîne de connexion ADO à l'exécution ?
Pour se connecter à des stockages de données ADO, nous devons spécifier des informations
que nous fournissons à la propriété ConnectionString d'un composant ADOConnection.
La propriété ConnectionString construire une chaîne uniquement pour les fournisseurs
suivants : MS-SQL Server, Access, ODBC et ORACLE.
En cas d'erreur sur le nom du fournisseur, la fonction revoit la chaîne 'NONE'.

 Puis effectuer un double clic sur la propriété ConnectionString


(Ou bien clic droit sur le composant ADOConnection choisir "Modifier la chaîne de
connexion")
Ensuite cliquer sur le bouton construire (build) pour utiliser l'assistant.
Sélectionner le fournisseur : "Microsoft Jet 4.0 OLE DB Driver" et cliquer sur suivant.
Entrer alors le chemin d'accès à la base ainsi que le nom d'utilisateur et son mot de passe.
Valider la chaîne.
(Ou bien par programmation ADOConnection1.ConnectionString :=
buildConnexionString('ODBC','MaBaseNameAliasODBC','UserName','MotDePasse');
 Entrez dans sa propriété LoginPrompt la valeur False.
 Entrez dans sa propriété Connected la valeur True.

 Le Composant ADOTable :
 Dans l'onglet ADO, prenez un composant ADOTable et placez-le sur votre fiche (Form1).
Ce composant nous permet d’accéder à notre base de données.
 Entrez dans sa propriété Connection la valeur ADOConnection
 Dans sa propriété TableName, entrez le nom de votre table (Stagiaire .dbf)
 Rendez actif le composant ADOTable1 en mettant sa propriété True.

 Le Composant DataSource:
 Dans l'onglet AccèsBD, prenez un composant DataSource et placez-le sur votre fiche.
Ce composant sert de canal (d’intermédiaire) entre le composant TADOTable et d'autres
composants.
Ces derniers permettent par exemple de visionner le contenu de la table par le TDBGrid et
TDBNavigator.
 Entrez ADOTablel1 dans sa propriété DataSet, cela assure sa liaison avec le composant
ADOTablel.

4
Spécialité : BDD (S3) INSFP de Médéa
Module : Delphi Année : 2021/2022
 Pour la conception de notre fiche :
Il faut maintenant ajouter les composants qui vont nous permettre de visualiser et modifier
notre base de données.

 Dans l'onglet ControleBD, prenez un


composant DBNavigator et placez-le sur la
fiche.
 Affectez à sa propriété DataSource la valeur
DataSourcel .
 Refaire la même manipulation avec le
composant DBGrid.

Si vous mettez la propriété Active de votre table à true, vous voyer immédiatement le contenu
de votre base de données sous forme d'un tableau dans le DBGrid !
Lancez votre programme...

 Le composant DBNavigator : Ce composant permet de se déplacer dans la base de


données et même d'en ajouter ou d'en retirer des enregistrements.
2 4 6 8

1 3 5 7 9
N° Boutons Descriptions
Premier Fait l'appel à la méthode First de l'ensemble de données pour que le premier
1
enregistrement de l'ensemble de données devienne l'enregistrement en cours.
Précédent Fait l'appel à la méthode Prior de l'ensemble de données pour que
2
l'enregistrement précédent devienne l'enregistrement en cours.
Suivant Fait l'appel à la méthode Next de l'ensemble de données pour que
3
l'enregistrement Suivant devienne l'enregistrement en cours.
Dernier Fait l'appel à la méthode Last de l'ensemble de données pour que le dernier
4
enregistrement de l'ensemble de données devienne l'enregistrement en cours.
Insertion Fait l'appel à la méthode Insert de l'ensemble de données pour insérer un
5 nouvel enregistrement avant l'enregistrement en cours et placer l'ensemble de
données en mode Insertion.
Supprimer Fait l'appel à la méthode Delete pour supprimer l'enregistrement en cours, si la
6 propriété ConfirmDelete est à true et placer l'ensemble de données en mode
Insertion
Edition Place l'ensemble de données en mode Edition afin de pouvoir modifier
7
l'enregistrement en cours.
8 Ecriture Ecrit les modifications dans l'enregistrement en cours dans la base de données.
Annuler Annule l'édition de l'enregistrement en cours et replace l'ensemble de données
9
à l'état Visualisation.
Remarque : La propriété VisibleButtons : Rendez certain boutons invisible/visible.

5
Spécialité : BDD (S3) INSFP de Médéa
Module : Delphi Année : 2021/2022

 Le composant DBGrid: L'inspecteur d'objet affiche une liste de propriété pour le composant
DBGrid, voici quelque propriété relative au DBGrid:
Propriété Signification
Align Détermine comment le contrôle s'aligne dans son conteneur.
Color Indique la couleur d'arrière-plan du contrôle.
Columns Décrit les attributs d'affichage et de liaison avec les champs des colonnes.
Identifie la liaison avec l'ensemble de données d'où la grille orientée données tire
DataSource
ses informations.
FieldCount Indique le nombre de champs (colonnes) affichés dans la grille.
Fields Fournit un accès indicé aux composants champ correspondant aux colonnes.
FixedColor Indique la couleur d'arrière-plan des lignes et colonnes figées de la grille.
Font Spécifie les attributs du texte écrit sur ou dans le contrôle.
Spécifie diverses options d'affichage et de comportement de la grille orientée
Options
données.
Indique si la grille ne sert qu'à l'affichage des données ou si l'utilisateur peut
ReadOnly
modifier les données en utilisant la grille.

La propriété objet Columns: Utilisez pour connaître ou définir les attributs de liaison de
champ et d'affichage des colonnes d'une grille orientée données. La propriété Columns est une
collection indicée d'objets TColumn.
La propriété objet Columns peut être définie à la conception, en utilisant l'éditeur de
colonne ou par programme à l'exécution.

Propriété Signification
Alignment Spécifie comment le texte est aligné à l'intérieur du titre de colonne.
Caption Spécifie le texte apparaissant en haut de la colonne.
Color Spécifie la couleur d'arrière-plan du titre de colonne.
Column Spécifie l'objet TColumn qui est associé au titre de la colonne.
Font Spécifie la fonte utilisée par le titre de colonne pour afficher son libellé.
Title Spécifie les informations relatives au titre d'une colonne .

6
Spécialité : BDD (S3) INSFP de Médéa
Module : Delphi Année : 2021/2022
La propriété Options : indiquent les propriétés d'affichage et de comportement d'une grille de
base de données listées dans le tableau suivant. La valeur par défaut est True (activée) pour
toutes les options.

Valeur Signification
dgEditing L'utilisateur peut modifier, insérer et supprimer des enregistrements
dans la grille. Cette option est ignorée si dgRowSelect est true.
dgAlwaysShowEditor La grille est les champs toujours en mode édition. L'utilisateur ne doit
pas appuyer sur ENTREE ou F2 avant de modifier le contenu d'une
cellule. Cette option ne fait rien sauf si dgEditing est true. Elle est
ignorée si la liste d'options inclut dgRowSelect.
dgRowSelect Active la tabulation entre les champs dans les enregistrements. Un
utilisateur peut sélectionner une ligne entière, ainsi que des cellules
individuelles. Si la liste d'options inclut dgRowSelect, dgEditing et
dgAlwaysShowEditor sont ignorées.
dgConfirmDelete Une boîte de message demandant une confirmation apparaît quand
l'utilisateur appuie sur Ctrl+Suppr pour supprimer une ligne de la
grille.
dgMultiSelect Permet à l'utilisateur de sélectionner des lignes non contiguës dans la
grille en utilisant les touches Ctrl+Maj et Maj+flèche. Plusieurs lignes
de la grille peuvent ainsi être sélectionnées en une seule fois.
dgTitleClick Permet de cliquer dans les cellules d'en-tête du tableau.

7
Spécialité : BDD (S3) INSFP de Médéa
Module : Delphi Année : 2021/2022
II. Exploitation d’une base de données par programme

Création d'un programme exploitant une base de données déjà créée :


Nous allons dans ce qui suit écrire une application qui permet d’exploiter notre base de
données qu’on a crée, on va créer alors des procédures pour chaque évènement pour se déplacer
dans notre base sans passer par le composant DBNavigator.

Application 01
 Exécutez Delphi pour créer une nouvelle application.
 Dans l'onglet ADO, prenez un composant ADOConnection et placez-le sur votre fiche.
 Construire la chaîne de connexion par sa propriété ConnectionString,
 Entrez dans sa propriété (LoginPrompt la valeur False, Connected la valeur True).
 Placez un composant ADOTable sur votre fiche, Donnez l'accès à notre base par les propriétés
(Connection, TableName, Active).
 Prenez un composant DataSource et placez-le sur votre fiche, puis reliez-le à notre base par sa
propriété DataSet.

 Dans l'onglet ControleBD, prenez un composant DBEdit et placez-le sur la fiche.


 Affectez à sa propriété DataSource la valeur DataSourcel et à sa propriété DataFlield le nom
de l'un des champs de notre base de données par exemple Matricule.
 Refaire la même manipulation avec les quatre autres composants DBEdit et ce, pour les autres
champs de notre base (Nom, Prenom, DateNaiss et Section).

 Insérez 11 Bouton sur la fiche.


 Définissez les propriétés Caption des 11 boutons respectivement à : Premier, Précédent,
Suivant, Dernier, Ajouter, Modifier, Supprimer, Valider, Annuler, Effacer, Fermer.
 Programmer le gestionnaire d'événement On click de chaque bouton.
N.B: Vous pouvez ajouter cinq (05) composants Label pour étiqueter les cinq champs.

8
Spécialité : BDD (S3) INSFP de Médéa
Module : Delphi Année : 2021/2022
1. Se déplacer dans une base de données: Le composant TAdoTable dispose de plusieurs
méthodes permettant de se déplacer dans la base :
Méthode du DataSet Description
First L'enregistrement courant devient le premier enregistrement
Prior L'enregistrement courant devient l'enregistrement précédent
Next L'enregistrement courant devient l'enregistrement suivant
Last L'enregistrement courant devient le dernier enregistrement
 Button1: implémentez sa méthode OnClick avec la ligne suivante:
Procedure Tform1.button1Click(Sender: Tobjet);
Begin Adotable1.First; End; //Tester les autres méthodes

2. Ajouter/Insérer/Modifier/Supprimer des enregistrements: Il est possible d'insérer ou


d'ajouter un enregistrement par les deux méthodes :
Méthode du DataSet Description
Insert Ajouter un enregistrement à la fin de table.
Append Ajouter un enregistrement avant l'enregistrement courant.

Comme il est possible de modifier ou supprimer un enregistrement par les méthodes:


Méthode du DataSet Description
Edit Placer la table en mode édition.
Delete Supprimer l'enregistrement en cours
 Button5: implémentez sa méthode OnClick avec la ligne suivante:
Procedure Tform1.button5Click(Sender: Tobjet);
Begin Adotable1.Insert; End; //Tester les autres méthodes

3. Valider/Annuler de mis a jour :


Méthode du DataSet Description
Post Valide la saisie et quitte le mode édition
Refresh Valider la saisie, quitte le mode édition et rafraichit les données
visibles à l'écran
Cancel Annule les modifications apportées à un enregistrement tant
qu'elles n'ont pas été validées
 Ajoutez un bouton sur votre fiche puis implémentez sa méthode OnClick avec la ligne
suivante:
Procedure TForm1.Button6Click(Sender: Tobjet);
Begin Adotable1.Post; End; //Tester les autres méthodes

4. Début et fin de table

Méthode du DataSet Description


BOF Begin Of File : Début de table (avant le premier enregistrement)
EOF End Of File : Fin de table (après le dernier enregistrement)

 Eof renvoie true si la table est vide, après un appel à Last ou si un appel à la méthode Next
échoue du fait que l'on est déjà au dernier enregistrement.
 Bof renvoie true si la table est vide, après un appel à First ou si un appel à la méthode Prior
échoue du fait que l'on est déjà au premier enregistrement.

9
Spécialité : BDD (S3) INSFP de Médéa
Module : Delphi Année : 2021/2022

Application 02

 Exécutez Delphi pour créer une nouvelle application.


 Insérer les composants ADOConnection et AdoTable et Data Source sur votre fiche.
 Modifier les prophéties nécessaires pour rendre votre application connectée à votre base
(Stagiaires).
 Sélectionnez le composant AdoTable1 puis faites un clic droit sur le composant, choisir dans le
menu qui s'affiche Éditeur de champs, la fenêtre Éditeur de champs apparaît, faites un clic
droit sur la zone vide choisissez Ajouter tous les champs.
Tous les champs ont été ajoutés à la fenêtre, Faites glisser tous les champs avec la souris vers la
fenêtre de projet.

Delphi a inséré autant de TDBEdit que de chmaps.


Il les a nommés Edit suivi du nom du champ.
Les TDBEdit sont reliés à TDataSource par l'intermédiaire de leur propriété DataSource.
Delphi a rempli cette propriété DataSource1 qui est le nom de notre TDataSource.
Delphi a égalment rempli la propriété DataField avec le nom du champ de notre base de
données le contenu sera affiché dans le TDBEdit.

 Rajoutez sur la fiche un DBGrid. Entrez à sa propriété DataSource la valeur DataSourcel.

10
Spécialité : BDD (S3) INSFP de Médéa
Module : Delphi Année : 2021/2022
III. Manipulation de données par programmation
Il existe deux façons d'accéder (lire ou écrire) au contenu des champs :

a) Accès par le n° du champ: Le composant ADOTable possèdent un tableau de champs


Fields ce table commence à l'indice 0. L'accès a la valeur d'un champ se faire par le n°
du champ (sa position dans le tableau).

 Affecter la valeur d'un champ dans une variable: Le variable Var contiendra la
valeur du premier champ de l'enregistrement en cour.
 Syntaxe: Var := Adotable1.Fields[0].AsString;
AsString: c'est une propriété qui permit de convertir le type de champ en String.
Il existe d'autres possibilités de conversion: AsInteger, AsBoolean, AsDatatime ,AsFloat....

 Afficher la valeur d'un champ:


 Exécutez Delphi pour créer une nouvelle application.
 Ajoutez un bouton et associez à sa propriété Caption la valeur Afficher, et implémentez sa
méthode OnClick avec la ligne suivante:

Procedure Tform1.button1Click(Sender: Tobjet);


Begin Showmessage('Matricule: ' + Adotable1.Fields[0].AsString ); End;
//Lancez votre programme pour le tester

 Modifier la valeur d'un champ (le contenu d'un champ): Pour la même méthode, vous
pouvez avoir un accès en écriture; par défaut le DataSet en mode édition, pour empêche
cela il faut passer la propriété AutoEdit du composant DataSource à false. Pour passer le
DataSet en mode édition il faut appeler sa méthode Edit.

 Ajouter le 2ème bouton et associer à sa propriété Caption la valeur Modifier, et


implémentez sa méthode OnClick avec la ligne suivante:

Procedure Tform1.button2Click(Sender: Tobjet);


Begin Adotable1.Edit;
Adotable1.Fields[4].AsInteger := 04;
Adotable1.Fields[1].AsString := 'Mameri'; End;
//Lancez votre programme pour le tester

Remarque: L'inconvénient de cette méthode est qu'il faut connaitre l'emplacement des champs.
Si en modifier l'ordre des champs, notre programme ne fonctionnera plus correctement. Il est
donc préférable d'accéder par le nom du champ.

 Insérer un enregistrement: On peut insérer un enregistrement tout en remplissant mes


champs grâce aux méthodes : AppendRecord/InsertRecord

 Il faut ensuit remplir chaque champs


Procedure Tform1.button3Click(Sender: Tobjet);
Begin Adotable1.InsertRecord([Null, 'ahlem', 'tahri', '13/3/2000', 3]); End;

11
Spécialité : BDD (S3) INSFP de Médéa
Module : Delphi Année : 2021/2022
b) Accès par le nom du champ:
L'accès a la valeur d'un champ peut être se faire aussi par la méthode FieldByName. Cette
fonction nous permet d'accéder directement aux propriétés et méthode spécifique d'un champ
dont on connait le nom.

Syntaxe: FieldByName(FieldName:String):TField;

 On peut donc modifier l'implémentation de l'événement OnClick du premier bouton :


Procedure Tform1.button1Click(Sender: Tobjet);
Begin Showmessage('Matricule' + Adotable1.FieldByName('Matricule').AsString); End;
//Lancez Votre programme pour tester...

 Et l'implémentation de l'événement OnClick du second bouton :


Procedure Tform1.button2Click(Sender: Tobjet);
Begin Adotable1.FieldByName('Matricule').Asstring:= 'Mameri'; End;
// Lancez Votre programme pour tester...

 On peut afficher l'enregistrement en cour en affichant la valeur de tous les champs de la


manière suivante:
Procedure Tform1.button1Click(Sender: Tobjet);
Begin Showmessage(
'Matricule ' + Adotable1.FieldByName('Matricule').AsString+#13+
'Nom ' + Adotable1.FieldByName(' Nom ').AsString+#13+
'Prenom ' + Adotable1.FieldByName(' Prenom ').AsString+#13+
'Date_Naiss ' + Adotable1.FieldByName(' Date_Naiss' ').AsString+#13+
'Section ' + Adotable1.FieldByName(' Section ').AsString ); End;
//Lancez Votre programme pour tester...

12

Vous aimerez peut-être aussi