単方向結果セットの使用

提供: RAD Studio
移動先: 案内検索

クエリタイプ データセットの使用 への移動


クエリタイプのデータセットが結果セットを返すとき、その結果セットの先頭レコードへのポインタつまりカーソルも受け取ります。カーソルが指すレコードは現在アクティブなレコードです。現在のレコードは、結果セットのデータ ソースに関連付けられているデータ対応コンポーネントにフィールド値が表示されるレコードです。dbExpress を使用している場合を除き、このカーソルはデフォルトで双方向です。双方向カーソルでは、レコード間を順方向にも逆方向にも移動できます。双方向カーソルをサポートするには、多少の処理オーバーヘッドがさらに必要になるため、一部のクエリの速度が低下するおそれがあります。

TQueryTIBQuery の場合は、結果セット内を逆方向に移動できなくてもよければ、代わりに単方向カーソルを要求することにより、クエリのパフォーマンスを向上させることができます。単方向カーソルを要求するには、UniDirectional プロパティを True に設定します。

UniDirectional を設定するのは、クエリを準備して実行する前です。次のコード例では、クエリを準備して実行する前に UniDirectional を設定しています。

if not (CustomerQuery.Prepared) then
begin
  CustomerQuery.UniDirectional := True;
  CustomerQuery.Prepared := True;
end;
CustomerQuery.Open;  { returns a result set with a one-way cursor }
if (!CustomerQuery->Prepared)
{
  CustomerQuery->UniDirectional = true;
CustomerQuery->Prepared = true;
}
CustomerQuery->Open(); // Returns a result set with a one-way cursor

メモ: UniDirectional プロパティを単方向データセットと混同しないでください。単方向データセット(TSQLDataSetTSQLTableTSQLQueryTSQLStoredProc)では dbExpress を使用しますが、これは単方向カーソルしか返しません。逆方向に移動できないことに加え、単方向データセットではレコードをバッファに格納しないため、(フィルタを使用できないなど)さらに制限があります。

関連項目