Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
FORUMS DELPHI F.A.Q DELPHI TUTORIELS DELPHI LIVRES COMPOSANTS SOURCES DEFI TELECHARGEZ DELPHI TV

dbExpress avec Delphi 6

8/5/2001

Par Henry Cesbron Lavau (Site personnel)
 

Cette page a pour but de vous aider à construire votre première application dbExpress avec Delphi 6. Suivez les commandes et captures d'écrans.


1. Introduction
2. Ce qu'il vous faut
3. Les étapes de la connexion
4. Affichage et modification d'une table
5. Pour aller plus loin


1. Introduction


Avec l'arrivée de Delphi 6, le développement d'application de base de données n'a jamais été aussi facile. Dans Delphi 6 et Interbase 6 nous avons construit une base simple en nous appuyant sur les composants InterBase. Sur la base existante, nous allons poursuivre les objectifs suivants :

  • Rendre l'application portable sous différents environnements.
  • Rendre l'application portable sur différentes bases.
  • Préparer le développement multi-tiers (ou multi-niveaux).

La portabilité du dévelopement Windows vers Linux est un choix qui avait déjà été fait dans Delphi 6 et Interbase 6 : partant d'Application CLX et utilisant les IBX, nous nous appuyions bien sur des classes présentes dans Kylix. Ici, nous remplacerons les IBX par dbExpress également présent dans Kylix.

Grâce à dbExpress, l'application devient portable sur différentes bases. Nous pourrons en effet nous connecter à :

  • DB2
  • InterBase
  • MySQL
  • Oracle

en modifiant simplement les propriétés de l'objet de connexion. Ci-dessous, nous nous connecterons à InterBase, mais il serait très facile d'appliquer notre application aux autres bases indiquées.

Bien que certains composants de dbExpress en regroupent d'autres, nous prendrons les composants élémentaires : d'une part, c'est plus instructif et d'autre part, cela permettra par la suite une séparation articulable des différents niveaux.


2. Ce qu'il vous faut


Delphi 6 Pro ou Entreprise
Delphi 6 et InterBase 6 sur CD avec la Documentation sont aussi disponible auprès du Centre Officiel de Borland : Diffus'Log - Tél : 01 34 63 07 01.
Il vous faut aussi le fichier MaDatabase.gdb résultant de l'application développée dans Delphi 6 et InterBase 6.
Note : La création de tables à travers l'IDE comme dans Delphi 6 et InterBase 6 ou par CREATE TABLE est une affaire de goût. Ceux qui préfèrent CREATE TABLE, peuvent s'inspirer de Ma première base InterBase et lancer l'ordre suivant (qui n'est volontairement pas formatté pour permettre un copier/coller dans l'Interactive SQL d'IBConsole) :

CREATE TABLE "NOMS" ( "PK_NOMS" INTEGER NOT NULL, "NOM" VARCHAR(30), "TELEPHONE" VARCHAR(20), CONSTRAINT "PK_NOMS" PRIMARY KEY ("PK_NOMS") );

3. Les étapes de la connexion


Les composants dbExpress ont pour but de gérer le flux des données de la base de données à l'interface utiilisateur, et vice-versa.

Par Fichier/Nouveau/CLX Application créez un projet.
Vous pouvez aussi faire Nouveau/Application.
L'intérêt de CLX Application est de faciliter par la suite le portage vers Kylix.

  1. Pour Fichier/Nouveau/Module de données, ajoutez un module de données.
  2. Renommez DataModule2 en DataModule1
  3. Sauvegardez en appelant Unit1 : UnitForm, Unit2 : UnitDataModule, Project2 : dbExpressDelphi6
  4. Ouvrez dbExpressDelphi6, et placez la création du DataModule avant celle de la Form:

Le scénario de liaison commence par un SQLConnection et se termine par le DataSource.

A partir de la palette, placez sur le DataModule:

  • un SQLConnection (onglet dbExpress) et
  • un DataSource (onglet DataAccess).

Cliquez droit sur SQLConnection1, et dans l'Editeur des propriétés de connexion, choisissez IBLocal.

Dans la colonne de droite, modifiez les propriétés suivantes :

Propriété Valeur
Database MaDatabase.gdb
SQLDialect 3
Cliquez sur OK. Dans l'inspecteur d'objet, vous pouvez également modifier :

Composant Propriété Valeur
SQLConnection1 LoginPrompt False
DataSource1 Name DataSourceNoms
Pouvons nous connecter DataSourceNoms à SQLConnection1 ?
Pas encore, car il manque l'espace mémoire dans lequel vont transiter les données appelé un DataSet.

Nous ajoutons donc un SQLDataSet.

