5. Exemples d'utilisation de composants du BDE▲
Pour illustrer la présentation que nous avons faite des composants de la palette BDE, nous allons interagir avec notre base de données en prenant 2 exemples.
5-1. Affichage du contenu d'une table▲
5-1-1. Les composants à ajouter▲
Nous allons rajouter en plus des composants déjà utilisés dans la configuration de l'accès à la base de données, un bouton Button1 ayant pour libellé "Afficher" et un mémo "Memo1".
Vous devriez avoir quelque chose qui ressemble à ce qui suit :
5-1-2. Affichage du contenu de la table ETUDIANT▲
Nous allons commencer par ajouter une méthode afficher comme suit :
void
__fastcall TForm1::
afficher()
{
AnsiString nom =
""
;
AnsiString prenom =
""
;
Memo1->
Clear();
// ouverture connexion, bdd et table
Session1->
Open();
Database1->
Open();
Table1->
Open();
// on se positionne au début
Table1->
First();
// on parcourt la table
while
(!
Table1->
Eof)
{
// on récupère les champs nom et prénom
nom =
Table1->
FieldByName("nom"
)->
AsString;
prenom =
Table1->
FieldByName("prenom"
)->
AsString;
// on ajoute une ligne à notre mémo
Memo1->
Lines->
Add(nom+
" "
+
prenom);
// on passe à la ligne suivante
Table1->
Next();
}
// on ferme connexion, bdd et table
Table1->
Close();
Database1->
Close();
Session1->
Close();
}
Il suffit maintenant de relier cette méthode à l'événement OnClick de notre bouton en créant l'événement par défaut à partir de l'explorateur de classe et en rajoutant le code suivant.
void
__fastcall TForm1::
Button1Click(TObject *
Sender)
{
afficher();
}
Il ne reste plus qu'à exécuter pour avoir le résultat suivant :
5-2. Exécution d'une requête▲
5-2-1. Les composants à ajouter▲
Pour pouvoir exécuter une requête, nous allons déposer un TQuery (appelons le "MaRequete") sur la fiche, et renseigner les propriétés SessionName et DatabaseName.
Nous conservons "Memo1" et rajoutons également un bouton Button2 ayant pour libellé "AfficherReq".
Vous devriez avoir quelque chose qui ressemble à ce qui suit :
5-2-2. La requête à exécuter▲
Nous allons réaliser une jointure entre les tables ETUDIANT et FILIERE pour pouvoir afficher les étudiants avec leur spécialité.
Il s'agit donc de récupérer les champs nom, prenom de la table ETUDIANT, et nom de la table FILIERE.
Pour cela, il suffit de définir le code SQL suivant dans la propriété SQL du composant Query1.
SELECT
e.nom AS
nom, e.prenom AS
prenom, f.nom AS
filiere FROM
Etudiant e, Filiere f WHERE
e.option
=
f.id
5-2-3. Exécution de la requête et affichage▲
Nous allons commencer par ajouter une méthode afficherReq comme suit :
void
__fastcall TForm1::
afficherReq()
{
AnsiString nom =
""
;
AnsiString prenom =
""
;
AnsiString filiere =
""
;
Memo1->
Clear();
// ouverture connexion, bdd et requête
Session1->
Open();
Database1->
Open();
Query1->
Open();
// on se positionne au début
Query1->
First();
// on parcourt le résultat de la requête
while
(!
Query1->
Eof)
{
// on récupère les champs nom et prénom
nom =
Query1->
FieldByName("nom"
)->
AsString;
prenom =
Query1->
FieldByName("prenom"
)->
AsString;
filiere =
Query1->
FieldByName("filiere"
)->
AsString;
// on ajoute une ligne à notre mémo
Memo1->
Lines->
Add(nom+
" "
+
prenom+
" - "
+
filiere);
// on passe à la ligne suivante
Query1->
Next();
}
// on ferme connexion, bdd et requête
Query1->
Close();
Database1->
Close();
Session1->
Close();
}
Il suffit maintenant de relier cet méthode à l'événement OnClick de notre bouton en créant l'événement par défaut à partir de l'explorateur de classe et en rajoutant le code suivant.
void
__fastcall TForm1::
Button2Click(TObject *
Sender)
{
afficherReq();
}
Il ne reste plus qu'à exécuter pour avoir le résultat suivant :
5-3. Le fichier ACCESS utilisé▲
Le fichier utilisé est disponible ici. Néanmoins, il correspond à la version Access2000 et il vous faudra configurer votre connexion avec ODBC car les pilotes natifs ne sont pas supportés par le BDE.
Personne ne vous empêche de reproduire ce petit exemple avec un fichier de type Access95 ou Access97.