CRecordset::Requery
更新 : 2007 年 11 月
レコードセットを再構築 (再表示) します。
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