Delphi Programming / Object Pascal

[掲載 2015年10月02日] [更新 2015年10月02日] Delphi サンプルプログラム集 |
| 638_Absolute Database ( BDE + Paradox からの移行 ) |
| 動作確認等 |
Windows 7 U64(SP1) + Delphi XE(UP1) Pro
Absolute Database v.7.61 Personal Edition |
 |
638_AbsoluteDB.zip [2,604 KB] 2015年10月02日版 (EXE 同梱) |
| ComponentAce 社の Absolute Database |
|
Delphi XE7 からは BDE が添付されなくなりました。
BDE は、開発環境で使用するには簡単に利用できて便利なのですが、実行環境でのインストール作業は少し面倒です。BDE + Paradox のように手軽に利用可能なデータベースとして、ComponentAce 社が提供している Absolute Database があります。
2015年10月02日現在のバージョンは v.7.61 です。Delphi 4 から Delphi XE8 までに対応しています。本ページは、その紹介記事です。
Absolute Database を使用したアプリケーションの配布は、データベースのファイルと EXE だけです。データベースとしてのインストール作業は必要ありません。JET エンジンデータベースと同じで、拡張子が .abs のファイルがデータベースで、その中に複数の表を格納する方式となっています。
|
|
今回は、ComponentAce 社の、以下のダウンロードのページから Personal Edition をダウンロードしてテストしています。Personal Edition は個人利用であれば無料で利用できます。
インストールは非常に簡単です。添付の install.exe を実行するだけです。
インストールして、Delphi の IDE を起動すると、下図のように、販売促進 (?) のダイアログが現れます。このダイアログは、フォームにコンポーネントを配置する時も表示されます。
|
 |
図1
インストール後に IDE を起動した時に現れるダイアログ |
 |
図2
登録されたコンポーネント類 |
| Absolute Database には、以下のように、多くのデモプログラムが添付されています。 |
 |
図3
添付のデモプログラム |
| 02_Paradox のデータを Absolute Database 用に変換 |
Absolute Database には 2015年10月02日現在、2 つのユーティリティが付属しています。
これらのユーティリティはソースコード付きです。
DBImportExport.exe は、Paradox のデータを Absolute Database のデータに変換したりするプログラムです。 |
 |
図4
付属のユーティリティ類 |
今回のテスト用に、Paradox のデータベースのデータを、Absolute Database に変換してみました。
下図の手順で実行しました。 |
 |
図5
DBImportExport.exe を起動
- BDE のデータベースからインポートするので
[import table from BDE/ODBC] を選択
|
 |
図6
フォルダから選択とする |
 |
図7
変換元の表のファイルを選択
- ここでは以下を選択
biofile.db
customer.db
|
 |
図8
データベースのファイル名を指定
- 拡張子は .abs
- 指定したファイルがない場合は新規に作成される
- 既存のファイルの場合は、上書きの確認ダイアログが、表単位で表示される
- ここでは ABStest.abs という名前にした
|
 |
図9
変換終了 |
|
DBManager.exe は、データベースの管理用のプログラムです。
データベースの新規作成やデータベース関係の操作ができます。かっての Delphi に付属していたデータベースデスクトップ (Database Desktop) や SQL エクスプローラと同じような機能があります。
下図は、前項の操作で作成した ABStest.abs を開いて表示しているところです。
Absolute Database
をインストールすると、拡張子 .abs が DBManager.exe に関連付けされます.
拡張子が .abs のファイルをダブルクリックすると、DBManager.exe が起動します。
|
 |
図10
DBManager.exe の実行画面 |
| 04_TABSDatabase + TABSTable |
|
Absolute Database には多くのデモプログラムが添付されています。サンプルを掲載するまでもないのですが、簡単な動作確認だけしてみました。
TABSTable を使用した簡単な動作確認用のテストです。
TABSDatabase でデータベースのファイル名とデータベース名を設定します。TABSTable でデータベースの表名を指定して TDBGrid にデータを表示します。
データベースのファイルは、上の操作で作成した ABStest.abs を使用しています。
|
 |
図11
設計時画面 |
 |
図12
実行結果 |
リスト1
TABSDatabase でデータベースの設定をして TABSTable で操作する例 |
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ABSMain, Grids, DBGrids;
type
TForm1 = class(TForm)
ABSDatabase1: TABSDatabase;
ABSTable1: TABSTable;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure Button1Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//=============================================================================
// フォーム生成時の処理
// 全てオブジェクトインスペクタで設定可能
//=============================================================================
procedure TForm1.FormCreate(Sender: TObject);
begin
//データ表示用コントロール関係設定
DataSource1.DataSet := ABSTable1;
DBGrid1.DataSource := DataSource1;
//TABSDatabaseでデータベースのファイル名とデータベース名を設定
//データベース名は任意
ABSDatabase1.DatabaseFileName := ExpandFileName('../ABStest.abs');
ABSDatabase1.DatabaseName := 'MyABS_Database';
//TABSTableで操作する対象のデータベース名と表名を指定する
ABSTable1.DatabaseName := ABSDatabase1.DatabaseName;
ABSTable1.TableName := 'customer';
end;
//=============================================================================
// フォームが閉じる時の処理
//=============================================================================
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
ABSDatabase1.Close;
end;
//=============================================================================
// TableをOpenしてデータをTDBGridに表示
//=============================================================================
procedure TForm1.Button1Click(Sender: TObject);
begin
ABSTable1.Active := True;
end;
end.
| 05_TABSDatabase + TABSQuery |
TABSQuery を使用した簡単な動作確認用のテストです。
TABSDatabase でデータベースのファイル名とデータベース名を設定します。TABSQuery で SQL 文を実行して、TDBGrid にクエリの結果としてのデータを表示します。
データベースのファイルは、上の操作で作成した ABStest.abs を使用しています。 |
 |
図13
設計時画面
|
リスト2
TABSDatabase でデータベースの設定をして TABSQuery で操作する例 |
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ABSMain, Grids, DBGrids;
type
TForm1 = class(TForm)
ABSDatabase1: TABSDatabase;
ABSQuery1: TABSQuery;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure Button1Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//=============================================================================
// フォーム生成時の処理
// 全てオブジェクトインスペクタで設定可能
//=============================================================================
procedure TForm1.FormCreate(Sender: TObject);
begin
//データ表示用コントロール関係設定
DataSource1.DataSet := ABSQuery1;
DBGrid1.DataSource := DataSource1;
//TABSDatabaseでデータベースのファイル名とデータベース名を設定
//データベース名は任意
ABSDatabase1.DatabaseFileName := ExpandFileName('../ABStest.abs');
ABSDatabase1.DatabaseName := 'MyABS_Database';
//TABSQueryで操作する対象のデータベース名を指定する
ABSQuery1.DatabaseName := ABSDatabase1.DatabaseName;
end;
//=============================================================================
// フォームが閉じる時の処理
//=============================================================================
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
ABSDatabase1.Close;
end;
//=============================================================================
// クエリの実行
//=============================================================================
procedure TForm1.Button1Click(Sender: TObject);
begin
ABSQuery1.Close;
ABSQuery1.SQL.Clear;
ABSQuery1.SQL.Add('select * from customer');
ABSQuery1.Open;
end;
end.
|