Partekatu honen bidez:


Filter (propiedad)

Indica un filtro para los datos de un objeto Recordset de .

Configuración y valores devueltos

Establece o devuelve un valor variant, que puede contener uno de los siguientes elementos:

  • cadena Criteria: Una cadena formada por una o varias cláusulas individuales concatenadas con operadores AND o OR.

  • Matriz de marcadores: Matriz de valores de marcador únicos que apuntan a registros del objeto Recordset.

  • Valor de FilterGroupEnum.

Observaciones

Utilice la propiedad Filter de para filtrar de forma selectiva los registros de un objeto recordset de . El objeto Recordset filtrado se convierte en el cursor actual. Otras propiedades que devuelven valores basados en el de cursor de actual se ven afectados, como Propiedad AbsolutePosition (ADO), Propiedad AbsolutePage (ADO), Propiedad RecordCount (ADO)y Propiedad PageCount (ADO). Al establecer la propiedad Filter en un nuevo valor específico, se mueve el registro actual al primer registro que satisface el nuevo valor.

La cadena criteria se compone de cláusulas con el formato FieldName-Operator-Value (por ejemplo, "LastName = 'Smith'"). Puede crear cláusulas compuestas mediante la concatenación de cláusulas individuales con AND (por ejemplo, "LastName = 'Smith' AND FirstName = 'John'") o OR (por ejemplo, "LastName = 'Smith' OR LastName = 'Jones'"). Para las cadenas de criterios, use las instrucciones siguientes:

  • FieldName debe ser un nombre de campo válido del Recordset . Si el nombre del campo contiene espacios, debe incluir el nombre entre corchetes.

  • El operador debe ser uno de los siguientes: <, >, <=, >=, <>, =o LIKE.

  • Value es el valor con el que comparará los valores de campo (por ejemplo, "Smith", #8/24/95#, 12,345 o $50,00). Use comillas simples con cadenas y signos de libra (#) con fechas. En el caso de los números, puede usar decimales, signos de dólar y notación científica. Si Operator es LIKE, Value puede usar caracteres comodín. Solo se permiten los caracteres comodín asterisco (*) y porcentaje (%) y deben ser el último carácter de la cadena. El valor no puede ser null.

Nota

Para incluir comillas simples (') en el valor de filtro, use dos comillas simples para representar una. Por ejemplo, para filtrar por O'Malley, la cadena de criterios debe ser "col1 = 'O''Malley'". Para incluir comillas simples al principio y al final del valor del filtro, incluya la cadena con signos de libra (#). Por ejemplo, para filtrar por "1", la cadena de criterios debe ser "col1 = #'1'#".

  • No hay ninguna prioridad entre AND y OR. Las cláusulas se pueden agrupar entre paréntesis. Sin embargo, no se pueden agrupar cláusulas unidas por un OR y, a continuación, unir el grupo a otra cláusula con un AND, como en el siguiente fragmento de código:
    (LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'

  • En su lugar, construiría este filtro como
    (LastName = 'Smith' AND FirstName = 'John') OR (LastName = 'Jones' AND FirstName = 'John')

  • En un cláusula LIKE, puede usar un carácter comodín al principio y al final del patrón. Por ejemplo, puede usar LastName Like '*mit*'. O bien, con LIKE puede usar un carácter comodín solo al final del patrón. Por ejemplo, LastName Like 'Smit*'.

Las constantes de filtro facilitan la resolución de conflictos de registros individuales durante el modo de actualización por lotes al permitirle ver, por ejemplo, solo los registros afectados durante la última llamada al método updateBatch método.

Es posible que se produzca un error al establecer la propiedad Filter debido a un conflicto con los datos subyacentes. Por ejemplo, este error puede producirse cuando otro usuario ya ha eliminado un registro. En tal caso, el proveedor devuelve advertencias a la colección Errors Collection (ADO), pero no detiene la ejecución del programa. Un error en tiempo de ejecución solo se produce si hay conflictos en todos los registros solicitados. Use la propiedad propiedad Status Property (ADO Recordset) para buscar registros con conflictos.

Establecer la propiedad Filter en una cadena de longitud cero ("") tiene el mismo efecto que usar la constante adFilterNone .

Cada vez que se establece la propiedad Filter, la posición del registro actual se mueve al primer registro del subconjunto filtrado de registros del Recordset. Del mismo modo, cuando se borra la propiedad filter , la posición del registro actual se mueve al primer registro del Recordset.

Supongamos que un Recordset se filtra en función de un campo de algún tipo variant, como el tipo sql_variant. Se produce un error (DISP_E_TYPEMISMATCH o 80020005) cuando los subtipos del campo y los valores de filtro usados en la cadena criteria no coinciden. Por ejemplo, supongamos:

  • Un objeto recordset de (rs) contiene una columna (C) del tipo sql_variant.
  • Y a un campo de esta columna se le ha asignado un valor de 1 del tipo I4. La cadena criteria se establece en rs.Filter = "C='A'" en el campo.

Esta configuración genera el error durante el tiempo de ejecución. Sin embargo, rs.Filter = "C=2" aplicado en el mismo campo no producirá ningún error. Y el campo se filtra fuera del conjunto de registros actual.

Consulte la propiedad Bookmark Property (ADO) para obtener una explicación de los valores de marcador a partir de los cuales puede crear una matriz para usarla con la propiedad Filter.

Solo los filtros en forma de cadenas de criterios afectan al contenido de un objeto Recordset persistente . Un ejemplo de una cadena de criterios es OrderDate > '12/31/1999'. Los filtros creados con una matriz de marcadores o mediante un valor del FilterGroupEnum, no afectan al contenido del objeto Recordset persistente . Estas reglas se aplican a los conjuntos de registros creados con cursores del lado cliente o del lado servidor.

Nota

Al aplicar la marca adFilterPendingRecords a un objeto recordset filtrado y modificado en el modo de actualización por lotes, el Recordset resultante está vacío si el filtrado se basa en el campo de clave de una tabla con una sola clave y se realizó la modificación en los valores del campo de clave. El resultado recordset no estará vacío si se cumple una de las siguientes instrucciones:

  • El filtrado se basaba en campos que no son clave en una tabla con clave única.

  • El filtrado se basaba en cualquier campo de una tabla con varias claves.

  • Las modificaciones se realizaron en campos que no son clave en una tabla con clave única.

  • Las modificaciones se realizaron en cualquier campo de una tabla con varias claves.

En la tabla siguiente se resumen los efectos de adFilterPendingRecords en diferentes combinaciones de filtrado y modificaciones. En la columna izquierda se muestran las posibles modificaciones. Las modificaciones se pueden realizar en cualquiera de los campos no clavedos, en el campo de clave de una tabla con una sola clave o en cualquiera de los campos de clave de una tabla con varias claves. La fila superior muestra el criterio de filtrado. El filtrado se puede basar en cualquiera de los campos no clavedos, el campo de clave de una tabla con clave única o cualquiera de los campos de clave de una tabla con varias claves. Las celdas de intersección muestran los resultados. Un signo más de + significa que aplicar adFilterPendingRecords da como resultado un Recordset no vacío. Un signo menos de - significa un recordset vacío.

Combinaciones Sin claves Clave única Varias claves
no claves + + +
de clave única + - No disponible
varias claves + No disponible +

Se aplica a

objeto Recordset (ADO)

Consulte también

Ejemplo de propiedades Filter y RecordCount de (VB)Ejemplo de propiedades Filter y RecordCount (VC++)Clear (ADO)Optimize Property-Dynamic (ADO)