CRecordset::Requery
重新生成(刷新记录集。)
virtual BOOL Requery( );
返回值
非零,如果记录集成功地重新生成的;否则为0。
备注
如果任何记录返回,第一条记录成为当前记录。
为记录集中反映您或其他用户对数据源的添加和删除,必须通过调用 Requery重新生成记录集。如果记录集是动态集,它会自动反映您或其他用户对其不是现有记录的更新(不过,添加)。如果记录集是快照,则必须调用 Requery 反映由其他用户编辑以及添加和删除。
对于动态集或快照,请调用 Requery,在要重新生成记录集使用新的筛选器或排序时,或者新参数值。将新的筛选器或通过将新值以按 m_strFilter 和 m_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