CRecordset::Requery

重新生成(刷新记录集。)

virtual BOOL Requery( );

返回值

非零,如果记录集成功地重新生成的;否则为0。

备注

如果任何记录返回,第一条记录成为当前记录。

为记录集中反映您或其他用户对数据源的添加和删除,必须通过调用 Requery重新生成记录集。 如果记录集是动态集,它会自动反映您或其他用户对其不是现有记录的更新(不过,添加)。 如果记录集是快照,则必须调用 Requery 反映由其他用户编辑以及添加和删除。

对于动态集或快照,请调用 Requery,在要重新生成记录集使用新的筛选器或排序时,或者新参数值。 将新的筛选器或通过将新值以按 m_strFilterm_strSort 在调用 Requery之前。 通过将新值将新参数传递给参数数据成员在调用 Requery之前。 如果筛选器和排序字符串未更改,则可以重新使用查询,从而提高性能。

如果尝试重新生成记录集失败,记录集关闭的。 在调用 Requery之前,可以确定记录集是否可以通过调用 CanRestart 成员函数requeried。 CanRestart 不保证 Requery 会成功。

警告

在调用 打开后,调用 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!"));

要求

Header: afxdb.h

请参见

参考

CRecordset选件类

层次结构图

CRecordset::CanRestart

CRecordset::m_strFilter

CRecordset::m_strSort