Propiedad Filter (ADO)
Se aplica a: Access 2013, Office 2013
Indica un filtro para datos en un objeto Recordset .
Configuración y valores devueltos
Establece o devuelve un valor de tipo Variant que puede contener uno de los siguientes:
Cadena de criterios: una cadena compuesta por una o más cláusulas concatenadas mediante operadores AND u OR.
Matriz de marcadores: una matriz de valores de marcador exclusivos que señalan a registros del objeto Recordset.
Un valor FilterGroupEnum.
Comentarios
Use la propiedad Filter para seleccionar registros de un objeto Recordset. El objeto Recordset filtrado se convierte en el cursor actual. Esto afecta a otras propiedades que devuelven valores basados en el cursor actual, como AbsolutePosition, AbsolutePage, RecordCount y PageCount. Esto se debe a que al establecer la propiedad Filter en un valor específico, se moverá el registro actual al primer registro que satisfaga 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 concatenando cláusulas individuales con AND (por ejemplo, "LastName = 'Smith' AND FirstName = 'John'") o OR (por ejemplo, "). Puede crear cláusulas compuestas concatenando cláusulas individuales con AND (por ejemplo, "LastName = 'Smith' AND FirstName = 'John'") o OR (por ejemplo, "LastName = 'Smith' OR LastName = 'Jones'"). Utilice las siguientes directrices para las cadenas de criterios:
NombreCampo debe ser un nombre de campo válido del objeto Recordset. Si el nombre de campo contiene espacios, debe ir entre corchetes.
El operador debe ser uno de los siguientes: <, , ><=, >=, <>, =, o LIKE.
Value es el valor con el que se compararán 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. Con los números puede utilizar comas decimales, signos de dólar y notación científica. Si Operador es LIKE, Valor puede utilizar comodines. Sólo se permiten los comodines de asterisco (*) y porcentaje (%) y deben ocupar el último puesto de la cadena. Valor no puede ser nulo.
Nota:
[!NOTA] Para incluir comillas sencillas (') en el filtro Valor, utilice dos comillas sencillas para representar una. Por ejemplo, para filtrar por O'Malley, la cadena de criterios debería ser "col1 = 'O''Malley'". Para incluir comillas sencillas al principio y al final del valor de filtrado, incluya la cadena entre signos de número (#). Por ejemplo, para filtrar por '1', la cadena de criterios debería ser "col1 = #'1'#".
No hay ninguna preferencia 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'
Este filtro se construiría como
(LastName = 'Smith' AND FirstName = 'John') OR (LastName = 'Jones' AND FirstName = 'John')
En una cláusula LIKE , puede usar un carácter comodín al principio y al final del patrón (por ejemplo, LastName Like '*mit*') o solo al final del patrón (por ejemplo, LastName Like 'Smit*').
Las constantes del filtro facilitan la resolución de conflictos de registros individuales durante el modo de actualización por lotes al permitir ver, por ejemplo, sólo aquellos registros afectados durante la última llamada al método UpdateBatch.
El establecimiento de la propiedad Filter por sí misma puede dar lugar a un error a causa de un conflicto con los datos subyacentes (por ejemplo, en el caso de que un registro ya haya sido eliminado por otro usuario). En este caso, el proveedor devuelve advertencias a la colección Errors pero no detiene la ejecución del programa. Solo se produce un error en tiempo de ejecución si existen conflictos en todos los registros solicitados. Use la propiedad Status para buscar registros con conflictos.
El establecimiento de la propiedad Filter en una cadena de longitud cero ("") tiene el mismo efecto que el uso de la constante adFilterNone.
Siempre que se establece la propiedad Filter, la posición del registro actual se mueve al primer registro del subconjunto filtrado de registros del objeto Recordset. Igualmente, cuando se borra la propiedad Filter, la posición del registro actual se mueve al primer registro del objeto Recordset.
Vea la propiedad Bookmark para obtener una explicación de los valores de marcador a partir de los que se puede construir una matriz para utilizarla con la propiedad Filter.
Solo los filtros en forma de cadenas de criterios (por ejemplo, OrderDate > '12/31/1999') afectan al contenido de un objeto Recordset persistente. Los filtros creados con una matriz de marcadores o mediante un valor de FilterGroupEnum no afectarán al contenido del objeto Recordset persistente. Estas reglas se aplican a los objetos Recordset creados con cursores cliente o servidor.
Nota:
[!NOTA] Cuando se aplica la marca adFilterPendingRecords a un objeto Recordset filtrado y modificado en el modo de actualización por lotes, el objeto Recordset resultante estará vacío si el filtrado se ha basado en el campo clave de una tabla de una única clave y la modificación se ha realizado en los valores del campo clave. El objeto Recordset resultante no estará vacío si se cumple una de las siguientes condiciones:
- El filtrado se ha basado en campos sin clave de una tabla con una única clave.
- El filtrado se ha basado en cualquier campo de una tabla con varias claves.
- Las modificaciones se han realizado en campos sin clave de una tabla con una única clave.
- Las modificaciones se han realizado en cualquier campo de una tabla con varias claves.
En la siguiente tabla se resumen los efectos de adFilterPendingRecords sobre diferentes combinaciones de filtrado y modificaciones. En la columna de la izquierda se muestran las posibles modificaciones; éstas se pueden realizar en cualquiera de los campos sin clave, en el campo clave de una tabla con una única clave o en cualquiera de los campos clave de una tabla con varias claves. En la fila superior se muestra el criterio de filtrado; éste puede basarse en cualquiera de los campos sin clave, en el campo clave de una tabla con una única clave o en cualquiera de los campos clave de una tabla con varias claves. En las celdas de intersección se muestran los resultados: + significa que la aplicación de adFilterPendingRecords da lugar a un objeto Recordset no vacío; - significa un objeto Recordset vacío.
|
Sin clave |
Clave única |
Varias claves |
---|---|---|---|
Sin clave |
+ |
+ |
+ |
Clave única |
+ |
- |
N/D |
Varias claves |
+ |
N/D |
+ |