|
|
|
|
- Búsqueda genérica/búsqueda por coincidencia de datos de salida
- Búsqueda realizada sobre un elemento clave o sobre un elemento no clave
- Realizar una búsqueda en una clave compuesta
- Buscar y filtrar
- Buscar en un artículo de array
- Recorrer en bucle los registros que coinciden con una condición
- Búsqueda por coincidencia exacta en Access
- Bloqueos
- Optimización de las iteraciones
<Fuente>.ReadSeekLast (Función)
No disponible con este tipo de conexión
Posiciones en la última Record de un archivo de datos cuyo valor para un artículo específico es menor o igual al valor buscado (búsqueda de coincidencia exacta). Se lee la Record y se actualizan las variables HFSQL correspondientes. En la mayoría de los casos, <Fuente>.ReadSeekLast establece la posición en el archivo de datos para recorrer los registros que coinciden con una condición. <Fuente>.ReadPrevious se utiliza para leer el Record anterior correspondiente a la condición. Después de llamar a la función <Fuente>.ReadSeekLast, se pueden producir los siguientes casos: - se encontró un registro que corresponde a la condición, se bloqueó (si es necesario) y se cargó en la memoria: <Fuente>.Found devuelve True.
- el archivo de datos está vacía o no hay Record correspondiente a la condición: no se realiza ninguna lectura y la función <Fuente>.Out devuelve True.
- la función intenta bloquear un registro ya bloqueado en modo de lectura: no se realiza ninguna operación de lectura, HErrorLock se pone en True y <Fuente>.Out devuelve True.
Esta función se puede utilizar con archivos de datos, vistas HFSQL o consultas. // Find the last record for which // the Customer name is MOORE Customer.ReadSeekLast(NAME, "MOORE")
// Find all the customers whose turnover is less than a specific value Customer.ReadSeekLast(Turnover, X) WHILE NOT Customer.Out() AddCustomerList() Customer.ReadPrevious(Turnover) END
Sintaxis
<Result> = <Source>.ReadSeekLast(<Item> , <Sought value> [, <Options>])
<Result>: Booleano - True si se encontró el registro (corresponde al valor de la función <Fuente>.Found).
- False si se produce un problema. Este problema puede ser causado por:
- un problema de posicionamiento (archivo de datos vacío, etc.): la función <Fuente>.Found devuelve False y la función HError devuelve 0.
- un error: la función HError devuelve un número entero distinto de 0. La función HErrorInfo devuelve más detalles.
<Source>: Tipo de fuente especificada Nombre del archivo de datos, vista HFSQL o consulta utilizada. <Item>: Cadena de caracteres Nombre del artículo sobre el que se realizará la búsqueda. Este elemento puede ser o no una clave de búsqueda.
<Sought value>: Tipo de valor Valor del artículo buscado. <Options>: Constante o combinación de constantes opcional Permite configurar:- el modo de bloqueo aplicado al buscado Record.
- el tipo de búsqueda realizada.
| | hForwardOnly | | hGeneric | Búsqueda genérica (ver las Notas) Una búsqueda de coincidencia exacta es realizada por Default (constante no especificada). | hKeepFilter | El filtro set de <Fuente>.Filter se tendrá en cuenta, aunque la clave de búsqueda no esté optimizada para el filtro. Recordatorio: la función <Fuente>.Filter devuelve la clave de búsqueda optimizada para el filtro. Atención: en este caso, pueden surgir problemas de rendimiento en archivos de datos demasiado grandes. Por Default, la iteración realizada después de <Fuente>.ReadSeekLast ignora el filtro. | hLimitParsing | La iteración se detendrá cuando se encuentre el último valor buscado. El actual Record corresponderá a este último Record encontrado. <Fuente>.Found devolverá False y <Fuente>.Out devolverá True. Esta constante se utiliza para optimizar la velocidad de búsqueda en el modo Cliente/Servidor. | hLockNo | Sin bloqeuo: el Record puede ser leído o modificado por otra aplicación durante la lectura.
| hLockReadWrite | Bloqueo de lectura y escritura: el Record que se lee actualmente no puede ser leído o modificado por otra aplicación. El bloqueo de teclas se ignora si se utiliza una consulta.
| hLockWrite | Bloqueo de escritura: el registro leído actualmente puede ser leído por otra aplicación, pero no se puede modificar. El bloqueo de teclas se ignora si se utiliza una consulta.
| hNoRefresh | |
Observaciones Búsqueda genérica/búsqueda por coincidencia de datos de salida - Búsqueda genérica (principalmente en las posiciones de la cadena de caracteres): Busca todos los registros que empiezan con el valor especificado.
Por ejemplo: Cuando se realiza una búsqueda genérica en "Smith" (para el elemento NAME), todos los registros cuyo elemento Name comience con "Smith" coincidirán con la búsqueda. Por lo tanto, la Record que contiene "Smither" coincidirá con la búsqueda (<Fuente>.Found devuelve True). Observación: Por compatibilidad con la versión 5.5, la búsqueda genérica de una cadena vacía ("") equivale al uso de <Fuente>.ReadLast. - Búsqueda exacta: Busca todos los registros que coinciden exactamente con el valor especificado..
Por ejemplo: Al realizar una búsqueda exacta en la cadena "Martin" (para el elemento NOMBRE), la función <Fuente>.Found devuelve True solo para los registros cuyo elemento corresponde exactamente a "Martin". - Ejemplos de búsqueda en el fichero de datos de CLIENTES ordenados por nombre:
| | | | | | Valor buscado | Opciones | <Fuente>.ReadSeekLast posiciones en el Record. | HFound beneficios | HOut beneficios | Explicaciones | De los cuales | | 6 | True | False | De los cuales existen. El comienzo del archivo de datos no se ha alcanzado todavía. | Davo | | 5 | False | False | Davo no existe. Posicionamiento en el primer valor inferior (Moore). El comienzo del archivo de datos no se ha alcanzado todavía. | Moro | hGeneric | 5 | True | False | Moor no existe pero la búsqueda es genérica, y se encuentra Moore (entre otros). El comienzo del archivo de datos no se ha alcanzado todavía. | Moro | | La Record no fue encontrada (no se movió). | False | False | El moro no existe. El comienzo del archivo de datos no se ha alcanzado todavía. | Bernardo | | La Record no fue encontrada (no se movió). | False | True | Bernard no existe. Posicionamiento sobre el primer valor inferior (este valor no existe): se alcanzó el principio del archivo de datos. |
Búsqueda realizada sobre un elemento clave o sobre un elemento no clave La búsqueda se puede realizar en un elemento clave o no clave. Si la búsqueda se realiza en un elemento clave: - la búsqueda es rápida y el resultado está ordenado.
- si la iteración es continuada por <Fuente>.ReadPrevious, los siguientes registros corresponderán a los valores menores o iguales al valor de búsqueda. En este caso, hay que comprobar <Fuente>.Out después de cada operación de lectura para saber si se ha llegado al principio del fichero.
Si la búsqueda se realiza en un elemento no clave: - el elemento seleccionado aparecerá en rojo en el editor de código y aparecerá una advertencia en el "Panel"Error de compilación.
Observación: La autocompletado propone únicamente los puntos clave. - si la iteración es continuada por <Fuente>.ReadPrevious, los próximos registros corresponderán a los valores iguales al valor de búsqueda.
Realizar una búsqueda en una clave compuesta Se pueden utilizar varios métodos para realizar una búsqueda en una clave compuesta: 1. Utilizando una lista de valores . La siguiente sintaxis se utiliza para realizar una búsqueda en una clave compuesta: HReadSeekLast(<File name>, <Name of composite key>, [<Search value of first element of composite key>, <Search value of first element of composite key>, ...]) Ejemplo:
// Find the record Customer.ReadSeekLast(LastName_FirstName, ["MOORE","Vince"])
2. Uso de la función <Fuente>.BuildKeyValueEjemplo:
bufSoughtVal is Buffer = Customer.BuildKeyValue(LastName_FirstName, sLastName, sFirstName) Customer.ReadSeekLast(LastName_FirstName, bufSoughtVal) WHILE Customer.Found() Customer.Delete() Customer.Previous(LastName_FirstName) END
Buscar y filtrar Si se activa un filtro ( <Fuente>.Filter), la búsqueda tendrá en cuenta el filtro sólo si la clave utilizada es idéntica. Para tener en cuenta este filtro en el resto de la navegación (incluso si la clave de búsqueda no está optimizada para el filtro), utilice la constante hKeepFilter.
Buscar en un artículo de array La búsqueda se realiza en el primer elemento array (elemento con índice 1). Para realizar una búsqueda en los otros elementos de array, utilice los filtros o consultas. Recorrer en bucle los registros que coinciden con una condición En la mayoría de los casos, <Fuente>.ReadSeekLast establece la posición en el archivo de datos para recorrer los registros que coinciden con una condición. <Fuente>.ReadNext y <Fuente>.ReadPrevious se utilizan para leer los registros coincidentes siguientes y anteriores. Para ignorar la búsqueda mientras se va a la siguiente o anterior Record, utilice una de las siguientes funciones:
Esta página también está disponible para…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|