Compartir a través de


Conjunto de registros: Filtrar registros (ODBC)

Este tema es aplicable a las clases ODBC de MFC.

En este tema se explica cómo filtrar un conjunto de registros para que seleccione solo un subconjunto determinado de los registros disponibles. Por ejemplo, puede que desee seleccionar solo las secciones de clase de un curso determinado, como MATH101. Un filtro es una condición de búsqueda definida por el contenido de una cláusula WHERE de SQL. Cuando el marco lo anexa a la instrucción SQL del conjunto de registros, la cláusula WHERE restringe la selección.

Debe establecer el filtro de un objeto de conjunto de registros después de construir el objeto, pero antes de llamar a su función miembro Open (o antes de llamar a la función miembro Requery para un objeto de conjunto de registros existente a cuya función miembro Open se haya llamado anteriormente).

Para especificar un filtro para un objeto de conjunto de registros

  1. Construya un nuevo objeto de conjunto de registros (o prepárese para llamar a Requery para un objeto existente).

  2. Establezca el valor del miembro de datos m_strFilter del objeto.

    El filtro es una cadena terminada en null que contiene el contenido de la cláusula WHERE de SQL, pero no la palabra clave WHERE. Por ejemplo, use:

    m_pSet->m_strFilter = "CourseID = 'MATH101'";
    

    not

    m_pSet->m_strFilter = "WHERE CourseID = 'MATH101'";
    

    Nota:

    La cadena literal "MATH101" se muestra con comillas simples arriba. En la especificación SQL de ODBC, se usan comillas simples para indicar un literal de cadena de caracteres. Consulte la documentación del controlador ODBC para conocer los requisitos de comillas de DBMS en esta situación. Esta sintaxis también se describe más cerca del final de este tema.

  3. Establezca cualquier otra opción que necesite, como el criterio de ordenación, el modo de bloqueo o los parámetros. Especificar un parámetro es especialmente útil. Para obtener información sobre cómo parametrizar el filtro, vea Conjunto de registros: Parametrización de un conjunto de registros (ODBC).

  4. Llame a Open para el nuevo objeto (o a Requery para un objeto abierto previamente).

Sugerencia

El uso de parámetros en el filtro es potencialmente el método más eficaz para recuperar registros.

Sugerencia

Los filtros de conjunto de registros son útiles para combinar tablas y para usar parámetros basados en la información obtenida o calculada en el entorno de ejecución.

El conjunto de registros selecciona solo los registros que cumplen la condición de búsqueda que especificó. Por ejemplo, para especificar el filtro de curso descrito anteriormente (suponiendo una variable strCourseID establecida actualmente, por ejemplo, en "MATH101"), haga lo siguiente:

// Using the recordset pointed to by m_pSet

// Set the filter
m_pSet->m_strFilter = "CourseID = " + strCourseID;

// Run the query with the filter in place
if ( m_pSet->Open( CRecordset::snapshot, NULL, CRecordset::readOnly ) )

// Use the recordset

El conjunto de registros contiene registros para todas las secciones de clase para MATH101.

Observe cómo se estableció la cadena de filtro en el ejemplo anterior mediante una variable de cadena. Este es el uso típico. Pero supongamos que quería especificar el valor literal 100 para el identificador del curso. En el código siguiente se muestra cómo establecer correctamente la cadena de filtro con un valor literal:

m_strFilter = "StudentID = '100'";   // correct

Observe el uso de caracteres de comillas simples; si establece la cadena de filtro directamente, la cadena de filtro no es:

m_strFilter = "StudentID = 100";   // incorrect for some drivers

Las comillas mostradas anteriormente se ajustan a la especificación ODBC, pero algunos DBMS pueden requerir otros caracteres de comillas. Para obtener más información, vea SQL: Personalizar la instrucción SQL del conjunto de registros (ODBC).

Nota:

Si decide invalidar la cadena SQL predeterminada del conjunto de registros pasando su propia cadena SQL a Open, no debe establecer un filtro si la cadena personalizada tiene una cláusula WHERE. Para obtener más información sobre cómo invalidar el valor predeterminado de SQL, vea SQL: Personalizar la instrucción SQL del conjunto de registros (ODBC).

Consulte también

Conjunto de registros (ODBC)
Conjunto de registros: Ordenar registros (ODBC)
Conjunto de registros: Cómo se seleccionan los registros (ODBC)
Conjunto de registros: Actualizar los registros (ODBC)
Conjunto de registros: Bloquear registros (ODBC)