AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / Administrar bases de datos / HFSQL / Funciones HFSQL
  • Búsqueda genérica/búsqueda por coincidencia de datos de salida
  • Realizar una búsqueda en una clave compuesta
  • Buscar en un artículo de array
  • Buscar y filtrar
  • Bloqueos
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Establece la posición en el primer registro que tenga un elemento específico con un valor mayor o igual al valor buscado. El registro no se lee.
El número de la Record actual se modifica sólo cuando es devuelto por HRecNum. Para las funciones que manipular el número actual de Record (HDelete, HRead, HModify, etc.), el valor de este número no se actualiza: se debe utilizar la función HRecNum.
Ejemplo de no hacer:
// Deletes a record not corresponding to the expected one
HSeekFirst(Customer, CustomerID, 25)
HDelete(Customer)
pero:
// Delete the sought record
HSeekFirst(Customer, CustomerID, 25)
HDelete(Customer, HRecNum())

Atención: El registro cargado en memoria no se modifica. Las variables HFSQL (por ejemplo, Cliente.Nombre, es decir el elemento Nombre del archivo Cliente) no se actualizan.
En la mayoría de los casos, HSeekFirst establece la posición en el archivo de datos para realizar un bucle a través de los registros que coinciden con una condición.
Después de llamar a la función HSeekFirst, 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: HFound devuelve True.
  • el archivo de datos está vacía o no hay Record correspondiente a la condición: HOut devuelve True.
  • la función intenta bloquear un registro ya bloqueado en modo de lectura: las funciones HErrorLock y HOut devuelven True.
Observación: la búsqueda puede ser cancelada por HCancelSeek.
Ejemplo
// Find the first record for which
// the Customer name is Moore
HSeekFirst(Customer, Name, "Moore")
// The record is not read.
// Finds all the customers with a specific last and first names.
// The search is performed according to a composite key.
bufSoughtVal is Buffer = HBuildKeyValue(Customer, LastName_FirstName, sLastName, sFirstName)
HSeekFirst(Customer, LastName_FirstName, bufSoughtVal, hLockWrite)
WHILE HFound(Customer) = True
HDelete(Customer, HRecNum())
HNext(Customer, LastName_FirstName, hLockWrite)
END
Sintaxis
<Result> = HSeekFirst(<Data file> , <Key item> , <Sought value> [, <Options>])
<Result>: booleano
  • True si la posición se fijó en el Record (corresponde al valor de HFound).
  • 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 HFound 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.
<Data file>: Cadena de caracteres
Nombre del archivo de datos HFSQL utilizado.
<Key item>: Cadena de caracteres
Nombre del elemento clave sobre el que se realizará la búsqueda.
<Sought value>: Tipo de valor
Valor del artículo buscado.
<Options>: Constante o combinación de constantes opcional
Configura:
  • el modo de bloqueo aplicado al buscado Record
  • el tipo de búsqueda realizada.
hGenericBúsqueda genérica (ver las Notas)
Una búsqueda de coincidencia exacta es realizada por Default (constante no especificada).
hKeepFilterEl filtro set de HFilter se tendrá en cuenta, aunque la clave de búsqueda no esté optimizada para el filtro. Recordatorio: la función HFilter devuelve la clave de búsqueda optimizada para el filtro.
Atención: en este caso, pueden producirse problemas de rendimiento en los archivos grandes.
Hyper File 5.5 Este Variable no puede ser usado.
Por Default, la iteración realizada después de HSeekFirst ignora el filtro.
hLimitParsingLa iteración se detendrá cuando se encuentre el último valor buscado. El actual Record corresponderá a este último Record encontrado.
HFound devolverá False y HOut devolverá True.
Esta constante se utiliza para optimizar la velocidad de búsqueda en el modo Cliente/Servidor.
hLockNoSin bloqeuo: la Record puede ser leída o modificada por otra aplicación durante la lectura.
hLockReadWriteBloqueo de lectura y escritura: el Record que se lee actualmente no puede ser leído o modificado por otra aplicación.
OLE DB Bloqueo de solo escritura. Equivale a la constante hLockWrite.
hLockWriteBloqueo de escritura: el Record que se lee actualmente puede ser leído por otra aplicación pero no puede ser modificado por otra aplicación.
Java Acceso con JDBC: Este parámetro no se tiene en cuenta.
OLE DBConectores Nativos Las opciones de bloqueo no tendrán efecto si los bloqueos no son soportados por el proveedor OLE DB o por Conector Nativo.
OLE DB El modo de bloqueo especificado con la función HSeekFirst seguirá siendo efectivo al llamar a las funciones HPrevious y HNext.
Para cambiar el modo de bloqueo, utilice:
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): Encuentra 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, el registro que contiene "Martínez" corresponderá a la búsqueda (la función HFound devuelve True).
  • 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 HFound devuelve True solo para los registros cuyo elemento coincide exactamente con "Martin".
  • Ejemplos de búsquedas realizadas en el archivo CLIENTE ordenado por nombre:
