関連付けられたデータセットでの作業
データベースへの接続:インデックス への移動
すべてのデータベース接続コンポーネントは,アクティブなすべてのデータセットのリストを保持しており,データベースへの接続に使用します。たとえば,接続コンポーネントはこのリストを,データベースへの接続を閉じる際に,すべてのデータセットを閉じるために使用します。
ユーザーがこのリストを使用して,特定の接続コンポーネントで特定のデータベースに接続しているすべてのデータセットに対して,アクションを実行することもできます。
サーバーから切断せずにデータセットを閉じる
ユーザーが接続を閉じると,接続コンポーネントは自動的にすべてのデータセットを閉じます。しかし,データベースサーバーとの接続は切断せずに,すべてのデータセットを閉じたいこともあります。
サーバーから切断せずに開いているすべてのデータセットを閉じるには,CloseDataSets メソッドを使用します。
TADOConnection と TIBDatabase の場合,CloseDataSets を呼び出せば,接続は開いたままになります。TDatabase と TSQLConnection の場合は,さらに KeepConnection プロパティを True に設定しなければなりません。
関連付けられたデータセットを繰り返し処理する
接続コンポーネントを使用するすべてのデータセットに対して,それを閉じる処理以外の処理を実行するには,DataSets プロパティと DataSetCount プロパティを使用します。DataSets は,接続コンポーネントにリンクされている,すべてのデータセットの配列です。TADOConnection 以外のすべての接続コンポーネントの場合,このリストはアクティブなデータセットだけを含んでいます。TADOConnection のリストは,非アクティブなデータセットも含んでいます。DataSetCount は,この配列中のデータセットの数です。
メモ: 更新をキャッシュするために(汎用の TClientDataSet クライアントデータセットではなく)特別なクライアントデータセットを使用する場合,DataSets プロパティには,クライアントデータセット自体ではなく,クライアントデータセットに所有されている内部データセットが含まれます。
DataSets とともに DataSetCount を使用すると,現在アクティブなすべてのデータセットをコード中で順に処理できます。たとえば次のコードは,すべてのアクティブなデータセットについて順番に処理し,データセットのデータを使用するコントロールがあれば使用不可にします。
var
I: Integer;
begin
with MyDBConnection do
begin
for I := 0 to DataSetCount - 1 do
DataSets[I].DisableControls;
end;
end;
for (int i = 0; i < MyDBConnection->DataSetCount; i++)
MyDBConnection->DataSets[i]->DisableControls();
メモ: TADOConnection は,データセットとともに,コマンドオブジェクトもサポートしています。これらは,Commands および CommandCount プロパティを使用すれば,データセットと同じ方法で繰り返し処理を行えます。