CRecordset::Requery
Ricompila (aggiornare) un recordset.
virtual BOOL Requery( );
Valore restituito
Diverso da zero se il recordset è stato ricompilato correttamente; in caso contrario 0.
Note
Se i record da restituire, il primo record diventa il record corrente.
In modo che il recordset per riflettere le aggiunte e le eliminazioni che l'utente o altri utenti consiste nell'origine dati, è necessario ricompilare il recordset chiamando Requery.Se il recordset è un dynaset, viene riportata automaticamente gli aggiornamenti di l o altri utenti ai record esistenti (ma non le aggiunte).Se il recordset è uno snapshot, è necessario chiamare Requery per riflettere le modifiche apportate da altri utenti e aggiunte ed eliminazioni.
Per un dynaset o uno snapshot, una chiamata Requery ogni qualvolta si desidera ricompilare il recordset mediante nuovo filtro o l'ordinamento, o i nuovi valori del parametro.Impostare la nuova proprietà di ordinamento o di filtro assegnare nuovi valori a m_strFilter e a m_strSort chiamare Requery.Presenti nuovi parametri assegnare nuovi valori ai membri dati di parametro chiamare Requery.Se il filtro e stringhe di ordinamento sono rimasti invariati, è possibile riutilizzare la query, che migliora le prestazioni.
Se ricompilare il recordset non riesce, il recordset viene chiuso.Prima di chiamare Requery, è possibile determinare se il recordset è possibile ripetere una query chiamando la funzione membro CanRestart.CanRestart non garantisce che Requery riuscirà.
Attenzione |
---|
Chiamata Requery solo dopo aver chiamato Apri. |
Eccezioni
Questo metodo può generare eccezioni di tipo CDBException* e CMemoryException*.
Esempio
In questo esempio vengono ricompilate un recordset per applicare un ordinamento diverso.
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!"));
Requisiti
Header: afxdb.h