|
|
|
|
- Límite inferior y límite superior de un elemento clave de Texto o Clave Compuesta
- Filtro e iteración filtrada
- Condición de selección
- Habilitar/Deshabilitar un filtro
- Filtro en una clave compuesta
- Archivos de datos no HFSQL
<Fuente>.Filter (Función)
No disponible con este tipo de conexión
Define y activa un filtro en un archivo de datos, vista o consulta. Después de su ejecución, los casos más comunes son los siguientes: - no se puede crear el filtro: <Fuente>.Filter devuelve una cadena vacía. HError devuelve el identificador del error.
- se crea el filtro: la función <Fuente>.Filter devuelve la clave de búsqueda adecuada que se utilizará para navegar por el archivo de datos, la vista o la consulta.
// Simple filter with condition: // Find the customers of a city SearchKey is string mycity is string mycity = "MONTPELLIER" SearchKey = Customer.Filter("CITY='" + mycity + "'") Customer.ReadFirst(SearchKey) WHILE Customer.Out() = False // Process the record ... Customer.ReadNext(SearchKey) END // Cancels the filter Customer.DeactivateFilter()
// Filter performed with a bounded search key and a condition: // the search key is fixed SearchKey is string // Filters the invoices found between 1/1/2005 and // 12/31/2005, whose total is greater than 1500 Euros IOT // with a discount whose type is passed as parameter (text item) SearchKey = Invoice.Filter(InvoiceDate, "20050101", "20051231", ... StringBuild("TotalIOT>1500 AND DiscountType='%1'" + , ... Replace(sDiscountType, "", "\"))) // The Replace function is used to prefix the quotes // contained in sDiscountType with a backslash IF SearchKey <> "" THEN Invoice.ReadFirst(SearchKey) WHILE Invoice.Out() = False // Process the record: send a thank you letter Send_Letter() Invoice.ReadNext(SearchKey) END END ... // Cancels the filter Invoice.DeactivateFilter()
Sintaxis
Filtro construido con una clave de búsqueda limitada y una condición Ocultar los detalles
<Result> = <Source>.Filter(<Search key> , <Lower bound> [, <Upper bound> [, <Selection condition>]])
<Result>: Cadena de caracteres Campo de navegación. Corresponde a: - la clave de búsqueda del archivo de datos si el filtro está activado.
- una cadena vacía ("") si no se puede establecer el filtro.
<Source>: Tipo de fuente especificada Nombre del archivo de datos, vista HFSQL o consulta utilizada. <Search key>: Cadena de caracteres Nombre del elemento clave utilizado para el bucle de el archivo de datos, vista o consulta. Este elemento debe ser una clave de búsqueda de archivo, vista o consulta de datos. Los límites inferior y superior se aplicarán a este ítem. <Lower bound>: Tipo de campo de búsqueda Valor mínimo (incluido) del elemento de búsqueda (si la clave de búsqueda se define con una iteración en orden ascendente en el análisis). Los registros correspondientes a este valor mínimo se incluirán en el filtro. Para una iteración descendente (es decir, si la clave de búsqueda se define con una iteración en orden descendente en el análisis), es el valor máximo del elemento de búsqueda. El tipo de este parámetro debe corresponder al tipo de elemento de búsqueda. Por ejemplo, si el elemento de búsqueda es una cadena, el límite inferior también debe ser una cadena. <Upper bound>: Tipo de campo de búsqueda, parámetro opcional Valor máximo (incluido) del elemento de búsqueda (iteración ascendente). Los registros correspondientes a este valor máximo se incluirán en el filtro. El tipo de este parámetro debe corresponder al tipo de elemento de búsqueda. Por ejemplo, si el elemento de búsqueda es una cadena, el límite superior también debe ser una cadena. Para una iteración descendente, es el valor mínimo del elemento de búsqueda. Si no se especifica este parámetro, el límite superior corresponde al valor de <Límite inferior>. <Selection condition>: Cadena de caracteres opcional Condición de selección para crear el filtro (véase Notas). Esta condición de selección puede ser una cadena de caracteres Ansi o Unicode.
Filtro construido con una condición Ocultar los detalles
<Result> = <Source>.Filter(<Selection condition>)
<Result>: Cadena de caracteres Campo de navegación. Corresponde a: - la clave de búsqueda del archivo de datos si el filtro está activado
- una cadena vacía si el filtro no se puede implementar
<Source>: Tipo de fuente especificada Nombre del archivo de datos, vista HFSQL o consulta utilizada. <Selection condition>: Cadena de caracteres Condición de selección utilizada para crear el filtro (véanse las Notas). Esta condición de selección puede ser una cadena de caracteres Ansi o Unicode. Observaciones Límite inferior y límite superior de un elemento clave de Texto o Clave Compuesta Si el límite inferior y el límite superior son iguales: - para realizar un filtro de búsqueda exacta en un valor, solo se debe indicar el valor en el parámetro "Límite mín".
Por ejemplo, para seleccionar los clientes cuyo nombre corresponde a "Smith":
Customer.Filter(Name, "Smith")
El cliente "Durán" no se seleccionará. - para implementar un filtro genérico sobre un valor, debe hacerlo:
- completar el límite inferior con la constante hMinVal para darle el valor mínimo.
- completar el límite superior con la constante hMaxVal para darle el valor máximo.
Por ejemplo, para seleccionar los clientes cuyo apellido comienza con "Smith":
Customer.Filter(Name, "Smith" + hMinVal, "Smith" + hMaxVal)
Se seleccionarán los clientes "Durá" y "Durán".
Observaciones: - La constante hMinVal es equivalente a Charact( 0).
- La constante hMaxVal es equivalente a Charact( 255).
Filtro e iteración filtrada Después de ejecutar la función <Fuente>.Filter, la navegación del archivo de datos debe realizarse en el elemento devuelto por la función <Fuente>.Filter. El filtro será ignorado si se utiliza otro elemento para recorrer el archivo de datos. Cuando se define y habilita un filtro en un archivo de datos (vista o consulta), todos los registros leídos corresponden al filtro. Si no hay ninguna otra Record que corresponda al filtro durante la iteración: - <Fuente>.Out devuelve True.
- la actual Record corresponde a la última Record leída con el filtro.
Por ejemplo: | | En un archivo de datos filtrado, después de la función: | el actual Record es: |
---|
HReadFirst | el primer archivo Record correspondiente al filtro | HReadLast | el último archivo Record correspondiente al filtro | HReadNext (or HForward) | el siguiente Record (o el siguiente n-ésimo Record) correspondiente al filtro | HReadPrevious (o HBackward) | el anterior Record (o el anterior n-ésimo Record) correspondiente al filtro |
Condición de selección La sintaxis general de una condición tiene el siguiente formato: "ApellidoCli>'Durá' y (CódigoPos=34 o CódigoPos=32)" Los operadores soportados dependen del tipo de los elementos utilizados en la condición: | | | > | Mayor que | Válido para todos los tipos | >= | Mayor que o igual a | Válido para todos los tipos | < | Menor que | Válido para todos los tipos | <> | Diferente | Válido para todos los tipos | <= | Menor que o igual a | Válido para todos los tipos | ] | Contiene: distingue mayúsculas y minúsculas | Válido solo para cadenas | ]= | Comienza por: distingue mayúsculas y minúsculas | Válido solo para cadenas | ~] | Contiene: no distingue entre mayúsculas y minúsculas | Válido solo para cadenas | ~~ | Igualdad muy flexible: no distingue entre minúsculas y mayúsculas, ignora los espacios antes y después de la cadena, acentos en minúsculas, espacios y puntuación dentro de las cadenas. | Válido solo para cadenas | ~= | Casi igual a: ignora espacios a la derecha, acentos, y mayúsculas y minúsculas | Válido solo para cadenas | = | Estrictamente igual a | Válido para todos los tipos |
Notas sobre la condición de selección : - Las cuerdas constantes deben estar encerradas en comillas simples.
- Si el nombre de la posición contiene comillas simples, deben ser dobladas.
Por ejemplo: Elementoconcomillas - Las comparaciones entre strings se realizan según los parámetros especificados para los índices.
- Los memos binarios y las claves compuestas no pueden formar parte de una condición de selección.
Para las claves compuestas, se recomienda utilizar la primera sintaxis. No se puede utilizar la siguiente sintaxis:
FileName.Filter("COMPKEY~]'AAA' AND COMPKEY]='" + ... FileName.BuildKeyValue(COMPKEY, 0) + "'")
- Si una cadena de caracteres (constante o Variable) contiene una sola cita, ésta debe estar precedida por una barra invertida ( \).
- Para optimizar la iteración, utilice <Fuente>.StatCalculate en el archivo de datos antes de crear el filtro. El motor HFSQL analiza la condición de selección y utiliza estas estadísticas para determinar qué elementos se utilizarán para optimizar la iteración realizada en el archivo de datos.
- Esta condición de selección puede ser una cadena de caracteres Ansi o Unicode.
Habilitar/Deshabilitar un filtro El filtro se borra cuando se cierra el archivo de datos (consulta o vista) ( <Fuente>.Close por ejemplo). Un único filtro puede existir en un momento dado en un archivo de datos (consulta o vista). Si la función <Fuente>.Filter se utiliza varias veces, solo se tendrá en cuenta el último filtro: se borrarán los filtros anteriores.
Esta página también está disponible para…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|