データの取得

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

dbExpress コンポーネントの使い方:インデックス への移動

データソースを指定したら,アプリケーションでアクセスする前にデータを取得する必要があります。データセットがデータを取得したら,データソースを通してデータセットにリンクされたデータベース対応コントロールは自動的にデータ値を表示し,プロバイダを通してデータセットにリンクされたクライアントデータセットにはレコードを入力できます。

ほかのデータセットと同様に,dbExpress データセットにはデータを取得する 2 つの方法があります。

1 つは,Active' プロパティを設計時にオブジェクトインスペクタで設定するか,実行時にコード内で設定します。



 CustQuery.Active := True;



 CustQuery->Active = true;



もう 1 つは,実行時に Open メソッドを呼び出します。



 CustQuery.Open;



 CustQuery->Open();



Active プロパティや Open メソッドは,サーバーからレコードを取得する単方向データセットに対して使用します。このレコードが SELECT 問い合わせ(CommandTypectTable の場合自動生成問い合わせを含む)から得られるか,それともストアドプロシージャから得られるかは,問題になりません。

データセットの準備

問い合わせやストアドプロシージャをサーバー上で実行する前に,それを「準備する」必要があります。データセットを準備すると,dbExpress とサーバーが SQL 文とパラメータのリソースを割り当てます。CommandTypectTable の場合,これはデータセットが SELECT 問い合わせを生成するときです。サーバーによってバインドされないパラメータは,この時点で問い合わせに追加されます。

ActiveTrue に設定するか,Open メソッドを呼び出したときに,単方向データセットは自動的に準備されます。データセットを閉じると,文を実行するために割り当てられていたリソースは解放されます。問い合わせまたはストアドプロシージャを複数回実行する場合は,最初に開く前に明示的にデータセットを準備することによって処理効率を改善できます。明示的にデータセットを準備するには,Prepared プロパティを True に設定します。



 CustQuery.Prepared := True;



 CustQuery->Prepared = true;



データセットを明示的に準備する場合,文を実行するために割り当てられたリソースは,PreparedFalse にするまで解放されません。

(たとえば,パラメータ値または SortFieldNames プロパティを変更した場合)実行前に必ずデータセットの準備ができているようにするには,Prepared プロパティを false に設定します。

複数データセットの取得

一部のストアドプロシージャは,複数のレコードセットを返します。データセットを開くと,データセットは最初のレコードセットだけを取得します。それ以外のレコードセットにアクセスするには,次のように NextRecordSet メソッドを呼び出します。



 var
   DataSet2: TCustomSQLDataSet;
   nRows: Integer;
 begin
   DataSet2 := SQLStoredProc1.NextRecordSet;
   ...



 TCustomSQLDataSet *DataSet2 = SQLStoredProc1->NextRecordSet();



NextRecordSet メソッドは,次のレコードのセットへのアクセスを提供する,新しく作成された TCustomSQLDataSet コンポーネントを返します。つまり NextRecordSet を初めて呼び出すと,2 番目のレコードセットのデータセットを返します。NextRecordSet をもう一度呼び出すと 3 番目のデータセットを返し,こうしてレコードセットがなくなるまで続きます。それ以上のデータセットがなくなると,NextRecordSetnil を返します。

関連項目