Création d'une table xml par programmation.

0/5 (3 avis)

Vue 13 111 fois - Téléchargée 1 540 fois

Description

Bonne journée à tous

voila un petit exemple qui montre; comment créer une table xml.

en réalité le présent programme est la suite du programme que j'ai déposé tout à l'heure
"Gestionnaire de contacts".

Grâce à ce modeste travail comme vous le voyer, vous aller apprendre:

1- Comment créer une table xml par programmation.
2- Comment exploiter une table xml.
3- Comment créer un un composant TClientDataSource.
4- Comment exlpoiter une table existante.
5- Comment enregister la table à l'aide d'une boitte de dialigue.
6- et d'autres que vous aller découvrire vous même.

Avant de terminer, je souhaite que mon travail vous fournira beaucoup d'idées.

A la fin je vous souhaite bonne chance et plein de succès.

Source / Exemple :


unit AFirst;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ExtCtrls, DBCtrls, Grids, DBGrids,DB,DBClient;

type
  Txmltable = class(TForm)
    MainMenu: TMainMenu;
    Fichier: TMenuItem;
    Crerlatable: TMenuItem;
    N1: TMenuItem;
    Quitter: TMenuItem;
    Sauvegarder: TMenuItem;
    Ouvrire: TMenuItem;
    SaveDialog: TSaveDialog;
    Panel1: TPanel;
    DBGrid: TDBGrid;
    Panel2: TPanel;
    DBNavigator: TDBNavigator;
    OpenDialog: TOpenDialog;
    procedure CrerlatableClick(Sender: TObject);
    procedure SauvegarderClick(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure QuitterClick(Sender: TObject);
    procedure OuvrireClick(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  xmltable: Txmltable;
  CDSet:TClientDataSet;
implementation

{$R *.dfm}
uses   DataModule;

procedure Txmltable.CrerlatableClick(Sender: TObject);
begin
// c bien de vérifier l'existance d'un composant avant de créer la table

// Créer un TClientDataSet
CDSet:= TClientDataSet.Create(nil); // n'oubliez pas d'ajouter DBClient aux uses
// avec CDSet faire
With CDSet.FieldDefs do
begin // bedut
        Clear;                       // Effacer tous les champs
        Add('Reference',ftAutoInc,0);// n'oublie pas d'ajouter DB aux uses
        Add('Nom',ftString,40);      // ajouter le champs nom de type string et de taille 40
        Add('Prenom',ftString,40);
        Add('Adresse',ftString,40);
        Add('Ville',ftString,20);
        Add('Paye',ftString,30);
        Add('Tel_Portable',ftString,40);
        Add('Tel_Bureau',ftString,40);
        Add('Groupe',ftString,20);
        Add('Notes',ftMemo,255);     // Ajouter Notes de type Memo et de taille 255
        Add('Photo',ftGraphic,0);    // Ajouter Photo de type graphique
end; // fin
CDSet.CreateDataSet;// créer le CDSet
//CDSet.Free;         // Libérer CDSet
Sauvegarder.Enabled:=true; // activer l'item sauvegarder
ShowMessage('La table a été crée avec succès');
end;

procedure Txmltable.SauvegarderClick(Sender: TObject);
begin
SaveDialog.FileName:='BaseRepTel.xml';        // le nom du fichier du SaveDialog
if SaveDialog.Execute then                    // Si SaveDialog est exécuté
CDSet.SaveToFile(SaveDialog.FileName);        // enregistrer notre table
CDSet.Free;                                   // Libérer CDSet
Sauvegarder.Enabled:=false;                   // Désactiver l'item Sauvegarder
end;

procedure Txmltable.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:=False; // empécher la fermeture de l'application
// Afficher un message de confirmation
if MessageDlg('Etes vous sûre de vouloir quitter?', mtConfirmation, [mbYes, mbNo], 0)
// si oui est choisi
= mrYes then
// Terminer le programme
Application.Terminate;
end;

procedure Txmltable.QuitterClick(Sender: TObject);
begin
if MessageDlg('Etes vous sûre de vouloir quitter?', mtConfirmation, [mbYes, mbNo], 0)
// si non est choisi annuler
= mrNo then Exit;
// Terminer le programme
Application.Terminate;
end;

procedure Txmltable.OuvrireClick(Sender: TObject);
begin
if OpenDialog.Execute then// Si OpenDialog est exécuté
begin
Data.CDSet.Active:=false;// Désactiver CDSet
Data.CDSet.LoadFromFile(OpenDialog.FileName); // charger le fichier séléction
Data.CDSet.Active:=true;// Activer CDSet
end;
end;

end.
_____________________________________________
unit DataModule;

interface

uses
  SysUtils, Classes, DB, DBClient;

type
  TData = class(TDataModule)
    DS: TDataSource;
    CDSet: TClientDataSet;
    procedure DataModuleCreate(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Data: TData;

implementation

{$R *.dfm}

procedure TData.DataModuleCreate(Sender: TObject);
begin

if FileExists('BaseRepTel.xml') then
begin
CDSet.LoadFromFile('BaseRepTel.xml');
CDSet.Open;
end else
begin
With CDSet.FieldDefs do
begin
        Clear;
        Add('Reference',ftAutoInc,0);
        Add('Nom',ftString,40);
        Add('Prenom',ftString,40);
        Add('Adresse',ftString,40);
        Add('Ville',ftString,20);
        Add('Paye',ftString,30);
        Add('Tel_Portable',ftString,40);
        Add('Tel_Bureau',ftString,40);
        Add('Groupe',ftString,20);
        Add('Notes',ftMemo,0);
        Add('Photo',ftGraphic,0);
end;
CDSet.CreateDataSet;
CDSet.SaveToFile('BaseRepTel.xml');
end;
end;

end.

Conclusion :


Toutes critiques, contributions, commentaires, dans le sens d'améliorer les bienvenues.

bonne programmation a tous.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017
19 mars 2008 à 13:43
Efectivement c'est plus clair

Merci
Saluttaions
HAFTARIFOUAD Messages postés 256 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 6 janvier 2011
19 mars 2008 à 12:24
Salut Mr: yvessimon
essaiez de consulter ce lien:

http://www.tetraedre.com/advanced/xml.php

Aprés vous aller découvrire pour quoi vous avez trouvé une arboredcence et non pas un tableu

bon courage.
yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017
19 mars 2008 à 09:41
Bonjour,

Quand je click sur le ficier BaseRepTel
j'ai l'arborescence xml mais pas un tableau ?

Salutations

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.