« ☆TMS Advanced ToolBars & Menusでの文字化けが解決しました。 | トップページ | ☆パスの一部を省略してファイル名を表示する。 »

☆Paradoxに代わるもの

初めに断っておきますが、前回のデベロッパーキャンプで紹介されていた サードパーティ製コンポーネントAbsolute Databaseの話です。 (RAD Studio 2007の新機能ではありません)
ComponentAce社のAbsolute Databaseは、DBエンジンのインストールやDLLも不要でEXEのみで実行可能です。個人利用であれば、フリーで使えます。次のような登録のお願い?(nag screen)は表示されますけどね。

Abs1

ComponentAceのホームページより

For trial and personal use.
No limitations at runtime when database is used in single-user mode 
(1 database connection). 
On IDE startup a nag screen is shown. 
In multi-user mode (file-server), nag screen is shown outside IDE


CodeGear 高橋智宏氏がいろいろ試した中でも、Paradox同等機能(実際は同等以上)及び移項のしやすさを考えると一番いいんじゃないかと話されておられました。そのAbsolute Databaseについて、Paradoxファイルを変換してDBGridに表示するまでを詳細に書いてみますね。


[インストール]

Absolute Database Personal Editionをダウンロードします。
2007/09/08現在、Product Version 5.14となっています。

ComponentAce ダウンロードのページ

インストール後、ツールパレットには、AbsoluteDBというカテゴリと、次の4つのコンポーネントが追加されました。

Abs2


では、早速使ってみます。
今回使うParadoxファイルは、biolife.dbです。
デフォルトではC:\Program Files\Common Files\CodeGear Shared\Dataにあります。

大切なデータベースなので、変換中に壊れたりすると困るので、c:\biolifeというフォルダを作成し、そこに次のファイルをにコピーします。
biolife.db
biolife.mb
biolife.px 


[Paradox]

まず、このParadoxファイルを表示させてみます。 フォームにTable1、DataSource1、DBGrid1、DBMemo1、DBImage1を配置し、次のように設定します。
[Table1]
Table1.DatabaseName := 'c:\biolife';
Table1.TableNam := 'biolife.db';
Table1.Active := True;

[DataSource1]
DataSource1.DataSet := Table1;

[DBGrid1]
DBGrid1.DataSource := DataSource1;

[DBMemo1]
DBMemo1.DataSource := DataSource1;
DBMemo1.DataField := 'Notes';

[DBImage1]
DBImage1.DataSource := DataSource1;
DBImage1.DataField := 'Graphic';
DBImage1.Stretch := True;

実行させるとこのようになります。

Paradox



[AbsoluteDatabase]

次にAbsoluteDatabaseです。
まず、ParadoxファイルをAbsoluteDatabaseに変換します。 AbsoluteDatabaseには、Paradoxファイルを変換するためのプログラム、DBImportExport.exeというものが用意されていますので、それを実行します。
デフォルトではC:\Program Files\ComponentAce\AbsoluteDatabase\Utils\Binにあります。
インポートするのかエクスポートするのかを選択します。今回はもちろん、インポートです。

Adi1


今回はAliasではなく、フォルダのファイル変換を選択します。

Adi2


変換するファイルを選択します。

Adi3


変換後のデータベース名を入力します。

Adi4


無事変換できました。

Adi5


ABSBiolife.absというファイルができています。今回は、一つのテーブルですが、複数のテーブルやインデックスファイルも一つのファイルにまとめられて管理しやすくなります。

Adi6


Paradoxの表示に使ったフォームに、ABSDatabase1、ABSTable1を配置し下記のように設定します
(貼り付けようとすると例の登録のお願い?が表示されました。気持ちはわかりますが、何度も表示させると逆効果じゃないかな?)
[ABSDatabase1]
ABSDatabase1.DatabaseFileName := 'c:\biolife\ABSbiolife.abs';
ABSDatabase1.DatabaseName := 'FirstABS';

[ABSTable1]
ABSTable1.DatabaseName := 'FirstABS';
ABSTable1.TableName := 'biolife';

[DataSource1]
DataSource1.DataSet := 'ABSTable1';

ここでコンパイルすると
[DCC エラー] Unit1.pas(7): F1026 ファイル 'ABSMain.dcu' が見つかりません
とエラーが表示されました。

オプション→環境オプション→ライブラリ-Win32→ ライブラリパスを確認すると
C:\Program Files\ComponentAce\AbsoluteDatabase\Lib\Delphi 2007 and C++ Builder 2007
あれ登録されてる??

でもコンパイルできないので、プロジェクト→オプション→ディレクトリ/条件→検索パスに
C:\Program Files\ComponentAce\AbsoluteDatabase\Lib\Delphi 2007 and C++ Builder 2007
と入力し、実行しました。

Abs



同じプログラムでABSTableをABSQuery1に変更して、試してみましたが問題なく表示されています。
今回は、導入に当たっての話で終わりますが、、Paradoxの一番の弱点である、共有使用時の更新や5万件以上のデータの扱いについても機会があれば検証してみたいと思います。
(今回のプログラムを複数起動させるには ABSDatabase1.MultiUser := True; とします。)

ComponentAce
http://www.componentace.com/


第6回 CodeGearデベロッパーキャンプ  資料ダウンロード
【T3】C++Builderテクニカルセッション
「C++Builder 2007の新機能と活用のポイント」
CodeGear 高橋智宏 氏
プレゼンテーション資料:PDF(389KB)

|

« ☆TMS Advanced ToolBars & Menusでの文字化けが解決しました。 | トップページ | ☆パスの一部を省略してファイル名を表示する。 »