データ モジュールを追加する(IBX 一般チュートリアル)

提供: RAD Studio
移動先: 案内検索

チュートリアル:InterBase Express を使用してデータベースにアクセスする への移動


このセクションでは、データ モジュールTDataModule)を作成します。これは、アプリケーションで使用する非ビジュアル コンポーネントを含んだフォームです。

次に示すのは、必要なものをすべて追加した TDataModule です。

TutorialIBXGeneral-DataModulePopulated.png


作成した後は、この TDataModule を他のフォームで使用することができます。

TDataModule の追加

データ モジュールをプロジェクトに追加します。[プロジェクト マネージャ]でプロジェクト名を右クリックし、[新規追加|その他...]をクリックして、[新規作成]ダイアログを表示してください。

Delphi の場合

[データ モジュール]を選択して[OK]をクリックします。

NewItemWindow.png


TDataModule を選択します。[Name]プロパティを「DmEmployee」に設定します。[OldCreateOrder]を[True]に設定します。

新しいユニットを保存します。

  • Delphi の場合、ユニットを DmCSDemo.pas という名前で保存します。

この後、この新しい TDataModule にコンポーネントを追加していきます。

データベースとトランザクションの追加

2 つの基本的なデータベース コンポーネントを追加します。TIBDatabaseTIBTransaction です。

  • さまざまなテーブルを表示する」のセクションと同じようにして、[TIBDatabase]をデータ モジュール上にドラッグします。追加した TIBDatabase をダブルクリックして[データベース コンポーネント設定]ダイアログを表示します。このダイアログ上で TIBDatabase のプロパティを次のように設定し、[OK]をクリックします。

DBCompEdtIBX.png


メモ: この例のようにアプリケーションにパスワードを埋め込むと、誰でもログインすることなくデータベースにアクセスできるようになります。

TIBDatabase の構成の最後に、[Name]を「EmployeeDatabase」に設定します。[Connected]を[True]に設定します。

ストアド プロシージャの追加

[TIBStoredProc]コンポーネントを 2 つ追加して、データベース内のストアド プロシージャを使用できるようにします。

  • モジュール上に[TIBStoredProc]を配置します。[Name]を「ShipOrderProc」に設定します。[Database]を、ドロップダウン メニューを使って「EmployeeDatabase」に設定します。[StoredProcName]をドロップダウン メニューの「SHIP_ORDER」に設定します。SHIP_ORDER は、EMPLOYEE データベースのストアド プロシージャの 1 つです。
  • モジュールに[TIBStoredProc]をもう 1 つ追加します。[Name]を「DeleteEmployeeProc」に設定します。[Database]を、ドロップダウン メニューを使って「EmployeeDatabase」に設定します。[StoredProcName]をドロップダウン メニューの「DELETE_EMPLOYEE」に設定します。

データセットの追加

モジュールに[TIBDataSet]コンポーネントを 5 つ追加します。それぞれの TIBDataSet は、EMPLOYEE データベース内の異なるデータベース テーブルに、またはテーブルが同じでも異なる方法で、アクセスします。

  • "EmployeeLookup" TIBDataSet
    • [Transaction]プロパティを「IBTransaction1」に設定します。これは既に設定されている場合もあります。
    • ドロップダウン メニューを使って[Database]プロパティを「EmployeeDatabase」に設定し、TIBDataSet をデータベースに接続します。
    • [Name]プロパティを「EmployeeLookup」に設定します。
    • "EmployeeLookup" TIBDataSet を右クリックし、[SQL の編集]を選択します。
    • CommandText プロパティを select * from EMPLOYEE に設定します。
    • TIBDataSet コンポーネントをダブルクリックしてフィールド エディタ ダイアログを開きます。空のリストを右クリックして、コンテキスト メニューの[すべてのフィールドの追加]を選択します。フィールド エディタを閉じます。
    • "EmployeeLookup" TIBDataSet を右クリックし、[データセットの編集...]を選択します。
    • キー フィールド列から "EMP_NO" を選択し、[SQL 文を生成]をクリックします。
    • [OK]ボタンをクリックしてウィザードを閉じます。
このコンポーネントは、データベース内の EMPLOYEE テーブルにアクセスするために使用します。
  • "SalesTable" TIBDataSet
    • [Transaction]プロパティを「IBTransaction1」に設定します。
    • [Database]プロパティをドロップダウン メニューの「EmployeeDatabase」に設定します。
    • [Name]プロパティを「SalesTable」に設定します。
    • "SalesTable" TIBDataSet を右クリックし、[SQL の編集]を選択します。
    • CommandText プロパティを select * from SALES に設定します。
    • TIBDataSet コンポーネントをダブルクリックしてフィールド エディタ ダイアログを開きます。空のリストを右クリックして、コンテキスト メニューの[すべてのフィールドの追加]を選択します。フィールド エディタを閉じます。
    • "SalesTable" TIBDataSet を右クリックし、[データセットの編集...]を選択します。
    • キー フィールド列から "PO_NUMBER" を選択し、[SQL 文を生成]をクリックします。
    • [OK]ボタンをクリックしてウィザードを閉じます。
