Annuaire v1.0.0

Description

Premier micro-projet concernant la base de données intégrée MyBase.
Programmation d'un annuaire téléphonique avec ajout, modification et effacement des enregistrements et classement alphabétique automatique.
Fourni avec le source, un tutorial sur la création d'une base MyBase avec l'IDE et la relation avec des composants TDBEdit et TDBMemo.

Source / Exemple :



  • {===============================================================================
  • Code Source : BEAUMONT Christophe
  • Version : 1.0.1
  • Date : 04 Mars 2010
*
  • Micro-projet 01 - Exemple d'utilisation de MyBase, une base de données reposant
  • sur le composant TClientDataSet et permettant de développer des applications
  • pour accéder à des données de faible taille en locale. De plus MyBase est très
  • léger à déployer puisqu'il suffit de redistribuer le programme avec "midas.dll"
  • ou bien de l'intégrer au programme en incluant "MidasLib" dans la partie "Uses".
  • Le tri alphabétique se fait automatiquement en déclarant le champ "Nom" dans la
  • propriété "IndexFieldNames" du composant TClientDataSet.
  • ===============================================================================}
  • unit f_main;
*
  • interface
*
  • uses
  • Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  • Dialogs, StdCtrls, DBCtrls, Mask, Grids, DBGrids, DB, XPMan, DBClient, MidasLib;
*
  • type
  • TMonAnnuaire = class(TForm)
  • CDS1: TClientDataSet;
  • DS1: TDataSource;
  • XPLook: TXPManifest;
  • CDS1ID: TAutoIncField;
  • CDS1Nom: TStringField;
  • CDS1Prénom: TStringField;
  • CDS1NumDomicile: TStringField;
  • CDS1NumPortable: TStringField;
  • CDS1NumTravail: TStringField;
  • CDS1Télécopie: TStringField;
  • CDS1Adresse: TStringField;
  • CDS1Email: TStringField;
  • CDS1Infos: TStringField;
  • DBGrid1: TDBGrid;
  • LabNom: TLabel;
  • DBNom: TDBEdit;
  • LabPrenom: TLabel;
  • DBPrenom: TDBEdit;
  • LabDomicile: TLabel;
  • DBDomicile: TDBEdit;
  • LabPortable: TLabel;
  • DBPortable: TDBEdit;
  • LabTravail: TLabel;
  • LabTelecopie: TLabel;
  • DBTravail: TDBEdit;
  • DBTelecopie: TDBEdit;
  • LabEmail: TLabel;
  • DBEmail: TDBEdit;
  • LabAdresse: TLabel;
  • DBAdresse: TDBMemo;
  • LabInfos: TLabel;
  • DBInfos: TDBMemo;
  • Ajouter: TButton;
  • Valider: TButton;
  • Effacer: TButton;
  • APropos: TButton;
  • Recherche: TEdit;
  • LabRecherche: TLabel;
  • procedure FormCreate(Sender: TObject);
  • procedure FormDestroy(Sender: TObject);
  • procedure EffacerClick(Sender: TObject);
  • procedure ValiderClick(Sender: TObject);
  • procedure AjouterClick(Sender: TObject);
  • procedure RechercheChange(Sender: TObject);
  • private
  • { Déclarations privées }
  • public
  • { Déclarations publiques }
  • end;
*
  • var
  • MonAnnuaire: TMonAnnuaire;
*
  • implementation
*
  • {$R *.dfm}
*
  • procedure TMonAnnuaire.ValiderClick(Sender: TObject);
  • begin
  • // Si CDS1 est en mode Insertion ou Edition
  • if CDS1.State in [dsInsert, dsEdit] then
  • // Alors on valide l'ajout ou la modification
  • CDS1.Post;
  • end;
*
  • procedure TMonAnnuaire.AjouterClick(Sender: TObject);
  • begin
  • // Ajouter un nouvel enregistrement
  • CDS1.Append;
  • end;
*
  • procedure TMonAnnuaire.EffacerClick(Sender: TObject);
  • begin
  • // On va s'assurer qu'on veut bien effacer l'enregistrement
  • if MessageDlg('Supprimer l''enregistrement ?',mtconfirmation,[mbok,mbcancel],0)=mrok then
  • // Si OK, on efface !
  • CDS1.Delete;
  • end;
*
  • procedure TMonAnnuaire.FormCreate(Sender: TObject);
  • var FileName : String;
  • begin
  • // Récupère le chemin d'accès à notre programme et ajoute le fichier binaire
  • FileName:=ExtractFilePath(Application.ExeName)+'bottin.dat';
  • // si le fichier existe
  • if FileExists(FileName) then
  • begin
  • // Alors on ouvre le contenu
  • CDS1.LoadFromFile(FileName);
  • // Et on active la base
  • CDS1.Open;
  • end
  • else
  • begin
  • // Si le fichier n'existe pas alors on efface les champs éventuels
  • CDS1.FieldDefs.Clear;
  • // Et on construit une table neuve et vide
  • CDS1.FieldDefs.Add('ID',ftAutoInc,0);
  • CDS1.FieldDefs.Add('Nom',ftString,30);
  • CDS1.FieldDefs.Add('Prénom',ftString,20);
  • CDS1.FieldDefs.Add('NumDomicile',ftString,10);
  • CDS1.FieldDefs.Add('NumPortable',ftString,10);
  • CDS1.FieldDefs.Add('NumTravail',ftString,10);
  • CDS1.FieldDefs.Add('Télécopie',ftString,10);
  • CDS1.FieldDefs.Add('Adresse',ftString,180);
  • CDS1.FieldDefs.Add('Email',ftString,100);
  • CDS1.FieldDefs.Add('Infos',ftString,200);
  • CDS1.CreateDataSet;
  • CDS1.Open;
  • end;
  • end;
*
  • procedure TMonAnnuaire.FormDestroy(Sender: TObject);
  • begin
  • // On ne quitte pas le programme sans sauvegarder nos données
  • CDS1.SaveToFile(ExtractFilePath(Application.ExeName)+'bottin.dat',dfBinary);
  • end;
*
  • procedure TMonAnnuaire.RechercheChange(Sender: TObject);
  • var Option : TLocateOptions;
  • begin
  • // Option = Ignore les majuscules et la case / Recherche partielle sur le nom
  • Option := [loCaseInsensitive]+[loPartialKey];
  • // On cherche dans le champ "Nom" le texte entré dans le TLabel
  • CDS1.Locate('Nom',Recherche.Text,Option);
  • end;
*
  • end.
*

Conclusion :


Premiers pas dans l'étude des bases de données.
Prochain programme probablement avec la relation maître-détail.

Codes Sources

A voir également

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.