Compartir a través de


Conjunto de registros: Filtrar registros (ODBC)

Actualización: noviembre 2007

Este tema se aplica a las clases ODBC de MFC.

Este tema explica cómo filtrar un conjunto de registros para que sólo seleccione un subconjunto específico de los registros disponibles. Por ejemplo, puede desear seleccionar sólo las secciones de clase de un curso determinado, como MATH101 (Matemáticas). Un filtro es una condición de búsqueda definida por el contenido de una cláusula SQL WHERE. Cuando el marco de trabajo la anexa a la instrucción SQL del conjunto de registros, la cláusula WHERE restringe la selección.

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

Para especificar un filtro en un objeto de conjunto de registros

  1. Cree un nuevo objeto de conjunto de registros (o prepare la llamada 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 con el contenido de la cláusula SQL WHERE pero no la palabra clave WHERE. Por ejemplo, utilice:

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

    y no

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

    La cadena literal "MATH101" aparece con comillas simples. En la especificación SQL de ODBC, las comillas simples se usan para denotar un literal de cadena de caracteres. Compruebe la documentación de su controlador ODBC en lo relativo al uso de comillas del sistema de administración de bases de datos (DBMS) en esta situación. Esta sintaxis también se trata más adelante, hacia el final del tema.

  3. Establezca otras opciones que necesite, como el orden de clasificación, el modo de bloqueo o los parámetros. Especificar un parámetro resulta especialmente útil. Para obtener más información sobre cómo parametrizar un filtro, vea Conjunto de registros: Parametrizar un conjunto de registros (ODBC).

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

Sugerencia:

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

Sugerencia:

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

El conjunto de registros selecciona sólo aquellos registros que cumplen la condición de búsqueda especificada. Por ejemplo, para especificar el filtro de curso descrito anteriormente (suponiendo una variable strCourseID establecida 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 de MATH101.

Observe cómo se estableció la cadena de filtro en el ejemplo anterior mediante una variable de cadena. Esta es la forma más usual. Pero suponga que deseaba especificar el valor literal 100 como identificador del curso. El código siguiente muestra cómo configurar correctamente la cadena de filtro con un valor literal:

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

Observe el uso de las comillas simples; si se establece la cadena de filtro directamente, su valor es not:

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

El uso de comillas anterior se ajusta a la especificación ODBC, pero algunos sistemas de administración de bases de datos (DBMS) pueden requerir otra norma. Para obtener más información, vea SQL: Personalizar la instrucción SQL del conjunto de registros (ODBC).

Nota:

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

Vea también

Conceptos

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)