このコンポーネントは、データベース内の SALES テーブルにアクセスするために使用します。
  • "CustomerTable" TIBDataSet
    • [Transaction]プロパティを「IBTransaction1」に設定します。
    • [Database]プロパティをドロップダウン メニューの「EmployeeDatabase」に設定します。
    • [Name]プロパティを「CustomerTable」に設定します。
    • "CustomerTable" TIBDataSet を右クリックし、[SQL の編集]を選択します。
    • CommandText プロパティを select * from CUSTOMER WHERE CUST_NO = :CUST_NO に設定します。
    • TIBDataSet コンポーネントをダブルクリックしてフィールド エディタ ダイアログを開きます。空のリストを右クリックして、コンテキスト メニューの[すべてのフィールドの追加]を選択します。フィールド エディタを閉じます。
    • "CustomerTable" TIBDataSet を右クリックし、[データセットの編集...]を選択します。
    • キー フィールド列から "CUST_NO" を選択し、[SQL 文を生成]をクリックします。
    • [OK]ボタンをクリックしてウィザードを閉じます。
このコンポーネントは、データベース内の CUSTOMER テーブルにアクセスするために使用します。
  • "EmployeeTable" TIBDataSet
    • [Transaction]プロパティを「IBTransaction1」に設定します。
    • [Database]プロパティをドロップダウン メニューの「EmployeeDatabase」に設定します。
    • [Name]プロパティを「EmployeeTable」に設定します。
    • "EmployeeTable" TIBDataSet を右クリックし、[SQL の編集]を選択します。
    • CommandText プロパティを select * from EMPLOYEE に設定します。
    • "EmployeeTable" TIBDataSet を右クリックし、[データセットの編集...]を選択します。
    • キー フィールド列から "EMP_NO" を選択し、[SQL 文を生成]をクリックします。
    • [OK]ボタンをクリックしてウィザードを閉じます。
このコンポーネントも、データベース内の EMPLOYEE テーブルにアクセスするために使用します。
  • "SalaryHistoryTable" TIBDataSet
    • [Transaction]プロパティを「IBTransaction1」に設定します。
    • [Database]プロパティをドロップダウン メニューの「EmployeeDatabase」に設定します。
    • [Name]プロパティを「SalaryHistoryTable」に設定します。
    • "SalaryHistoryTable" TIBDataSet を右クリックし、[SQL の編集]を選択します。
    • CommandText プロパティを select * from SALARY_HISTORY WHERE EMP_NO=:EMP_NO に設定します。
    • "SalaryHistoryTable" TIBDataSet を右クリックし、[データセットの編集...]を選択します。
    • キー フィールド列から "EMP_NO" を選択し、[SQL 文を生成]をクリックします。
    • [OK]ボタンをクリックしてウィザードを閉じます。
このコンポーネントは、データベース内の SALARY_HISTORY テーブルにアクセスするために使用します。

データ ソースの追加

モジュールに[TDataSource]コンポーネントを 4 つ追加します。これらの TDataSource は、上記の TIBDataSet とリンクされます。TDataSource コンポーネントは、TIBDataSet とデータベース対応コントロールの間のインターフェイスとなります。

  • "SalaryHistorySource" TDataSource: ドロップダウン メニューを使って、TDataSource[DataSet]を「SalaryHistoryTable」に設定します。[Name]プロパティを「SalaryHistorySource」に設定します。
  • 一部の TIBDataSet は、TDataSource にリンクして別のテーブルとの関連をセットアップする必要があります。
    • "CustomerTable" TIBDataSet を選択します。[DataSource]を、ドロップダウン メニューを使って「SalesSource」に設定します。
    • "SalaryHistoryTable" TIBDataSet を選択します。[DataSource]を、ドロップダウン メニューを使って「EmployeeSource」に設定します。

イベント ハンドラの追加

TDataModule 構築の最後のステップとして、イベント ハンドラをいくつか追加します。

  • TDataModule を選択します。[オブジェクト インスペクタ][イベント]タブをクリックします。[OnCreate]イベントをダブルクリックし、イベントのスケルトン コードを生成します。このイベントに次のコードを追加します。

Delphi の場合

 procedure TDmEmployee.DmEmployeeCreate(Sender: TObject);
 begin
   EmployeeDatabase.Open;
 end;
  • "EmployeeTable" TIBDataSet を選択します。[イベント]タブで[AfterPost]イベントをダブルクリックします。このハンドラには次のコードを記述します。
 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;
  • "EmployeeTable" TIBDataSet を選択します。[イベント]タブで[BeforeDelete]イベントをダブルクリックします。このハンドラには次のコードを記述します。
 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;

これでデータ モジュールが完成しました。このデータ モジュールは次のセクションで使用します。次に移る前に、このモジュールのコードを確認してください。SalesTablePO_NUMBER など、テーブル フィールドを表す数多くのオブジェクトが、データ モジュール クラスに自動的に追加されています。

前のチュートリアル

さまざまなテーブルを表示する

次のチュートリアル

給与変更を監査する