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.
Nachdem 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 den Projektnamen in der Projektverwaltung mit der rechten Maustaste an, 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 dessen 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 Stored Procedures
Fügen Sie zur Verwendung von Stored Procedures in der Datenbank zwei TIBStoredProc-Komponenten hinzu.
- Platzieren Sie eine TIBStoredProc-Komponente auf dem Modul. Setzen Sie die Eigenschaft Name auf "ShipOrderProc". Wählen Sie im Dropdown-Menü der Eigenschaft Database den Eintrag "EmployeeDatabase" aus. Wählen Sie im Dropdown-Menü der Eigenschaft StoredProcName den Eintrag "SHIP_ORDER" aus. "SHIP_ORDER" ist eine der Stored Procedures in der Datenbank EMPLOYEE.
- Platzieren Sie eine weitere TIBStoredProc-Komponente auf dem Modul. Setzen Sie die Eigenschaft Name auf "DeleteEmployeeProc". Wählen Sie im Dropdown-Menü der Eigenschaft Database den Eintrag "EmployeeDatabase" aus. Wählen Sie im Dropdown-Menü der Eigenschaft StoredProcName den Eintrag "DELETE_EMPLOYEE" aus.
Hinzufügen von Tabellen
Fügen Sie dem Modul fünf TIBTable-Komponenten hinzu. Jede TIBTable-Komponente greift auf eine andere Datenbanktabelle in der Datenbank EMPLOYEE zu oder greift auf die Tabelle auf eine andere Weise zu.
- "EmployeeLookup" TIBTable
- Setzen Sie die Eigenschaft Transaction auf "IBTransaction1". Diese Einstellung könnte bereits vorhanden sein.
- Verbinden Sie diese TIBTable-Komponente mit der Datenbank, indem Sie die Eigenschaft Database im Dropdown-Menü auf "EmployeeDatabase" setzen.
- Wählen Sie im Dropdown-Menü der Eigenschaft TableName den Eintrag "EMPLOYEE" aus.
- Setzen Sie die Eigenschaft Name auf "EmployeeLookup".
- Doppelklicken Sie auf die TIBTable-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.
- Wählen Sie im Dropdown-Menü der Eigenschaft IndexFieldNames den Eintrag "EMP_NO" aus.
- Setzen Sie die Eigenschaft StoreDefs auf true.
- Mit dieser Komponente können Sie auf die Tabelle EMPLOYEE in der Datenbank zugreifen.
- "SalesTable" TIBTable
- Setzen Sie die Eigenschaft Transaction auf "IBTransaction1".
- Wählen Sie im Dropdown-Menü der Eigenschaft Database den Eintrag "EmployeeDatabase" aus.
- Wählen Sie im Dropdown-Menü der Eigenschaft TableName den Eintrag "SALES" aus.
- Setzen Sie die Eigenschaft Name auf "SalesTable".
- Doppelklicken Sie auf die TIBTable-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.
- Wählen Sie im Dropdown-Menü der Eigenschaft IndexFieldNames den Eintrag "PO_NUMBER" aus.
- Mit dieser Komponente können Sie auf die Tabelle SALES in der Datenbank zugreifen.
- "CustomerTable" TIBTable
- Setzen Sie die Eigenschaft Transaction auf "IBTransaction1".
- Wählen Sie im Dropdown-Menü der Eigenschaft Database den Eintrag "EmployeeDatabase" aus.
- Wählen Sie im Dropdown-Menü der Eigenschaft TableName den Eintrag "CUSTOMER" aus.
- Setzen Sie die Eigenschaft Name auf "CustomerTable".
- Doppelklicken Sie auf die TIBTable-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.
- Wählen Sie im Dropdown-Menü der Eigenschaft IndexFieldNames den Eintrag "CUST_NO" aus.
- Mit dieser Komponente können Sie auf die Tabelle CUSTOMER in der Datenbank zugreifen.
- "EmployeeTable" TIBTable
- Setzen Sie die Eigenschaft Transaction auf "IBTransaction1".
- Wählen Sie im Dropdown-Menü der Eigenschaft Database den Eintrag "EmployeeDatabase" aus.
- Wählen Sie im Dropdown-Menü der Eigenschaft TableName den Eintrag "EMPLOYEE" aus.
- Setzen Sie die Eigenschaft Name auf "EmployeeTable".
- Doppelklicken Sie auf die TIBTable-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.
- Wählen Sie im Dropdown-Menü der Eigenschaft IndexFieldNames den Eintrag "EMP_NO" aus.
- Klicken Sie im Objektinspektor bei der Eigenschaft FieldDefs auf die Ellipsen-Schaltfläche (...), um den Stringlisten-Editor anzuzeigen. Klicken Sie mit der rechten Maustaste in die Felderliste, und wählen Sie aus dem Kontextmenü Alles markieren. Drücken Sie
Entf, um alle Einträge zu entfernen. Schließen Sie das Dialogfeld. - Klicken Sie im Objektinspektor bei der Eigenschaft IndexDefs auf die Ellipsen-Schaltfläche (...), um den Stringlisten-Editor anzuzeigen. Klicken Sie mit der rechten Maustaste in die Liste, und wählen Sie aus dem Kontextmenü Alles markieren. Drücken Sie
Entf, um alle Einträge zu entfernen. Schließen Sie das Dialogfeld.
- Mit dieser Komponente können Sie auch auf die Tabelle EMPLOYEE in der Datenbank zugreifen.
- "SalaryHistoryTable" TIBTable
- Setzen Sie die Eigenschaft Transaction auf "IBTransaction1".
- Wählen Sie im Dropdown-Menü der Eigenschaft Database den Eintrag "EmployeeDatabase" aus.
- Wählen Sie im Dropdown-Menü der Eigenschaft TableName den Eintrag "SALARY_HISTORY" aus.
- Setzen Sie die Eigenschaft Name auf "SalaryHistoryTable".
- Doppelklicken Sie auf die TIBTable-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.
- Wählen Sie im Dropdown-Menü der Eigenschaft IndexFieldNames den Eintrag "EMP_NO" aus.
- Klicken Sie im Objektinspektor bei der Eigenschaft FieldDefs auf die Ellipsen-Schaltfläche (...), um den Stringlisten-Editor anzuzeigen. Klicken Sie mit der rechten Maustaste in die Felderliste, und wählen Sie aus dem Kontextmenü Alles markieren. Drücken Sie
Entf, um alle Einträge zu entfernen. Schließen Sie das Dialogfeld. - Klicken Sie im Objektinspektor bei der Eigenschaft IndexDefs auf die Ellipsen-Schaltfläche (...), um den Stringlisten-Editor anzuzeigen. Klicken Sie mit der rechten Maustaste in die Liste, und wählen Sie aus dem Kontextmenü Alles markieren. Drücken Sie
Entf, um alle Einträge zu entfernen. Schließen Sie das Dialogfeld.
- 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 TIBTable-Komponenten verknüpft. Eine TDataSource-Komponente dient als Schnittstelle zwischen der TIBTable-Datenmenge und den datensensitiven Steuerelementen.
- "SalesSource" TDataSource. Setzen Sie die Eigenschaft DataSet der TDataSource-Komponente im Dropdown-Menü auf "SalesTable". Setzen Sie die Eigenschaft Name auf "SalesSource".
- "CustomerSource" TDataSource. Setzen Sie die Eigenschaft DataSet der TDataSource-Komponente im Dropdown-Menü auf "CustomerTable". Setzen Sie die Eigenschaft Name auf "CustomerSource".
- "EmployeeSource" TDataSource. Setzen Sie die Eigenschaft DataSet der TDataSource-Komponente im Dropdown-Menü auf "EmployeeTable". Setzen Sie die Eigenschaft Name auf "EmployeeSource".
- "SalaryHistorySource" TDataSource. Setzen Sie die Eigenschaft DataSet der TDataSource-Komponente im Dropdown-Menü auf "SalaryHistoryTable". Setzen Sie die Eigenschaft Name auf "SalaryHistorySource".
- Einige der TIBTable-Komponente müssen mit einer TDataSource-Komponente verknüpft werden, um eine Beziehung zu einer anderen Tabelle einzurichten.
- Wählen Sie die "CustomerTable" TIBTable aus. Wählen Sie im Dropdown-Menü der Eigenschaft MasterSource den Eintrag "SalesSource" aus. Setzen Sie die Eigenschaft MasterFields auf "CUST_NO".
- Wählen Sie die "SalaryHistoryTable" TIBTable aus. Wählen Sie im Dropdown-Menü der Eigenschaft MasterSource den Eintrag "EmployeeSource" aus. Setzen Sie die Eigenschaft MasterFields auf "EMP_NO".
Hinzufügen von Ereignisbehandlungsroutinen
Der letzte Schritt beim Erstellen des TDataModule-Moduls besteht im Hinzufügen einiger Ereignisbehandlungsroutinen.
- Wählen Sie das TDataModule-Modul aus. Klicken Sie im Objektinspektor auf die Registerkarte Ereignisse. Doppelklicken Sie auf das Ereignis OnCreate, um 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 "EmployeeTable" TIBTable 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 "EmployeeTable" TIBTable 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 fertig gestellt; 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


