給与変更を監査する(IBX 一般チュートリアル)
チュートリアル:InterBase Express を使用してデータベースにアクセスする への移動
「データ モジュールを追加する」のセクションで作成した TDataModule を使って従業員の給与変更を監視するダイアログを追加します。
コンポーネントを追加すると、フォームは以下のようになります。
目次
フォームの作成
プロジェクトに別の VCL フォームを追加します。[プロジェクト マネージャ]で、プロジェクト名を右クリックし、コンテキスト メニューからメニュー項目[新規追加|VCL フォーム]を選択します。
新しいフォームのプロパティを以下のように設定します。
- [Caption]を「Salary Change Auditing」に設定します。
- [Name]を「FrmTriggerDemo」に設定します。
- フォームの[Height]を 340 に、[Width]を 390 に、それぞれ変更します。
- [OldCreateOrder]を[True]に設定します。
フォームを保存します。
- Delphi の場合は、ファイルを Frmtrigg.pas という名前で保存します。
このフォームで TDataModule を利用するには、以下のようにします。
- Delphi の場合は、Frmtrigg.pas の
implementation
セクションの冒頭に以下の行を追加します。
uses DmCSDemo;
ビジュアル コンポーネントの追加
"DmCSDemo" TDataModule でデータベース コンポーネントを使用するので、ここではデータベース コンポーネントを追加する必要はありません。
- [TPanel]コンポーネントを 3 つ追加し、次の図のように配置します。これらの TPanel は、ビジュアル コンポーネントを配置するためのフレームワークとなります。それらのサイズを変更して、フォーム全体を埋めます。
- データベース レコードのナビゲーション用に、TDBNavigator インスタンスを "Panel1" に追加します。[DataSource]を、ドロップダウン メニューを使って[DmEmployee.EmployeeSource]に設定します。このデータ ソースは TDataModule から提供されることに注意してください。[VisibleButtons]プロパティで、[
nbInsert
]と[nbDelete
]以外のすべてのチェック ボックスをオンにします。TDBNavigator のツール ボタンのヒントが表示されるように、[ShowHint]プロパティを[True]に設定します。
- "Panel1"の左端に TBitBtn インスタンスを配置します。以下のプロパティを設定します。
- "Panel2" に TDBGrid インスタンスを配置します。そのサイズを変更して、TPanel いっぱいまで拡大します。[DataSource]を、ドロップダウン メニューを使って[DmEmployee.EmployeeSource]に設定します。
- "Panel3" に別の TDBGrid インスタンスを配置します。そのサイズを変更して、TPanel いっぱいまで拡大します。[DataSource]を、ドロップダウン メニューを使って[DmEmployee.SalaryHistorySource]に設定します。
イベント ハンドラの追加
フォームのイベント ハンドラを追加します。フォームを選択し、[オブジェクト インスペクタ]の[イベント]タブで、[OnShow]イベントをダブルクリックします。このイベントのイベント ハンドラには以下のコードを使用します。
procedure TFrmTriggerDemo.FormShow(Sender: TObject);
begin
DmEmployee.EmployeeTable.Open;
DmEmployee.SalaryHistoryTable.Open;
end;
テーブル表示フォームの表示
「メイン フォームを作成する」のセクションで作成したメイン フォームを一部変更します。このフォームに、たった今作成したフォームを表示するためのボタンを追加します。
Delphi の場合
Frmmain.pas の implementation
セクションの冒頭にある uses
句に以下の行を追加して、追加したばかりの FrmTrigg ユニットがメイン フォームで認識されるようにします。
uses
FrmTrigg, { The Trigger Demo }
FrmViews; { The View Demo }
「メイン フォームを作成する」のセクションで追加した TButton と同様に、Frmmain フォームに別の TButton を追加します。TButton.Caption を「Salary Change &Trigger Demo」に設定します。TButton.Name を「BtnTrigg」に設定します。その次に、Frmmain.pas の[デザイン]タブで新しい TButton をダブルクリックして、そのボタンのイベント ハンドラを追加します。そのイベント ハンドラには以下のコードを使用します。
procedure TFrmLauncher.BtnTriggClick(Sender: TObject);
begin
FrmTriggerDemo.ShowModal;
end;
アプリケーションの実行
アプリケーションをビルドして実行します。以下のようなメイン フォームが表示されます。
新しい TButton "Salary Change Trigger Demo" をクリックすると、以下の新しいフォームが表示されます。
上部の TDBGrid には EMPLOYEE テーブル内のデータが表示されますが、その中から従業員を 1 人選択します。この従業員の給与を変更した後、TDBNavigator の後編集ボタン(チェック マーク ボタン)をクリックしてデータベースを更新します。そうすると、SALARY_HISTORY テーブルが表示される下部の TDBGrid は更新されて、この変更が反映されます。
このテーブルが更新されるのは、"DmCSDemo" TDataModule に TDmEmployee.EmployeeTableAfterPost
というイベント ハンドラがあるためです。このイベントは、"DmCSDemo" TDataModule 内の "EmployeeTable" TIBDataSet に対してポストが行われた後で発生します。TDmEmployee.EmployeeTableAfterPost
は、"SalaryHistoryTable" TIBDataSet がアクティブになっている場合、それを更新するので、結果的に表示が更新されます。