Ajouter un module de données (tutoriel général IBX)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Tutoriel : Utilisation de InterBase Express pour accéder à une base de données

Dans cette section, vous allez créer un module de données (TDataModule), c'est-à-dire une fiche qui contient des composants non visuels que votre application utilise.

Voici une vue du TDataModule entièrement rempli :

TutorialIBXGeneral-DataModulePopulated.png


Après avoir créé un TDataModule, vous pouvez utiliser le module de données dans d'autres fiches.

Ajouter le TDataModule

Pour ajouter le module de données à votre projet, cliquez avec le bouton droit sur le nom du projet dans le Gestionnaire de projets, puis cliquez sur Ajouter nouveau > Autre... pour afficher la boîte de dialogue Nouveaux éléments.

Delphi

Sélectionnez Module de données et cliquez sur OK.

NewItemWindow.png


Sélectionnez le nouveau TDataModule. Définissez sa propriété Name sur "DmEmployee". Définissez OldCreateOrder sur true.

Enregistrez la nouvelle unité :

  • Pour Delphi, enregistrez l'unité dans DmCSDemo.pas.

Ajoutez maintenant des composants dans le nouveau TDataModule.

Ajouter une base de données et une transaction

Ajoutez deux composants de base de données fondamentaux : le TIBDatabase et le TIBTransaction.

DBCompEdtIBX.png


Remarque : Si vous incorporez le mot de passe dans l'application, comme c'est le cas dans cet exemple, tout utilisateur a accès à cette base de données sans se connecter.

Terminez la configuration du TIBDatabase en définissant la propriété Name sur "EmployeeDatabase". Définissez Connected sur true.

Ajouter des procédures stockées

Ajoutez deux composants TIBStoredProc pour utiliser les procédures stockées de la base de données.

  • Placez un TIBStoredProc sur le module. Définissez Name sur "ShipOrderProc". Définissez Database sur "EmployeeDatabase" depuis le menu déroulant. Définissez StoredProcName sur "SHIP_ORDER" depuis le menu déroulant. SHIP_ORDER est l'une des procédures stockées de la base de données EMPLOYEE.
  • Ajoutez un autre TIBStoredProc au module. Définissez Name sur "DeleteEmployeeProc". Définissez Database sur "EmployeeDatabase" depuis le menu déroulant. Définissez StoredProcName sur "DELETE_EMPLOYEE" depuis le menu déroulant.

Ajouter des ensembles de données

Ajoutez cinq composants TIBDataSet au module. Chaque TIBDataSet accède à une table différente de la base de données EMPLOYEE, ou accède à la table d'une autre façon.

  • TIBDataSet "EmployeeLookup"
    • Définissez la propriété Transaction sur "IBTransaction1". Cette définition a peut être déjà été effectuée.
    • Connectez ce composant TIBDataSet à la base de données en définissant sa propriété Database sur "EmployeeDatabase" à l'aide du menu déroulant.
    • Définissez la propriété Name sur "EmployeeLookup".
    • Cliquez avec le bouton droit le TIBDataSet "EmployeeLookup" et sélectionnez Modifier SQL.
    • Définissez la propriété CommandText sur select * from EMPLOYEE.
    • Double-cliquez sur le composant TIBDataSet pour afficher la boîte de dialogue Editeur de champs. Cliquez avec le bouton droit sur la liste vide et sélectionnez Ajouter tous les champs dans le menu contextuel. Fermez l'éditeur de champs.
    • Cliquez avec le bouton droit sur le TIBDataSet "EmployeeLookup" et sélectionnez Editeur d'ensemble de données.
    • Sélectionnez "EMP_NO" dans la colonne Champs clé et cliquez sur le bouton Générer SQL.
    • Cliquez sur le bouton OK pour fermer l'expert.
Vous pouvez utiliser ce composant pour accéder à la table EMPLOYEE de la base de données.
  • TIBDataSet "SalesTable"
    • Définissez la propriété Transaction sur "IBTransaction1".
    • Définissez la propriété Database sur "EmployeeDatabase" depuis le menu déroulant.
    • Définissez la propriété Name sur "SalesTable".
    • Cliquez avec le bouton droit sur le TIBDataSet "SalesTable" et sélectionnez Modifier SQL.
    • Définissez la propriété CommandText sur select * from SALES.
    • Double-cliquez sur le composant TIBDataSet pour afficher la boîte de dialogue Editeur de champs. Cliquez avec le bouton droit sur la liste vide et sélectionnez Ajouter tous les champs dans le menu contextuel. Fermez l'éditeur de champs.
    • Cliquez avec le bouton droit sur le TIBDataSet "SalesTable" et sélectionnez Editeur d'ensemble de données.
    • Sélectionnez "PO_NUMBER" dans la colonne Champs clé et cliquez sur le bouton Générer SQL.
    • Cliquez sur le bouton OK pour fermer l'expert.
Vous pouvez utiliser ce composant pour accéder à la table SALES de la base de données.
  • TIBDataSet "CustomerTable"
    • Définissez la propriété Transaction sur "IBTransaction1".
    • Définissez la propriété Database sur "EmployeeDatabase" depuis le menu déroulant.
    • Définissez la propriété Name sur "CustomerTable".
    • Cliquez avec le bouton droit sur le TIBDataSet "CustomerTable" et sélectionnez Modifier SQL.
    • Définissez la propriété CommandText sur select * from CUSTOMER WHERE CUST_NO = :CUST_NO.
    • Double-cliquez sur le composant TIBDataSet pour afficher la boîte de dialogue Editeur de champs. Cliquez avec le bouton droit sur la liste vide et sélectionnez Ajouter tous les champs dans le menu contextuel. Fermez l'éditeur de champs.
    • Cliquez avec le bouton droit sur le TIBDataSet "CustomerTable" et sélectionnez Editeur d'ensemble de données.
    • Sélectionnez "CUST_NO" dans la colonne Champs clé et cliquez sur le bouton Générer SQL.
    • Cliquez sur le bouton OK pour fermer l'expert.
