Hinzufügen eines Datenmoduls (Allgemeines IBX-Tutorial)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Tutorial: Mit InterBase Express auf eine Datenbank zugreifen

In diesem Abschnitt erstellen Sie ein Datenmodul (TDataModule). Dabei handelt es sich um ein Formular, das von Ihrer Anwendung verwendete nicht-visuelle Komponenten enthält.

Nach dem Hinzufügen aller Komponenten sieht das TDataModule folgendermaßen aus:

TutorialIBXGeneral-DataModulePopulated.png


Sie können dieses TDataModule auch in anderen Formularen verwenden.

Hinzufügen des Datenmoduls (TDataModule)

Klicken Sie in der Projektverwaltung mit der rechten Maustaste auf den Projektnamen, und wählen Sie dann Neue hinzufügen > Weitere..., um das Dialogfeld Objektgalerie zu öffnen.

Delphi

Wählen Sie Datenmodul, und klicken Sie auf OK.

NewItemWindow.png


Wählen Sie das neue TDataModule aus. Setzen Sie die Eigenschaft Name auf "DmEmployee". Setzen Sie OldCreateOrder auf true.

Speichern Sie die neue Unit:

  • Delphi: Speichern Sie die Unit unter dem Namen DmCSDemo.pas.

Fügen Sie nun dem neuen TDataModule Komponenten hinzu.

Hinzufügen der Datenbank und der Transaktion

Fügen Sie diese beiden zentralen Komponenten hinzu: TIBDatabase und TIBTransaction.

DBCompEdtIBX.png


Hinweis: Wenn Sie, wie in diesem Beispiel, das Passwort in die Anwendung einbetten, kann jeder auf die Datenbank ohne Anmeldung zugreifen.

Beenden Sie die Konfiguration der TIBDatabase-Komponente, indem Sie die Eigenschaft Name auf "EmployeeDatabase" setzen. Setzen Sie Connected auf true.

Hinzufügen von gespeicherten Prozeduren

Fügen Sie zur Verwendung von gespeicherten Prozeduren in der Datenbank zwei TIBStoredProc-Komponenten hinzu.

  • Platzieren Sie eine TIBStoredProc-Komponente auf dem Modul. Setzen Sie Name auf "ShipOrderProc". Setzen Sie Eigenschaft Database mithilfe des Dropdown-Menüs auf "EmployeeDatabase". Setzen Sie die Eigenschaft StoredProcName mithilfe des Dropdown-Menüs auf "SHIP_ORDER". "SHIP_ORDER" ist eine der gespeicherten Prozeduren in der Datenbank EMPLOYEE.
  • Platzieren Sie eine weitere TIBStoredProc-Komponente auf dem Modul. Setzen Sie Name auf "DeleteEmployeeProc". Setzen Sie Eigenschaft Database mithilfe des Dropdown-Menüs auf "EmployeeDatabase". Setzen Sie die Eigenschaft StoredProcName mithilfe des Dropdown-Menüs auf "DELETE_EMPLOYEE".

Hinzufügen von Datenmengen

Fügen Sie dem Modul fünf TIBDataSet-Komponenten hinzu. Jede TIBDataSet-Komponente greift auf eine andere Datenbanktabelle in der Datenbank EMPLOYEE zu oder greift auf die Tabelle auf eine andere Weise zu.

  • "EmployeeLookup" TIBDataSet
    • Setzen Sie die Eigenschaft Transaction auf "IBTransaction1". Diese Einstellung könnte bereits vorhanden sein.
    • Verbinden Sie diese TIBDataSet-Komponente mit der Datenbank, indem Sie die Eigenschaft Database mithilfe des Dropdown-Menüs auf "EmployeeDatabase" setzen.
    • Setzen Sie die Eigenschaft Name auf "EmployeeLookup".
    • Klicken Sie mit der rechten Maustaste auf die TIBDataSet-Komponente "EmployeeLookup", und wählen Sie SQL bearbeiten.
    • Setzen Sie die Eigenschaft CommandText auf select * from EMPLOYEE
    • Doppelklicken Sie auf die TIBDataSet-Komponente, um das Dialogfeld Felder-Editor anzuzeigen. Klicken Sie mit der rechten Maustaste in die leere Liste, und wählen Sie aus dem Kontextmenü Alle Felder hinzufügen. Schließen Sie den Felder-Editor.
    • Klicken Sie mit der rechten Maustaste auf die TIBDataSet-Komponente "EmployeeLookup", und wählen Sie Datenmengen-Editor.
    • Wählen Sie aus der Spalte Schlüsselfelder "EMP_NO" aus, und klicken Sie auf die Schaltfläche SQL generieren.
    • Klicken Sie auf die Schaltfläche OK, um den Experten zu schließen.
