Hinzufügen eines Datenmoduls (Allgemeines IBX-Tutorial)
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:
Sie können dieses TDataModule auch in anderen Formularen verwenden.
Inhaltsverzeichnis
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.
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.
- Ziehen Sie genauso wie im Abschnitt Anzeigen verschiedener Tabellen eine TIBDatabase-Komponente auf das Datenmodul. Doppelklicken Sie auf die neue TIBDatabase-Komponente, um den Datenbankkomponenten-Editor anzuzeigen. Legen Sie die Eigenschaften für die TIBDatabase-Komponente in diesem Dialogfeld fest, und klicken Sie dann auf OK:
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.
- Fügen Sie dem TDataModule eine TIBTransaction-Komponente hinzu. Setzen Sie die Eigenschaft DefaultTransaction der TIBDatabase-Komponente auf "IBTransaction1".
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