Pervasive Direct Access Components(PDAC) - 2006 年 7 月


概要

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 のインストールに失敗します。


2005 年 7 月リリース(Pervasive PSQL SDK - v9.0)

本リリースでは以下のアップデートが適用されています。

本リリースの既知の問題を参照してください。


2004 年 3 月リリース(Pervasive.SQL SDK - v8.5)

本リリースでは以下のアップデートが適用されています。

TpvQuery に追加された BookMarksEnabled プロパティ

BookmarksEnabled というブール型の新しいプロパティが TpvQuery に追加されました。アプリケーションでブックマークを使用しない場合に、このプロパティを False に設定すると TPvQuery のパフォーマンスが向上します。デフォルト値は True です。

PvQuery.BookmarksEnabled :=False

セキュリティで保護されたデータベースと PDAC

セキュリティで保護されたデータベースに接続する場合、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;
   

2003 年 7 月リリース(PDAC セキュリティ ベータ版)

このリリースには、Pervasive.SQL v8.5 リリースのための PDAC 互換性が追加されています。PDAC コンポーネントは、新しいセキュリティ機能のサポートに関し、以下のように強化されています。

このリリースを使用するには、以下の手順に従います。

  1. この PDAC セキュリティ ベータ版および Pervasive.SQL セキュリティ リリースをインストールします。
  2. 新しい PDAC DRM コンポーネントをアプリケーション環境にコピーします。
  3. PDAC アプリケーションを再コンパイルします。

    メモ: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。この問題は以下のような手順によって発生します。
  1. TPvQuery コンポーネントを使用してテーブルからすべてのレコードを削除します。
  2. 次に TPvTable を使用し、IndexName または IndexFieldNames プロパティによってそのテーブルの別のインデックスに変更します。
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 後に切り詰められます。たとえば、このエラーは以下のシーケンスの中で発生します。
  1. varchar フィールドを更新してカーソルを移動する。
  2. 2 番目のフィールドを更新し、カーソルを最初のフィールドに戻す。最初のフィールドの更新された値は失われる。


2003 年 4 月リリース

このリリースでは、2002 年 12 月リリース以降に報告された不具合の修正が多数含まれています。

このリリースでのデータ型に関する注意

列内で非常に大きな値を格納して扱う必要がある場合は、常に Float および Double データ型を使用してください。FLOAT か DOUBLE を使用しないと、丸めによって値が一致しない結果を受け取ったり、さらに以下のデータ型では、非常に大きな値を用いた場合にオーバーフロー状態になったりします。

丸めのエラーについては、次の表のデータ型で範囲の上限に近い場合に不正に表示あるいはフィルタリングされる可能性があります。

それぞれのデータ型で処理できる最大桁数および最大値を次の表に示します。

Pervasive.SQL データ タイプPDAC 下限PDAC 上限
BIGINT -281474976710655281474976710655
CURRENCY -28147497671.065528147497671.0655
DECIMAL -281474976710655281474976710655
MONEY -281474976710655281474976710655
NUMERIC -281474976710655281474976710655
NUMERICSA -281474976710655281474976710655
NUMERICSTS -99999999999999 99999999999999
UBIGINT 0281474976710655

DECIMAL、MONEY および Numeric に関するメモ:

小数点の位置を、作成時に定義した位置に移動させる必要があります。たとえば、

ランタイム ライブラリとして PDAC にリンクされるアプリケーション

新しいバージョンの BPL(DCP を伴う)を入手した場合、お使いのアプリケーションをリンクし直すことをお勧めします。これは、2002 年以降に出荷されたリリースの PDAC では特に重要です。更新されたバージョンを入手すると、新しいプロパティやメソッドによって以前の BPL と互換性を損なう場合があります。この問題に対処するには、最新のリリースを利用する前に、元の DCP ファイルを置き換えてアプリケーションをリビルドします。

詳細:BPL はすべてのプロパティとメソッドをクラス内でエクスポートします。それぞれのプロパティとメソッドは、エクスポート テーブル内で序数エントリになります。クラスのインターフェイス内の変更によって序数の変動が起こり、これによってアプリケーションが関数の不正なアドレスにアクセスすることになります。


2002 年 12 月リリース

本リリースでは、報告された多数の不具合が修正され、カーソルに関する新機能が導入されました。

PDAC はこのセクションで記載されている以外の点については従来どおり動作します。ただし、リレーショナル パフォーマンスは以前よりも速くなっています。この新しいリリースのご使用によって既存の PDAC アプリケーションに問題が生じた場合は、Pervasive Software にご連絡ください。

Borland の新しいリリースのサポート

本リリースでは、現在以下の環境をサポートします。

TPvTable とその他の Btrieve コンポーネント

これらのコンポーネントへの機能的な変更はありませんが、いくつかの問題が解決されています。

TPvQuery

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 以降)が適切かどうかをチェックしてエンジンのバージョン依存に伴うエラーが発生するのを完全に防ぐことができるようになりました。エンジンのバージョンが適切でない場合は例外が発生し、必要なバージョンを示すメッセージが表示されます。