Valor buscadoOpcionesHSeekFirst fija la posición en el RecordHFound vuelveHOut vuelveExplicaciones
Durand1TrueFalseDurand existe.
El final del archivo de datos no se ha alcanzado todavía.
Dupuis1FalseFalseDupuis no existe. Posicionamiento sobre el primer valor mayor (Durand).
El final del archivo de datos no se ha alcanzado todavía.
MorohGeneric8TrueFalseMoor no existe pero la búsqueda es genérica y se encuentra Moore (entre otros).
El final del archivo de datos no se ha alcanzado todavía.
MoroEl Record no se encontró (no se movió)FalseFalseEl moro no existe.
El final del archivo de datos no se ha alcanzado todavía.
NorbertEl Record no se encontró (no se movió)FalseTrueNorbert no existe.
Posición en el primer valor mayor (este valor no existe): Se ha llegado al final del archivo de datos.
WINDEVWEBDEV - Código ServidorReportes y ConsultasUniversal Windows 10 AppAndroidWidget Android JavaCódigo de Usuario (UMC)AjaxHFSQL ClassicHFSQL Client/ServerHyper File 5.5OLE DBConectores Nativos

Realizar una búsqueda en una clave compuesta

Se pueden utilizar varios métodos para realizar una búsqueda en una clave compuesta:
Utilizando una lista de valores
La siguiente sintaxis se utiliza para realizar una búsqueda en una clave compuesta:
HSeekFirst(<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
HSeekFirst(Customer, LastName_FirstName, ["Moore","Vince"])
Hyper File 5.5 Para realizar búsquedas genéricas en una clave compuesta, todos los componentes de la clave compuesta deben ser componentes de texto. De lo contrario, se realiza una búsqueda por coincidencia exacta.

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.

Buscar y filtrar

Si se activa un filtro (HFilter), la búsqueda tiene en cuenta el filtro.
Hyper File 5.5 Si se activa un filtro, la búsqueda lo ignora.
WINDEVWEBDEV - Código ServidorReportes y ConsultasUniversal Windows 10 AppAndroidWidget Android JavaCódigo de Usuario (UMC)Lenguaje ExternoAjaxHFSQL ClassicHFSQL Client/ServerHyper File 5.5OLE DBConectores Nativos

Bloqueos

Las cerraduras se aplican sólo cuando se encuentra un Record.
Por defecto (no hay modo de bloqueo especificado en <Opciones>), la Record no está bloqueada.
Si se solicita un bloqueo (constantes hLockWrite o hLockReadWrite), se leerá el registro solo si este aún no ha sido bloqueado.
Recordatorio: Una Record bloqueada puede ser desbloqueada por HUnlockRecNum.
OLE DBConectores Nativos Las opciones de bloqueo no tendrán efecto si los bloqueos no son soportados por el proveedor OLE DB o por Conector Nativo.
Componente: wd290hf.dll
Versión mínima requerida
  • Versión 9
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 17/07/2022

Señalar un error o enviar una sugerencia | Ayuda local