Delphipage - la reference en Delphi
Accueil - Astuces - Composants - Programmes - Tutoriaux - Livres - Liens
 Sources
- Astuces
- Composants
- Programmes
- Tutoriaux
 Rechercher
- Delphipage
- Ngscan
 Ressources
- Lexique Delphi
- Livres
- News
- Patchs Delphi
 Liens
- Borland France
- CodeGear
- Les meilleurs sites


Tutoriaux - Base de données - MyBase

Présentation 

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] [Télécharger mybase.zip]

Auteur : Yoann
Site internet :
http://delphipage.free.fr/

Tous droits réservés - Contacts
Haut de la page