|
Tutoriaux
- Base de données - MyBase |
MyBase est un modèle d'accès aux données reposant
sur le composant TClientDataSet.
Cela permet de développer des applications pour accèder
à des données de faible taille en locale.
|
Ce
n'est pas réellement une base de données à
proprement parler. MyBase permet en effet de gérer des
données en utilisant le composant TClientDataSet d'une
certaine manière mais il n'y a pas de moteur de base
de données permettant de traiter des requêtes comme
pour des bases de données relationnelles. |
De plus, MyBase est très
léger à déployer puisqu'il suffit de redistribuer
simplement un fichier DLL d'envrion 300 Ko, "midas.dll"
sous Windows avec Delphi ou "midas.so" sous linux avec Kylix.
|
Il
est possible également d'inclure la librairie "MidasLib"
dans la partie "uses" afin de ne pas livrer le fichier
"midas.dll" avec votre programme. |
Exemple
d'utilisation avec MyBase |
Pour mettre en
pratique MyBase, nous allons réaliser un annuaire téléphonique.
MyBase peut travailler avec des fichiers XML ou binaire. Dans notre
cas, nous travaillerons avec un fichier XML : "annuaire.xml".
Ajouter un composant TClientDataSet de l'onglet "AccèsBD"
de la palette de composants.
Mettez la propriété "Active" de ce composant
à "False".
|
En
effet, si le fichier "annuaire.xml" n'existe encore
pas, il n'y a donc pas encore de données. On utilisera
par la suite, la méthode "Open" pour ouvrir
l'ensemble des données. |
Création d'une table avec l'IDE
Double-cliquer sur le composant TClienDataSet. Une fenêtre s'ouvre
alors. Elle permet la création de champs. Cliquer avec le bouton
droit de la souris pour faire apparaitre le menu surgissant. Cliquer
sur "Nouveau champ".
La fenêtre "Nouveau
champ" apparait alors.
Ajouter alors les différents
champs comme le montre le tableau ci-dessous.
Nom |
Type |
Taille |
ID |
AutoInc |
0 |
Nom |
String |
50 |
Prenom |
String |
50 |
Numero |
String |
10 |
Après avoir créer
tous les champs, cliquer sur le composant avec le bouton droit de
la souris.
Cliquer sur "Créer
un ensemble de données" pour créer la table.
Nous allons maintenant enregistrer la table sur le disque.
Cliquer de nouveau sur le composant avec le bouton droit. Le menu
surgissant possède alors d'autres options. Nous devons déterminer
le format d'enregistrement.
Choisissez alors "Enregistrer
dans une table Xml MyBase...". Enregistrer le fichier XML dans
le répertoire de votre programme sous le nom de "annuaire.xml".
Creation d'une table par code
Il est possible également de créer une table dans passer
par l'IDE mais directement par code.
procedure
TForm1.FormCreate(Sender: TObject);
var FileName: String;
begin
FileName:=ExtractFilePath(Application.ExeName)+'annuaire.xml';
if FileExists(FileName) then
begin
ClientDataSet1.LoadFromFile(FileName);
ClientDataSet1.Open;
end
else
begin
ClientDataSet1.FieldDefs.Clear;
ClientDataSet1.FieldDefs.Add('ID',ftAutoInc,0);
ClientDataSet1.FieldDefs.Add('Nom',ftString,50);
ClientDataSet1.FieldDefs.Add('Prenom',ftString,50);
ClientDataSet1.FieldDefs.Add('Numero',ftString,10);
ClientDataSet1.CreateDataSet;
end;
end; |
|
Une autre solution :
procedure
TForm1.FormCreate(Sender: TObject);
var FileName: String;
begin
FileName:=ExtractFilePath(Application.ExeName)+'annuaire.xml';
if FileExists(FileName) then
begin
ClientDataSet1.LoadFromFile(FileName);
ClientDataSet1.Open;
end
else
begin
ClientDataSet1.FieldDefs.Clear;
with ClientDataSet1.FieldDefs.AddFieldDef
do
begin
Name:='ID';
DataType:=ftAutoInc;
Size:=0;
end;
with ClientDataSet1.FieldDefs.AddFieldDef do
begin
Name:='Nom';
DataType:=ftString;
Size:=50;
end;
with ClientDataSet1.FieldDefs.AddFieldDef
do
begin
Name:='Prenom';
DataType:=ftString;
Size:=50;
end;
with ClientDataSet1.FieldDefs.AddFieldDef
do
begin
Name:='Numero';
DataType:=ftString;
Size:=10;
end;
ClientDataSet1.CreateDataSet;
end;
end; |
|
Pour enregistrer la table,
on utilise la fonction "SaveToFile" du ClientDataSet.
procedure
TForm1.FormDestroy(Sender: TObject);
begin
ClientDataSet1.SaveToFile(ExtractFilePath(Application.ExeName)+'annuaire.xml',dfXML);
end; |
|
Contenu
du fichier XML
Voici à ce que ressembles le fichier "annuaire.xml"
que l'on vient d'enregistrer.
<?xml
version="1.0" standalone="yes"?>
<DATAPACKET Version="2.0">
<METADATA>
<FIELDS>
<FIELD attrname="ID"
fieldtype="i4"
SUBTYPE="Autoinc"/>
<FIELD attrname="Nom"
fieldtype="string"
WIDTH="50"/>
<FIELD attrname="Prenom"
fieldtype="string"
WIDTH="50"/>
<FIELD attrname="Numero"
fieldtype="string"
WIDTH="10"/>
</FIELDS>
<PARAMS AUTOINCVALUE="1"/>
<PARAMS/>
</METADATA>
<ROWDATA>
</ROWDATA>
</DATAPACKET> |
|
Création
de l'annuaire téléphonique
Ajoutez un composant TDBGrid de l'onglet "ControleBD" de
la palette de composants de Delphi. Ajoutez également un composant
TDataSource de l'onglet ""AccèsBD.
Mettez la propriété "DataSet" du composant
TDataSource à "ClientDataSet1". Mettez ensuite, la
propriété "DataSource" du composant TDBGrid
à "DataSource1".
Ajoutez 7 composants TButton. Ces boutons nous permettront d'effectuer
des opérations sur notre TClientDataSet.
Ce tableau récapitule les propriétés "Caption"
des différents composants TButton.
Name |
Caption |
Button1 |
Ajouter
une personne |
Button2 |
Supprimer
une personne |
Button3 |
Modifier
une personne |
Button4 |
Premier |
Button5 |
Précédent |
Button6 |
Suivant |
Button7 |
Dernier |
Les événements
et les opérations sur le TClientDataSet des composants TButton
:
procedure
TForm1.Button1Click(Sender: TObject);
begin
//Ajouter une personne
ClientDataSet1.Insert;
end;
procedure TForm1.Button2Click(Sender:
TObject);
begin
//Supprimer une personne
ClientDataSet1.Delete;
end;
procedure TForm1.Button3Click(Sender:
TObject);
begin
//Modifier une personne
ClientDataSet1.Edit;
end;
procedure TForm1.Button4Click(Sender:
TObject);
begin
//Premier enregistrement
ClientDataSet1.First;
end;
procedure TForm1.Button5Click(Sender:
TObject);
begin
//Enregistrement précédent
ClientDataSet1.Prior;
end;
procedure
TForm1.Button6Click(Sender: TObject);
begin
//Enregistrement suivant
ClientDataSet1.Next;
end;
|
|
Lorsque que l'on veut ajouter
ou modifier une personne dans notre annuaire, il faut ensuite appeler
la méthode "Post" du TClientDataSet pour valider
les modifications.
procedure
TForm1.DBGrid1DblClick(Sender: TObject);
begin
//Ajoute ou modifie l'enregistrement
lorsque l'utilisateur réalise un double-clic
if ClientDataSet1.State in [dsInsert,
dsEdit] then
ClientDataSet1.Post;
end; |
|
MyBase |
[ 05-05-2005 ] |
Petit
annuaire téléphonique avec MyBase en
Delphi.
Télécharger : [8
Ko] [
mybase.zip]
Auteur : Yoann
Site internet : http://delphipage.free.fr/
|
|
|