レコードセット : クエリの再実行 (ODBC)
更新 : 2007 年 11 月
このトピックの内容は、MFC ODBC クラスに該当します。
このトピックでは、Requery メンバ関数を使用してデータベースに対するクエリを再実行する (レコードセットを再表示する) 方法について説明します。
通常、以下の場合にレコードセットのクエリを再実行します。
自分またはほかのユーザーが追加したレコード、またはほかのユーザーが削除したレコードをレコードセットに反映させる場合。自分が削除したレコードは既にレコードセットから取り除かれています。
パラメータ値を変更したときに、レコードセットを最新表示する場合。
データ ソースの最新の状態のレコードセットへの反映
通常、クエリの再実行が必要になるのは、データ ソースの最新状態をレコードセットに反映させる場合です。マルチユーザー データベース環境では、レコードセットの存続中にほかのユーザーがデータを変更することがあります。他のユーザーによる変更をレコードセットに反映するしくみについては、「レコードセット : レコード更新のしくみ (ODBC)」と「ダイナセット」を参照してください。
新しいパラメータ値に基づくクエリの再実行
パラメータ値を変更して新しいレコードを選択する場合も、Requery を使用します。
ヒント : |
---|
Open を再度呼び出す場合よりもパラメータ値を変更して Requery を呼び出す場合の方が、クエリの処理速度が上がる場合があります。 |
ダイナセットのクエリ再実行とスナップショットのクエリ再実行
ダイナセットは、レコードの最新のデータを動的に表示するための手段なので、クエリを頻繁に再実行して、他のユーザーによる追加を反映させる必要があります。これに対して、スナップショットの内容は、データの表示や集計計算などを安定して行うことができるように固定されています。ただし、スナップショットでもクエリの再実行が必要な場合があります。マルチユーザー環境では、他のユーザーによるデータベースの変更がスナップショット データに反映されないからです。
レコードセット オブジェクトのクエリを再実行するには
- オブジェクトのメンバ関数 Requery を呼び出します。
レコードセットをいったん閉じてから再び開いても、Requery と同じ結果になります。どちらの場合も、新しいレコードセットにはデータ ソースの最新の状態が反映されています。
例については、「セカンド レコードセットを利用してリスト ボックスを表示する方法」を参照してください。
ヒント : |
---|
Requery のパフォーマンスを最適化するには、レコードセットのフィルタや並べ替えを変更しないようにします。Requery を呼び出す前に、パラメータの値だけを変更します。 |
Requery の呼び出しに失敗した場合は、呼び出しを再試行します。それ以外の場合は、適切な方法でアプリケーションを終了します。Requery または Open の呼び出しは、さまざまな理由から失敗することがあります。たとえば、ネットワーク エラーが発生した、既存のデータが破棄されてから新しいデータが得られるまでの間にほかのユーザーが排他的なアクセスを行った、レコードセットが結び付けられているテーブルが削除された、というような理由が考えられます。