Pervasive Data Access Components(PDAC)は、Borland Delphi と C++ Builder 環境内で、Pervasive データベース エンジンに直接アクセスできるようにする、一連の Visual Component Library(VCL)コンポーネントです。これらのコンポーネントは BDE(Borland Database Engine)の機能を置換するものです。PDAC により、Delphi と C++ Builder 開発者にとってはデータベース開発の選択肢が格段に増えます。
Pervasive Data Access Components には、次の開発環境との完全統合バージョンが用意されています。
Delphi および C++ Builder 開発ツールの今後のバージョンとの互換性に関しては、Borland がこれらの新製品をリリースするたびに保っていく予定です。
以下の開発環境についてはサポートしておりません。また、今後サポートする予定もありません。
この PDAC 製品のアップデートでは、新しい動的カーソル機能を提供するだけでなく、コンポーネントで既知の問題の修正が多数含まれています。
Delphi および C++ Builder 用の PDAC コンポーネントをインストールするには、AGDP PSQL Library からダウンロードしたファイルを実行します。
メモ:PDAC が既にインストールされている場合、アップデートされた PDAC をインストールする前にアンインストールする必要があります。 そうしないと、PDAC のインストールに失敗します。
本リリースでは以下のアップデートが適用されています。
本リリースの既知の問題を参照してください。
本リリースでは以下のアップデートが適用されています。
BookmarksEnabled というブール型の新しいプロパティが TpvQuery に追加されました。アプリケーションでブックマークを使用しない場合に、このプロパティを False に設定すると TPvQuery のパフォーマンスが向上します。デフォルト値は True です。
PvQuery.BookmarksEnabled :=False
セキュリティで保護されたデータベースに接続する場合、PDAC ではユーザー名とパスワードの入力が求められます。ユーザーがユーザー名とパスワードを入力しなくても済むようにする場合は、TPvDatabase および PvSQLDatabase で接続パラメータを設定することができます。
たとえば、
PvSession.ServerName:='ServerName';
PvSession.SessionName:='session1';
PvSession.Active:=True;
PvDatabase.AliasName:= 'DatabaseName';
PvDatabase.DatabaseName:='DB';
PvDatabase.SessionName:='session1';
PvDatabase.Params.Clear();
// リモート データベースに接続するためのユーザー名とパスワードをここで指定します。
PvDatabase.Params.Add('User Name=UserName');
PvDatabase.Params.Add('password=Password');
PvDatabase.Connected:=True;
PvTable.DatabaseName:='DB';
PvTable.SessionName:='session1';
PvTable.TableName:='person';
PvTable.Active:=True;
このリリースを使用するには、以下の手順に従います。
メモ:PDAC アプリケーションを再コンパイルしない方法をとることもできます。ただし、以下の制限が適用されます。
新機能に加え、このリリースでは以下の問題点が訂正されています。
| 問題 | 説明 |
|---|---|
| 45424 |
TParam Clear() メソッドをストアド プロシージャで使用すると、ヌル値ではなく datatype のデフォルト値が返される。
たとえば、:x と呼ぶパラメータを持つストアド プロシージャで、TParam の Clear() メソッドを介してその値にヌルを設定したと仮定します。プロシージャが実行されると、ストアド プロシージャは実際のヌル値ではなく x の datatype のデフォルト値を受け取ります。この例では、パラメータ x のデータ型は ftDate であるため、Clear() メソッドが使用されると、実際のヌルの代わりに "1899"(デフォルトの日付)を受け取ります。 |
| 45719 | PvDatabase コンポーネントを使用するリモート接続を行うために UNC パスを使用すると、ステータス コード 11 が返されます。 |
| 45463 | TPvStoredProc コンポーネントを使用する場合、日付、時刻、および日付時刻値の dataType パラメータ値は ftUnknown のデフォルト値で表示されます。 |
| 45557 | TPvTable コンポーネントが挿入モード(dsInsert)の場合、TMemoField は新しい値を受け入れません。編集モードでは、TMemoField は新しい値を受け入れます。 |
| 45309 | インデックスの変更を試みた場合のステータス 43。この問題は以下のような手順によって発生します。
|
| 45090 | TPvQuery コンポーネントを使用して "SELECT DISTINCT .." を含む SQL ステートメントを実行すると、 "複数の行が更新または削除された" というエラーが発生します。 |
| 44880 | PvTable を使用してデータベース名を変更するたびにメモリ リークが発生します。 |
| 44750 | setRange を使用するブックマークが正しく動作しません。 あるブックマークを除外する範囲を設定するのに先立ってそのブックマークを設定すると、予期せぬ結果となります。 次に、ブックマークはそのレコードを見つけて例外をスローします。 |
| 43846 | キャッシュされたレコードの削除を試行し、次にその変更をデータベースに保存すると、"無効なブックマーク" エラーが返されます。 |
| 44638 | REAL(FLOAT(4))データ型は BFLOAT(FLOAT(8))にコピーされます。
REAL データ型は PDAC の PvCreateTable 関数では無視され、DOUBLE に変換されます。その結果、コードで TPvTable を閉じると、テーブルでは REAL フィールドであるべきフィールドが DOUBLE となります。 |
| 43213 | パッケージのビルドはパフォーマンスに最適化されていません。Delphi 7 を使用する場合、デバッグ モードでコードのシングル ステップを実行すると、ソース コードを要求するウィンドウが表示されます。 |
| 44618 | PDAC Locate は、テーブルにキー値が存在しなくても True を返します。
これは、Locate のキー フィールドがテーブルの現在のインデックス フィールドのスーパーセットである場合に発生します。Locate は、レコードを見つけたことを示す True を間違って返します。 |
| 44532 | TPvQuery コンポーネントにアタッチされている clientDataSet を使用した場合、結果として EPvSqlEngineError ブックマーク エラー メッセージが得られます。 |
| 44534 | AUTOINC フィールドを使用する場合、アプリケーションによって値を設定しなければ、自動的に "0" が設定されることはありません。 |
| 44581 | クエリによっては、フィールド内のデータが永続的でない場合、グリッド内に編集可能フィールドを生成することができます。この変更を保存する際、永続的でないデータは保存されません。 |
| 44607 | テーブルのインデックスを変更すると、グリッドを使用して表示する際に、現在行が先頭行にリセットされます。 |
| 43659 | String フィールドは Update 後に切り詰められます。たとえば、このエラーは以下のシーケンスの中で発生します。
|
このリリースでは、2002 年 12 月リリース以降に報告された不具合の修正が多数含まれています。
列内で非常に大きな値を格納して扱う必要がある場合は、常に Float および Double データ型を使用してください。FLOAT か DOUBLE を使用しないと、丸めによって値が一致しない結果を受け取ったり、さらに以下のデータ型では、非常に大きな値を用いた場合にオーバーフロー状態になったりします。
丸めのエラーについては、次の表のデータ型で範囲の上限に近い場合に不正に表示あるいはフィルタリングされる可能性があります。
それぞれのデータ型で処理できる最大桁数および最大値を次の表に示します。
| Pervasive.SQL データ タイプ | PDAC 下限 | PDAC 上限 |
|---|---|---|
| BIGINT | -281474976710655 | 281474976710655 |
| CURRENCY | -28147497671.0655 | 28147497671.0655 |
| DECIMAL | -281474976710655 | 281474976710655 |
| MONEY | -281474976710655 | 281474976710655 |
| NUMERIC | -281474976710655 | 281474976710655 |
| NUMERICSA | -281474976710655 | 281474976710655 |
| NUMERICSTS | -99999999999999 | 99999999999999 |
| UBIGINT | 0 | 281474976710655 |
DECIMAL、MONEY および Numeric に関するメモ:
小数点の位置を、作成時に定義した位置に移動させる必要があります。たとえば、
新しいバージョンの BPL(DCP を伴う)を入手した場合、お使いのアプリケーションをリンクし直すことをお勧めします。これは、2002 年以降に出荷されたリリースの PDAC では特に重要です。更新されたバージョンを入手すると、新しいプロパティやメソッドによって以前の BPL と互換性を損なう場合があります。この問題に対処するには、最新のリリースを利用する前に、元の DCP ファイルを置き換えてアプリケーションをリビルドします。
詳細:BPL はすべてのプロパティとメソッドをクラス内でエクスポートします。それぞれのプロパティとメソッドは、エクスポート テーブル内で序数エントリになります。クラスのインターフェイス内の変更によって序数の変動が起こり、これによってアプリケーションが関数の不正なアドレスにアクセスすることになります。
本リリースでは、報告された多数の不具合が修正され、カーソルに関する新機能が導入されました。
PDAC はこのセクションで記載されている以外の点については従来どおり動作します。ただし、リレーショナル パフォーマンスは以前よりも速くなっています。この新しいリリースのご使用によって既存の PDAC アプリケーションに問題が生じた場合は、Pervasive Software にご連絡ください。
本リリースでは、現在以下の環境をサポートします。
これらのコンポーネントへの機能的な変更はありませんが、いくつかの問題が解決されています。
TPvQuery には CursorType プロパティが新たに加わりました。このプロパティには ctCached または ctDynamic を設定できます。次の表では、このプロパティの動作を詳しく説明します。
| カーソルの種類 | 動作 |
|---|---|
| ctCached | この設定は旧バージョンで使用可能だった完全キャッシュ、完全静的カーソル マネージャに相当します。レコードを返す前に ResultSet(結果セット)に各レコードを読み込みます。これはテーブルが大きい場合には速度が遅くなりますが、LookUp などのオペレーション用に開いた後では速くなります。 |
| ctDynamic | この設定は新しいデフォルトです。これは Pervasive.SQL エンジンの動的カーソルを使用し、ctCached と比較した場合(特に大きいテーブルを扱う場合)、ほとんどのオペレーションでパフォーマンスが大幅に向上します。
メモ:動的カーソルでは、自身またはその他のクライアントによる挿入/更新/削除を見ることができます。 |
このプロパティを変更することによって PvQuery の CursorType を変更することはできますが、これは Active が False になっている場合(実行時)に限ります。設計時にこれを変更し、クエリが Active の場合、そのクエリを非アクティブにしてからカーソルの種類を変更します(ただし、再度アクティブ化はしません)。実行時、Active が True になっている場合に PvQuery の CursorType を変更すると、例外("開いたデータセットでこのオペレーションを実行できません")がスローされます。
動的カーソル(ctDynamic)を要求したとしても、SQL ステートメントに動的カーソルを処理できない構文が含まれている場合、エンジンは接続してデータを返しますが、静的カーソルを使用します。たとえば、次のような構文が挙げられます。
カーソルが静的カーソルに変わる場合、この静的カーソルはエンジン ベースのカーソルで、ほかのクライアントによる挿入、更新または削除を見ることができません。以前のリリースの静的カーソル(カーソルの種類に ctCached を使用する)よりも正しく動作します。
カーソルが動的から静的に変わる場合は、Pervasive.SQL エンジンからそれが PDAC コンポーネントに通知され、EngineCursor という名前の読み取り専用のパブリック プロパティが設定されます。
EngineCursor プロパティは公開されていないので、設計時に[オブジェクト インスペクタ]には表示されません。このプロパティには 2 つの値があります
このプロパティは変更できませんが、クエリを開いた後にその値を確認することができます。ほかのクライアントによって行われた更新がカーソルに含まれるかどうかをアプリケーション側で認識することが重要な場合などは、このプロパティを確認してください。
PDAC では、クエリまたはテーブルを開いたときに Pervasive.SQL エンジンのバージョン(バージョン 7.94、ビルド 253.057 以降)が適切かどうかをチェックしてエンジンのバージョン依存に伴うエラーが発生するのを完全に防ぐことができるようになりました。エンジンのバージョンが適切でない場合は例外が発生し、必要なバージョンを示すメッセージが表示されます。
Borland コンパイラにはそれぞれ "redist" ディレクトリがあります。このディレクトリには、[実行時パッケージを使って構築]オプションを使ってコンパイルされたアプリケーションと一緒に配布する必要があるライブラリが含まれています。
Pervasive Direct Access Components ライブラリが、システム上にあるすべての Delphi および C++ Builder IDE に組み込まれていても、PDAC 用のインクルード パスとライブラリ パスを反映させるために、C++ Builder の[プロジェクト オプション]を設定する必要があります。これらはデフォルトのオプションとして追加することができます。そのため、Pervasive コンポーネントを使用しているすべてのプロジェクトに必要というわけではありません。C++ Buildr のインクルード パスとライブラリ パスに Pervasive Direct Access Components を追加するには、次の手順に従います。
[プロジェクト]、[オプション]をクリックして、[ディレクトリ/条件]タブをクリックします。
[インクルード パス]に
さらに[ライブラリ パス]に、
作成するすべてのプロジェクトでこれらをデフォルトにする場合には、[デフォルト]チェック ボックスをオンにし、次に[OK]をクリックしてこれらのオプションを保存します。
インクルード パスとライブラリ パスを正しく設定したら、Direct Access Components を対応する Borland コンポーネントとまったく同様に使用できるようになります。
SDK¥PDAC サブディレクトリにインストールされる PDAC2IDE.exe は、PDAC コンポーネント用の Borland Delphi 5/6/7 および C++ Builder 5/6 IDE(Integrated Development Environments)を設定します。このユーティリティは、SDK をインストールしたときに自動的に実行されますが、新しい IDE をインストールした場合や問題が発生した場合は DOS コマンド ラインで使用することができます。
インストール時、最初に IDE をアンインストールしておく必要はありません。古いエントリはインストールの前に自動的に削除されます。ファイルの削除、コピーまたはインストールは行いません。インストール プログラムでは PDAC 用の IDE を更新するだけです。
コマンドは次のように使用します。
システム上のすべての Borland IDE に PDAC をインストールするには
pdac2ide
これは、サポートされるすべての Borland 環境を見つけ、コンポーネントがパレットに表示されるよう適切なレジストリ エントリを作成し、それらのコンポーネントを使用可能にします。
システム上のすべての Borland IDE から PDAC をアンインストールするには
pdac2ide -u
特定の IDE をインストールまたはアンインストールするには
pdac2ide [-u] [D5] [D6] [D7] [C5] [C6]
1 つまたは複数の IDE をコマンド ライン上に列挙することができます。
-u パラメータはアンインストールのみを実行します。このパラメータを指定しないと、PDAC は最初にアンインストールされてから、列挙された各 IDE に再インストールされます。
また、PDAC2IDE はコンソールに書き込みを行わない「Quiet」モードの -q パラメータも受け付けます。これはバッチ ファイルに含める場合に便利です。
これは C++ Builder の .bpr(プロジェクト)ファイルを修正するユーティリティです。古いライブラリ(元の PDAC リリース)への参照を、新しいライブラリのための正しいファイル名に置き換えます。元の BPR ファイルは
FixBPR は PDAC のインストール ディレクトリ(デフォルトで c:¥pvsw¥sdk¥pdac)にインストールされます。次のように、DOS または CMD ボックスから実行できます。
このユーティリティは、元のリリースの PDAC を使用して開発した C++ Builder プロジェクトすべてについて実行する必要があります。これを行うことにより、正しいライブラリを使用してビルドされます。これは、以前の PDAC ライブラリを使用して開発されたプロジェクトについてのみ有効で、古いライブラリ名が検出されない場合は BPR ファイルには何も追加されません。このユーティリティは、bin ディレクトリにある default.bpr ファイルに対して実行する必要はありません。PDAC のインストール中に、PDAC2IDE.exe がこの機能を実行しています。
PDAC(Pervasive Direct Access Components)を使用して開発したアプリケーションの配布に関する詳細は、...¥SDK¥DOC サブディレクトリにある pdacdepl.txt テキスト ファイルを参照してください。
以下は、このリリースで既にわかっている問題点です。 Delphi 2005 IDE で PDAC のいくつかのプロパティのデータが表示されない Delphi 2005 IDE で、以下のプロパティが正しく表示されません。
この問題は、Delphi 5、6、7 を使用する場合には発生しません。
PDAC の CHM 形式のマニュアルが更新されない Javahelp および PDF 形式の PDAC マニュアルは今後のアップデートで提供します。
http://www.agtech.co.jp/products/pervasive/
http://www.agtech.co.jp/support/reference/pervasive/index.html
http://www.agtech.co.jp/download/update/pervasive/
Pervasive Software Inc. は、本ソフトウェアおよびドキュメントの使用を、利用者またはその会社に対して「現状のまま」で、かつ同梱の使用許諾契約書に記載の契約条件によってのみ許諾するものです。 Copyright (c) 1999-2006 Pervasive Software Inc. All Rights Reserved. FixBPR
PDAC アプリケーションの配布
既知の問題
番号
説明
52067
TpvSession:servername
TpvDatabase: Aliasname
TpvTable:Database
TpvBatchmove: changetablename, KeyvoilTablename
pvsqlsession:servername
pvsqldatabase: Aliasname
Tpvquery:database
Tpvstoredprocedure:database
wwpvTable1:Database
wwpvquery:Database
wwpvstoreprocedure:Database
None
リンク
免責事項
Pervasive Software Inc. は、いかなる場合にも本ソフトウェアおよび本マニュアルに記載された内容に関するその他の一切の保証を、明示的にも黙示的にも行いません。Pervasive Software Inc. は、市場性、権利、特定の目的に対する適合性、あるいは一連の取引業務や職業的な使用に関する問題などに対し、一切の保証を行わないことを明示するとともに、利用者およびその会社がこれに同意したものとします。