Vous pouvez utiliser ce composant pour accéder à la table CUSTOMER de la base de données.
  • TIBDataSet "EmployeeTable"
    • Définissez la propriété Transaction sur "IBTransaction1".
    • Définissez la propriété Database sur "EmployeeDatabase" depuis le menu déroulant.
    • Définissez la propriété Name sur "EmployeeTable".
    • Cliquez avec le bouton droit sur TIBDataSet "EmployeeTable" et sélectionnez Modifier SQL.
    • Définissez la propriété CommandText sur select * from EMPLOYEE.
    • Cliquez avec le bouton droit sur TIBDataSet "EmployeeTable" et sélectionnez Editeur d'ensemble de données.
    • Sélectionnez "EMP_NO" dans la colonne Champs clé et cliquez sur le bouton Générer SQL.
    • Cliquez sur le bouton OK pour fermer l'expert.
Vous pouvez aussi utiliser ce composant pour accéder à la table EMPLOYEE de la base de données.
  • TIBDataSet "SalaryHistoryTable"
    • Définissez la propriété Transaction sur "IBTransaction1".
    • Définissez la propriété Database sur "EmployeeDatabase" depuis le menu déroulant.
    • Définissez la propriété Name sur "SalaryHistoryTable".
    • Cliquez avec le bouton droit sur TIBDataSet "SalaryHistoryTable" et sélectionnez Modifier SQL.
    • Définissez la propriété CommandText sur select * from SALARY_HISTORY WHERE EMP_NO=:EMP_NO.
    • Cliquez avec le bouton droit sur TIBDataSet "SalaryHistoryTable" et sélectionnez Editeur d'ensemble de données.
    • Sélectionnez "EMP_NO" dans la colonne Champs clé et cliquez sur le bouton Générer SQL.
    • Cliquez sur le bouton OK pour fermer l'expert.
Vous pouvez aussi utiliser ce composant pour accéder à la table SALARY_HISTORY de la base de données.

Ajouter des sources de données

Ajoutez quatre composants TDataSource au module. Les TDataSource sont liés aux TIBDataSet ci-dessus. Un composant TDataSource sert d'interface entre l'ensemble de données TIBDataSet et les contrôles orientés données.

  • TDataSource "SalesSource". Définissez la propriété DataSet du TDataSource sur "SalesTable" à l'aide du menu déroulant. Définissez la propriété Name sur "SalesSource".
  • TDataSource "CustomerSource". Définissez la propriété DataSet du TDataSource sur "CustomerTable" à l'aide du menu déroulant. Définissez la propriété Name sur "CustomerSource".
  • TDataSource "EmployeeSource". Définissez la propriété DataSet du TDataSource sur "EmployeeTable" à l'aide du menu déroulant. Définissez la propriété Name sur "EmployeeSource".
  • TDataSource "SalaryHistorySource". Définissez la propriété DataSet du TDataSource sur "SalaryHistoryTable" à l'aide du menu déroulant. Définissez la propriété Name sur "SalaryHistorySource".
  • Certains des TIBDataSet doivent être liés à un TDataSource pour configurer une relation avec une autre table.
    • Sélectionnez le TIBDataSet "CustomerTable". Définissez DataSource sur "SalesSource" depuis le menu déroulant.
    • Sélectionnez le TIBDataSet "SalaryHistoryTable". Définissez DataSource sur "EmployeeSource" depuis le menu déroulant.

Ajouter des gestionnaires d'événement

L'étape finale de la construction du TDataModule consiste à ajouter quelques gestionnaires d'événement.

  • Sélectionnez le TDataModule. Dans l'inspecteur d'objets, cliquez sur l'onglet Evénements. Double-cliquez sur l'événement OnCreate pour générer le code squelette de l'événement. Ajoutez le code suivant pour cet événement :

Delphi

 
 procedure TDmEmployee.DmEmployeeCreate(Sender: TObject);
 begin
   EmployeeDatabase.Open;
 end;
  • Sélectionnez le TIBDataSet "EmployeeTable". Dans l'onglet Evénements, double-cliquez sur l'événement AfterPost. Utilisez le code suivant pour ce gestionnaire :
 
 procedure TDmEmployee.EmployeeTableAfterPost(DataSet: TDataSet);
 begin
   { A change in an employee salary triggers a change in the salary history,
     so if that table is open, it needs to be refreshed now }
   with SalaryHistoryTable do if Active then Refresh;
 end;
  • Sélectionnez le TIBDataSet "EmployeeTable". Dans l'onglet Evénements, double-cliquez sur l'événement BeforeDelete. Utilisez le code suivant pour ce gestionnaire :
 
 procedure TDmEmployee.EmployeeTableBeforeDelete(DataSet: TDataSet);
 begin
   { Assign the current employee's id to the stored procedure's parameter }
   DeleteEmployeeProc.Params.ParamValues['EMP_NUM'] := EmployeeTable['EMP_NO'];
   DeleteEmployeeProc.ExecProc;          { Trigger the stored proc }
   EmployeeTable.Refresh;                { Refresh the data }
   { Block the EmployeeTable delete since the stored procedure did the work }
   Abort;
 end;

Ceci termine le module de données que vous utiliserez à la section suivante. Avant d'aller à la section suivante, examinez le code de ce module. Notez que de nombreux objets ont été ajoutés automatiquement à la classe module de données qui représente les champs de la table, tels que SalesTablePO_NUMBER.

Précédent

Visualiser diverses tables

Suivant

Surveiller les modifications des salaires