Mit dieser Komponente können Sie auf die Tabelle EMPLOYEE in der Datenbank zugreifen.
  • "SalesTable" TIBDataSet
    • Setzen Sie die Eigenschaft Transaction auf "IBTransaction1".
    • Setzen Sie die Eigenschaft Database mithilfe des Dropdown-Menüs auf "EmployeeDatabase".
    • Setzen Sie die Eigenschaft Name auf "SalesTable".
    • Klicken Sie mit der rechten Maustaste auf die TIBDataSet-Komponente "SalesTable", und wählen Sie SQL bearbeiten.
    • Setzen Sie die Eigenschaft CommandText auf select * from SALES.
    • Doppelklicken Sie auf die TIBDataSet-Komponente, um das Dialogfeld Felder-Editor anzuzeigen. Klicken Sie mit der rechten Maustaste in die leere Liste, und wählen Sie aus dem Kontextmenü Alle Felder hinzufügen. Schließen Sie den Felder-Editor.
    • Klicken Sie mit der rechten Maustaste auf die TIBDataSet-Komponente "SalesTable", und wählen Sie Datenmengen-Editor.
    • Wählen Sie aus der Spalte Schlüsselfelder "PO_NUMBER" aus, und klicken Sie auf die Schaltfläche SQL generieren.
    • Klicken Sie auf die Schaltfläche OK, um den Experten zu schließen.
Mit dieser Komponente können Sie auf die Tabelle SALES in der Datenbank zugreifen.
  • "CustomerTable" TIBDataSet
    • Setzen Sie die Eigenschaft Transaction auf "IBTransaction1".
    • Setzen Sie die Eigenschaft Database mithilfe des Dropdown-Menüs auf "EmployeeDatabase".
    • Setzen Sie die Eigenschaft Name auf "CustomerTable".
    • Klicken Sie mit der rechten Maustaste auf die TIBDataSet-Komponente "CustomerTable", und wählen Sie SQL bearbeiten.
    • Setzen Sie die Eigenschaft CommandText auf select * from CUSTOMER WHERE CUST_NO = :CUST_NO.
    • Doppelklicken Sie auf die TIBDataSet-Komponente, um das Dialogfeld Felder-Editor anzuzeigen. Klicken Sie mit der rechten Maustaste in die leere Liste, und wählen Sie aus dem Kontextmenü Alle Felder hinzufügen. Schließen Sie den Felder-Editor.
    • Klicken Sie mit der rechten Maustaste auf die TIBDataSet-Komponente "CustomerTable", und wählen Sie Datenmengen-Editor.
    • Wählen Sie aus der Spalte Schlüsselfelder "CUST_NO" aus, und klicken Sie auf die Schaltfläche SQL generieren.
    • Klicken Sie auf die Schaltfläche OK, um den Experten zu schließen.
Mit dieser Komponente können Sie auf die Tabelle CUSTOMER in der Datenbank zugreifen.
  • "EmployeeTable" TIBDataSet
    • Setzen Sie die Eigenschaft Transaction auf "IBTransaction1".
    • Setzen Sie die Eigenschaft Database mithilfe des Dropdown-Menüs auf "EmployeeDatabase".
    • Setzen Sie die Eigenschaft Name auf "EmployeeTable".
    • Klicken Sie mit der rechten Maustaste auf die TIBDataSet-Komponente "EmployeeTable", und wählen Sie SQL bearbeiten.
    • Setzen Sie die Eigenschaft CommandText auf select * from EMPLOYEE.
    • Klicken Sie mit der rechten Maustaste auf die TIBDataSet-Komponente "EmployeeTable", und wählen Sie Datenmengen-Editor.
    • Wählen Sie aus der Spalte Schlüsselfelder "EMP_NO" aus, und klicken Sie auf die Schaltfläche SQL generieren.
    • Klicken Sie auf die Schaltfläche OK, um den Experten zu schließen.
