Rebuilds (refreshes) a recordset.

virtual BOOL Requery( );

Return Value

Nonzero if the recordset was successfully rebuilt; otherwise 0.


If any records are returned, the first record becomes the current record.

In order for the recordset to reflect the additions and deletions that you or other users are making to the data source, you must rebuild the recordset by calling Requery. If the recordset is a dynaset, it automatically reflects updates that you or other users make to its existing records (but not additions). If the recordset is a snapshot, you must call Requery to reflect edits by other users as well as additions and deletions.

For either a dynaset or a snapshot, call Requery any time you want to rebuild the recordset using a new filter or sort, or new parameter values. Set the new filter or sort property by assigning new values to m_strFilter and m_strSort before calling Requery. Set new parameters by assigning new values to parameter data members before calling Requery. If the filter and sort strings are unchanged, you can reuse the query, which improves performance.

If the attempt to rebuild the recordset fails, the recordset is closed. Before you call Requery, you can determine whether the recordset can be requeried by calling the CanRestart member function. CanRestart does not guarantee that Requery will succeed.


Call Requery only after you have called Open.


This method can throw exceptions of type CDBException\* and CMemoryException\*.


This example rebuilds a recordset to apply a different sort order.

CCustomer rsCustSet(&m_dbCust);

// Open the recordset

// Use the recordset ...

// Set the sort order and Requery the recordset
rsCustSet.m_strSort = _T("L_Name, ContactFirstName");
   return;    // Unable to requery

   // Requery failed, so take action
   AfxMessageBox(_T("Requery failed!"));


Header: afxdb.h

See Also


CRecordset Class

CRecordset Members

Hierarchy Chart