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.
|