Mit dieser Komponente können Sie auch auf die Tabelle EMPLOYEE in der Datenbank zugreifen.
  • "SalaryHistoryTable" TIBDataSet
    • Setzen Sie die Eigenschaft Transaction auf "IBTransaction1".
    • Setzen Sie die Eigenschaft Database mithilfe des Dropdown-Menüs auf "EmployeeDatabase".
    • Setzen Sie die Eigenschaft Name auf "SalaryHistoryTable".
    • Klicken Sie mit der rechten Maustaste auf die TIBDataSet-Komponente "SalaryHistoryTable", und wählen Sie SQL bearbeiten.
    • Setzen Sie die Eigenschaft CommandText auf select * from SALARY_HISTORY WHERE EMP_NO=:EMP_NO.
    • Klicken Sie mit der rechten Maustaste auf die TIBDataSet-Komponente "SalaryHistoryTable", und wählen Sie Datenmengen-Editor.
    • Wählen Sie aus der Spalte Schlüsselfelder "EMP_NO" aus, und klicken Sie auf die Schaltfläche SQL generieren.
    • Klicken Sie auf die Schaltfläche OK, um den Experten zu schließen.
Mit dieser Komponente können Sie auf die Tabelle SALARY_HISTORY in der Datenbank zugreifen.

Hinzufügen von Datenquellen

Fügen Sie dem Modul vier TDataSource-Komponenten hinzu. Die TDataSource-Komponenten werden mit den TIBDataSet-Komponenten verknüpft. Eine TDataSource-Komponente dient als Schnittstelle zwischen der TIBDataSet-Datenmenge und den datensensitiven Steuerelementen.

  • "SalesSource" TDataSource. Setzen Sie die Eigenschaft TDataSource der DataSet-Komponente mithilfe des Dropdown-Menüs auf "SalesTable". Setzen Sie die Eigenschaft Name auf "SalesSource".
  • "CustomerSource" TDataSource. Setzen Sie die Eigenschaft TDataSource der DataSet-Komponente mithilfe des Dropdown-Menüs auf "CustomerTable". Setzen Sie die Eigenschaft Name auf "CustomerSource".
  • "EmployeeSource" TDataSource. Setzen Sie die Eigenschaft TDataSource der DataSet-Komponente mithilfe des Dropdown-Menüs auf "EmployeeTable". Setzen Sie die Eigenschaft Name auf "EmployeeSource".
  • "SalaryHistorySource" TDataSource. Setzen Sie die Eigenschaft TDataSource der DataSet-Komponente mithilfe des Dropdown-Menüs auf "SalaryHistoryTable". Setzen Sie die Eigenschaft Name auf "SalaryHistorySource".
  • Einige der TIBDataSet-Komponente müssen mit einer TDataSource-Komponente verknüpft werden, um eine Beziehung zu einer anderen Tabelle einzurichten.
    • Wählen Sie die TIBDataSet-Komponente "CustomerTable" aus. Setzen Sie die Eigenschaft DataSource mithilfe des Dropdown-Menüs auf "SalesSource".
    • Wählen Sie die TIBDataSet-Komponente "SalaryHistoryTable" aus. Setzen Sie die Eigenschaft DataSource mithilfe des Dropdown-Menüs auf "EmployeeSource".

Hinzufügen von Ereignisbehandlungsroutinen

Der letzte Schritt beim Erstellen des TDataModule-Moduls besteht im Hinzufügen einiger Ereignisbehandlungsroutinen.

  • Wählen Sie das TDataModule aus. Klicken Sie im Objektinspektor auf die Registerkarte Ereignisse. Doppelklicken Sie auf das Ereignis OnCreate, um ein Grundgerüst (Skeleton-Code) für das Ereignis zu erzeugen. Fügen Sie den folgenden Code für dieses Ereignis hinzu:

Delphi

 
 procedure TDmEmployee.DmEmployeeCreate(Sender: TObject);
 begin
   EmployeeDatabase.Open;
 end;
  • Wählen Sie die TIBDataSet-Komponente "EmployeeTable" aus. Doppelklicken Sie auf der Registerkarte Ereignisse auf das Ereignis AfterPost. Verwenden Sie für diese Ereignisbehandlungsroutine den folgenden Code:
 
 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;
  • Wählen Sie die TIBDataSet-Komponente "EmployeeTable" aus. Doppelklicken Sie auf der Registerkarte Ereignisse auf das Ereignis BeforeDelete. Verwenden Sie für diese Ereignisbehandlungsroutine den folgenden Code:
 
 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;

Das Datenmodul ist damit fertiggestellt; es wird im nächsten Abschnitt verwendet. Ehe Sie zum nächsten Abschnitt wechseln, sollten Sie sich den Quellcode dieses Moduls näher ansehen. Beachten Sie bitte, dass der Datenmodulklasse automatisch zahlreiche Objekte hinzugefügt wurden, die Tabellenfelder, wie z. B. SalesTablePO_NUMBER, repräsentieren.

Zurück

Anzeigen verschiedener Tabellen

Weiter

Überwachen von Gehaltsänderungen