Redist サブディレクトリ

Borland コンパイラにはそれぞれ "redist" ディレクトリがあります。このディレクトリには、[実行時パッケージを使って構築]オプションを使ってコンパイルされたアプリケーションと一緒に配布する必要があるライブラリが含まれています。


C++ Builder のインクルード パスおよびライブラリ パスへの PDAC の追加

Pervasive Direct Access Components ライブラリが、システム上にあるすべての Delphi および C++ Builder IDE に組み込まれていても、PDAC 用のインクルード パスとライブラリ パスを反映させるために、C++ Builder の[プロジェクト オプション]を設定する必要があります。これらはデフォルトのオプションとして追加することができます。そのため、Pervasive コンポーネントを使用しているすべてのプロジェクトに必要というわけではありません。C++ Buildr のインクルード パスとライブラリ パスに Pervasive Direct Access Components を追加するには、次の手順に従います。

  1. [プロジェクト]、[オプション]をクリックして、[ディレクトリ/条件]タブをクリックします。

  2. [インクルード パス]に ¥sdk¥pdac¥BCB?¥include を追加します。ここで、 は、SDK をインストールしたディレクトリを示します(C:¥PVSW がデフォルトです)。"?" の部分は使用している C++ Builder のバージョンに置き換えます。

  3. さらに[ライブラリ パス]に、¥sdk¥pdac¥BCB?¥lib¥ と、¥sdk¥pdac¥BCB?¥lib¥dcu をセミコロン(;)で区切って追加します。"?" の部分は使用している C++ Builder のバージョンに置き換えます。

  4. 作成するすべてのプロジェクトでこれらをデフォルトにする場合には、[デフォルト]チェック ボックスをオンにし、次に[OK]をクリックしてこれらのオプションを保存します。

インクルード パスとライブラリ パスを正しく設定したら、Direct Access Components を対応する Borland コンポーネントとまったく同様に使用できるようになります。


PDAC に含まれる追加プログラムに関する情報

PDAC2IDE.exe

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 パラメータも受け付けます。これはバッチ ファイルに含める場合に便利です。

FixBPR.exe

これは C++ Builder の .bpr(プロジェクト)ファイルを修正するユーティリティです。古いライブラリ(元の PDAC リリース)への参照を、新しいライブラリのための正しいファイル名に置き換えます。元の BPR ファイルは .bpr.old として保存されます。

FixBPR は PDAC のインストール ディレクトリ(デフォルトで c:¥pvsw¥sdk¥pdac)にインストールされます。次のように、DOS または CMD ボックスから実行できます。

    FixBPR 

このユーティリティは、元のリリースの PDAC を使用して開発した C++ Builder プロジェクトすべてについて実行する必要があります。これを行うことにより、正しいライブラリを使用してビルドされます。これは、以前の PDAC ライブラリを使用して開発されたプロジェクトについてのみ有効で、古いライブラリ名が検出されない場合は BPR ファイルには何も追加されません。このユーティリティは、bin ディレクトリにある default.bpr ファイルに対して実行する必要はありません。PDAC のインストール中に、PDAC2IDE.exe がこの機能を実行しています。


PDAC アプリケーションの配布

PDAC(Pervasive Direct Access Components)を使用して開発したアプリケーションの配布に関する詳細は、...¥SDK¥DOC サブディレクトリにある pdacdepl.txt テキスト ファイルを参照してください。


既知の問題

以下は、このリリースで既にわかっている問題点です。

番号 説明
52067

Delphi 2005 IDE で PDAC のいくつかのプロパティのデータが表示されない

Delphi 2005 IDE で、以下のプロパティが正しく表示されません。


TpvSession:servername
TpvDatabase: Aliasname 
TpvTable:Database

TpvBatchmove: changetablename, KeyvoilTablename

pvsqlsession:servername
pvsqldatabase: Aliasname 
Tpvquery:database
Tpvstoredprocedure:database

wwpvTable1:Database
wwpvquery:Database
wwpvstoreprocedure:Database

この問題は、Delphi 5、6、7 を使用する場合には発生しません。

None

PDAC の CHM 形式のマニュアルが更新されない

Javahelp および PDF 形式の PDAC マニュアルは今後のアップデートで提供します。


リンク


免責事項

Pervasive Software Inc. は、本ソフトウェアおよびドキュメントの使用を、利用者またはその会社に対して「現状のまま」で、かつ同梱の使用許諾契約書に記載の契約条件によってのみ許諾するものです。
Pervasive Software Inc. は、いかなる場合にも本ソフトウェアおよび本マニュアルに記載された内容に関するその他の一切の保証を、明示的にも黙示的にも行いません。Pervasive Software Inc. は、市場性、権利、特定の目的に対する適合性、あるいは一連の取引業務や職業的な使用に関する問題などに対し、一切の保証を行わないことを明示するとともに、利用者およびその会社がこれに同意したものとします。

Copyright (c) 1999-2006 Pervasive Software Inc. All Rights Reserved.