Académique Documents
Professionnel Documents
Culture Documents
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
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
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
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
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.
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.
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.
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...
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
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.
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
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
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 :
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....
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.
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.
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;
12