CRecordset::Requery
レコードセットを再構築 (再表示) します。
virtual BOOL Requery( );
戻り値
レコードセットが再作成できた場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
複数のレコードが返されたときは、先頭のレコードが現在のレコードになります。
ユーザー自身またはほかのユーザーがデータ ソースに行った追加や削除をレコードセットに反映させるには、Requery 関数を呼び出してレコードセットを再度ビルドします。 レコードセットがダイナセットの場合、ユーザー自身またはほかのユーザーが行った既存のレコードへの更新 (追加は除きます) は自動的に反映されます。 レコードセットがスナップ ショットの場合は、ほかのユーザーによる追加、削除、編集を反映するには、Requery を呼び出す必要があります。
ダイナセットでもスナップショットでも、新しいフィルターや並べ替え、または新しいパラメーターを使ってレコードセットを再作成する場合はいつでも、Requery 関数を呼び出します。 Requery 関数を呼び出す前に、m_strFilter と m_strSort に新しい値を代入して、フィルターや並べ替えの新しい属性を設定します。 Requery を呼び出す前に、パラメーター データ メンバーに新しい値を代入して、新しいパラメーターを設定します。 フィルターや並べ替えの文字列に変更がないときは、クエリを再利用できます。これによりパフォーマンスが向上します。
レコードセットのリビルドに失敗すると、レコードセットは閉じます。 Requery を呼び出す前に、CanRestart メンバー関数を呼び出してレコードセットがクエリを再実行できるかどうかを調べることができます。 CanRestart は Requery の成功を保証しません。
ヒント
Open を呼び出した後に限り、Requery を呼び出してください。
例外
このメソッドは、CDBException* 型の例外と CMemoryException* 型の例外をスローできます。
使用例
この例は、別の並べ替え順でレコードセットを再作成します。
CCustomer rsCustSet(&m_dbCust);
// Open the recordset
rsCustSet.Open();
// Use the recordset ...
// Set the sort order and Requery the recordset
rsCustSet.m_strSort = _T("L_Name, ContactFirstName");
if(!rsCustSet.CanRestart())
return; // Unable to requery
if(!rsCustSet.Requery())
// Requery failed, so take action
AfxMessageBox(_T("Requery failed!"));
必要条件
**ヘッダー:**afxdb.h