2009-12-11 3 views
0

Voici le code:CRecordset.Open seulement retrevies un record!

CDatabase m_db; 
m_db.OpenEx(_T("DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=mydb;UID=root;PASSWORD=123123;OPTION=3;"), FALSE); 
CRecordset recSet(&m_db); 
recSet.Open(AFX_DB_USE_DEFAULT_TYPE, _T("SELECT * From articles"), CRecordset::executeDirect); 
int nRecords = recSet.GetRecordCount(); // Equals to 1! 

la table article a plus de 1000 dossiers. J'ai essayé avec différentes bases de données/tables mais le problème n'est pas résolu!

Répondre

2

C'est une limitation de la façon dont fonctionne CRecordset. Vous aurez besoin d'appeler MoveNext jusqu'à ce que IsEOF retourne TRUE, le nombre d'enregistrements sera précis.

+1

ce qu'a dit Mark. Voir http://msdn.microsoft.com/en-us/library/aa312382(VS.60).aspx pour plus d'informations sur les membres CRecordset. –

-1
int RecCount=0; 
try { 
    cr.Open(CRecordset::snapshot,"SELECT * FROM Table;", CRecordset::readOnly); 
    while (!cr.IsEOF()) { 
     RecCount=cr.GetRecordCount();cr.MoveNext();}cr.Close(); 
    } 
}