Composant Propriété Valeur
SQLDataSet1 Name SQLDataSetNoms
SQLDataSetNoms SQLConnection SQLConnection1
SQLDataSetNoms CommandText select * from NOMS

Maintenant, DataSourceNoms accepte de se connecter à SQLDataSetNoms, comme on peut le voir dans la propriété DataSet de DataSourceNoms. Mais Attention. Si nous procédons ainsi, nous obtenons un curseur unidirectionnel, et nous ne pourrons pas connecter par exemple uneDBGrid à DataSourceNoms. En effet, la DBGrid envoie des demandes de déplacement bidirectionnelles ; de plus, la DBGrid peut permettre d'ajouter, de modifier ou de supprimer des rangées du DataSet. Le SQLDataSet ne permet pas cela : il lit les données du début à la fin. Un point c'est tout.

La magie de dbExpress est de permettre très simplement de rendre le curseur bi-directionnel et éditable.

Pour cela ajoutons au DataModule, à partir de l'onglet dbExpress :

  • un DataSetProvider, et
  • un ClientDataSet

et modifions les proriétés suivantes :

Composant Propriété Valeur
DataSetProvider1 Name DataSetProviderNoms
DataSetProviderNoms DataSet SQLDataSetNoms
ClientDataSet1 Name ClientDataSetNoms
ClientDataSetNoms ProviderName DataSetProviderNoms
DataSourceNoms DataSet ClientDataSetNoms
Vous avez bien noté que le DataSourceNoms est maintenant connecté, non plus directement au SQLDataSetNoms, mais au ClientDataSetNoms.
Ce faisant, il a gagné les 2 propriétés que nous recherchions : la bi-directionnalité et les possiblités de modifications.
Et ceci, sans écrire une seule ligne de code : Merci Borland, c'est tout simplement génial !

Mettons les ordres de connexion :

procedure TDataModule1.SQLConnection1Connect; begin SQLConnection1.Connected := True; end; procedure TDataModule1.ClientDataSetNomsOpen; begin ClientDataSetNoms.Open; end;
et pour s'assurer que la Database elle-même est ouverte au moment de l'ouverture du ClientDataSet, nous en faisons la vérification dans l'événement ClientDataSetNomsBeforeOpen :

procedure TDataModule1.ClientDataSetNomsBeforeOpen(DataSet: TDataSet); begin if not SQLConnection1.Connected then SQLConnection1Connect; end;

4. Affichage et modification d'une table


Pour l'UI (User Interface ou Interface Utilisateur), allons sur UnitForm, et connectons le DataModule en ajoutant aux clauses uses UnitDataModule

Nous plaçons sur la forme

  • une DBGrid (onglet Data Controls) qui présentera les données
  • le bouton de confirmation des modifications
  • et le bouton d'annulation des modifications.

et modifions les propriétés :

Composant Propriété Valeur
Form1 Name FormNoms
DBGrid1 Name DBGridNoms
Button1 Name ButtonApplyUpdates
ButtonApplyUpdates Caption Sauvegarder les modifications
Button2 Name ButtonCancelUpdates
ButtonCancelUpdates Caption Annuler les modifications
Enfin, nous ouvrons l'accès à la table à l'affichage de la forme et activons les événements OnClick des deux boutons :

procedure TFormNoms.FormShow(Sender: TObject); begin DBGridNoms.DataSource := DataModule1.DataSourceNoms; DataModule1.ClientDataSetNomsOpen; end; procedure TFormNoms.ButtonApplyUpdatesClick(Sender: TObject); begin DataModule1.ClientDataSetNoms.ApplyUpdates(-1); end; procedure TFormNoms.ButtonCancelUpdatesClick(Sender: TObject); begin DataModule1.ClientDataSetNoms.CancelUpdates; end;
Il ne reste plus qu'à compiler éxécuter par [F9].

Il suffit de saisir.

Tip :la saisie ne fonctionne que si avant de commencer à saisir on clique une fois sur Sauvegarder les modifications.
Pour ajouter une rangée, faites [Flèche bas].

Cliquez sur Sauvegarder les modifications avant de sortir de l'application.

Votre premier programme dbExpress est prêt.


5. Pour aller plus loin



Interbase
Ma première base InterBase
Delphi 6 et InterBase 6
dbExpress avec Delphi 6
Delphi 6 Relationnel
Le bon PLAN d'InterBase
MDA (Model Driven Architecture)
MDA
Programmez avec les diagrammes de Delphi 7
Les objets métiers avec ModelMaker de Delphi 7
Les Design Patterns avec ModelMaker de Delphi 7
Autres articles
Les transactions
Mise à jour de Delphi 6


Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.
Responsables bénévoles de la rubrique Delphi : NoisetteProd et Pedro - Contacter par EMail :
Vos questions techniques : forum d'entraide Delphi - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.