none
GetRecordCount() no me funciona. RRS feed

  • Pregunta

  • Aplicacion SDI generada con AppWizard utilizando ADO con #import.
    Intento saber si un recordset contiene registros.
    He probado con GetRecordCount() y con _get_RecordCount() y siempre me devuelven -1.
    He leido en la ayuda de MSDN sobre CRecordSet de MFC, que hay recorrer el recordset con MoveNext() hasta el final para poder obtener el numero de regitros.
    Lo he probado y me sigue devolviendo -1.
    bool CDlgProveedores::HayProveedores()
    {
        try
        {
            m_pRs->MoveFirst();        //Por si no estamos en el principio
            while(!m_pRs->adoEOF)   //Mientras no sea fin de recordset
                m_pRs->MoveNext();
        }
        catch(_com_error& ce)
        {
            MostrarError(ce);
            return false;
        }

        if(m_pRs->GetRecordCount() < 1) //Si no hay registros
        {
            AfxMessageBox("No hay Proveedores.");
            return false;
        }
        return true;
    }
    Tengo algunas dudas mas.
    Agradezco muchisimo cualquier ayuda(documentacion, codigo ejemplo, tutoriales, libros, etc), a ser posible en español
    lunes, 20 de noviembre de 2006 21:37

Todas las respuestas

  • La manera correcta de comprobar si un recordset está vacio en ADO es:

    if (m_pRs->adoEOF && m_pRs->BOF)
    {
    AfxMessageBox("No hay registros");
    }

    La propiedad RecordCount, no funciona con todos los tipos de Recordset. Así que no te puedes fiar.

    lunes, 20 de noviembre de 2006 22:16
  • ¡Perfecto!.

    Enormemente agradecido, te ruego que me informes como puedo aprender sobre ADO

    Pues tengo muchas preguntas y no pretendo monopolizar el foro.

     

    martes, 21 de noviembre de 2006 10:18
  • Jajjaja...

    Pues años de pegarme con ADO... y eso que ya empiezo a tenerlo un poco oxidado!!!
    Tu no te cortes en preguntar!!! Para eso son estos foros.

    martes, 21 de noviembre de 2006 21:10