PC SOFT

AYUDA EN LÍNEA
DE WINDEV, WEBDEV Y WINDEV MOBILE


¡Nueva funcionalidad WINDEV, WEBDEV, WINDEV Mobile 25!
  • 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 en un artículo de array
  • Buscar y filtrar
  • Navegar por los registros correspondientes a una condición
  • Búsqueda por coincidencia exacta en Access
  • Bloqueos
  • Optimización de las operaciones de navegación
  • Conector Nativo XML
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Otros
Procedimientos almacenados
Posiciones en la primera Record de un archivo de datos cuyo valor para un artículo específico es estrictamente igual al valor buscado (búsqueda de coincidencia exacta). El Record se lee y las variables correspondientes HFSQL se actualizan.
En la mayoría de los casos, <Fuente>.ReadSeekFirst se utiliza para establecer la posición en el archivo de datos para realizar un bucle de navegación entre los registros que corresponden a una condición. <Fuente>.ReadNext se usa para leer el siguiente Record correspondiente a la condición.
Pueden darse varios casos después de la llamada a <Fuente>.ReadSeekFirst:
  • a Record correspondiente a la condición se encontró, bloqueado (si es necesario) y cargado en la memoria: <Fuente>.Found devuelve True.
  • si no existe ningún registro que corresponda a la condición, pero existe un registro de mayor valor: se lee el registro, la función <Fuente>.Out devuelve False y la función <Fuente>.Found devuelve False.
  • el archivo de datos está vacío: no se realiza ninguna operación de lectura, <Fuente>.Out devuelve True y <Fuente>.Found devuelve False.
  • la función intenta bloquear un registro ya bloqueado en modo de lectura: no se realiza ninguna operación de lectura, HErrorLock devuelve True y <Fuente>.Out devuelve True.
    Observación: Por defecto, se realiza una gestión automática de errores de bloqueo y de conflictos de modificación (excepto en el código de procedimientos almacenados). La gestión automática de errores se puede personalizar o desactivar en cualquier momento con la función <Fuente>.OnError.
La función <Fuente>.ReadSeekFirst puede utilizarse con archivos de datos, vistas HFSQL o consultas.
Observación: la búsqueda puede ser cancelada por <Fuente>.CancelSeek.
Windows MobileJavaPHP Caso especial: gestión de esclusas:
  • Windows Mobile In Mobile, los cierres se gestionan sólo en los archivos de datos de HFSQL Client/Server y en los archivos de datos gestionados por un Conector Nativo. No se pueden bloquear los registros HFSQL Mobile. De hecho, el sistema operativo del Pocket PC no permite bloquear registros.
  • PHP En PHPla gestión de bloqueos no está disponible.
  • Java En Javadurante un acceso por parte de JDBC, la gestión de bloqueos no está disponible para las bases de datos a las que accede JDBC.
Versiones 15 y posteriores
WINDEV MobileAndroid Esta función ahora está disponible para aplicaciones Android.
Nueva funcionalidad versión 15
WINDEV MobileAndroid Esta función ahora está disponible para aplicaciones Android.
WINDEV MobileAndroid Esta función ahora está disponible para aplicaciones Android.
Versiones 17 y posteriores
iPhone/iPad Esta función ahora está disponible para aplicaciones iPhone/iPad.
Nueva funcionalidad versión 17
iPhone/iPad Esta función ahora está disponible para aplicaciones iPhone/iPad.
iPhone/iPad Esta función ahora está disponible para aplicaciones iPhone/iPad.
Versiones 18 y posteriores
Widget Android Esta función ahora está disponible en modo Android Widget.
Universal Windows 10 App Esta función ahora está disponible en modo Windows Store apps.
Nueva funcionalidad versión 18
Widget Android Esta función ahora está disponible en modo Android Widget.
Universal Windows 10 App Esta función ahora está disponible en modo Windows Store apps.
Widget Android Esta función ahora está disponible en modo Android Widget.
Universal Windows 10 App Esta función ahora está disponible en modo Windows Store apps.
señalar: A partir de la versión 19, HFSQL es el nuevo nombre de HyperFileSQL.
Versiones 21 y posteriores
Universal Windows 10 App Esta función ahora está disponible en modo Universal Windows 10 App.
Nueva funcionalidad versión 21
Universal Windows 10 App Esta función ahora está disponible en modo Universal Windows 10 App.
Universal Windows 10 App Esta función ahora está disponible en modo Universal Windows 10 App.
Ejemplo
// Find the first record for which
// the Customer name is MOORE
Customer.ReadSeekFirst(Name, "MOORE")
IF Customer.Found() = False THEN
Error("Customer not found")
RETURN
ELSE
// Continue the process on the customer named MOORE
END
Sintaxis
<Result> = <Source>.ReadSeekFirst(<Item> , <Sought value> [, <Options>])
<Result>: Booleano
  • True si se encontró el Record (corresponde al valor devuelto por <Fuente>.Found).
  • False si se produce un problema. Este problema puede ser causado por:
    • un problema de posicionamiento (archivo de datos vacío, ...): <Fuente>.Found devuelve False y HError devuelve 0.
    • un error: HError devuelve un número entero distinto de 0. HErrorInfo devuelve más detalles.
<Source>: Tipo de la fuente especificada
Nombre del archivo de datos HFSQL, vista o consulta utilizada.
<Item>: Cadena de caracteres (con o sin comillas)
Nombre del artículo sobre el que se realizará la búsqueda. Este elemento puede ser o no una clave de búsqueda.
Hyper File 5.5 La búsqueda sólo puede realizarse en un elemento clave.
<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.
hLockReadWriteBloqueo de lectura/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.
OLE DB Bloquear en sólo escritura. Equivale a la constante hLockWrite.
PHP Esta constante no está disponible.
Java Acceso con JDBC: Esta constante no está disponible.
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.
El bloqueo de teclas se ignora si se utiliza una consulta.
PHP Esta constante no está disponible.
Java Acceso con JDBC: Esta constante no está disponible.
hLockNoSin bloqueo (incluso si se llamó a HStartLock): el Record puede ser leído o modificado por otra aplicación durante la lectura.
PHP Esta constante no está disponible.
Java Acceso con JDBC: Esta constante no está disponible.
Versiones 17 y posteriores
hForwardOnly
Nueva funcionalidad versión 17
hForwardOnly
hForwardOnly
Conectores Nativos Esta constante sólo se puede utilizar con Conectores Nativos.
Se utiliza para acelerar la búsqueda de datos durante una búsqueda simple que no utiliza las siguientes funciones:
  • Leyendo el anterior Record.
  • Modificando un Record.
  • Posición de almacenamiento.
Si se utiliza una de estas características, el resultado puede diferir del esperado.
Esta constante se puede utilizar, por ejemplo, durante una búsqueda utilizada para llenar una memoria tabla.
hGenericBúsqueda genérica (ver las Notas)
Una búsqueda de coincidencia exacta es realizada por Default (constante no especificada).
hLimitParsingLa navegación se detendrá tan pronto como se encuentre el último valor buscado o si ningún valor corresponde a la búsqueda..
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 y en las bases de datos externas (accesibles a través de OLE DB o a través de Conectores Nativos).
hKeepFilterEl filtro set de <Fuente>.Filter será tenido en cuenta, incluso si 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.
Hyper File 5.5 Este Variable no puede ser usado.
By Default, la búsqueda realizada después de <Fuente>.ReadSeekFirst ignora el filtro.
hNoRefresh
OLE DBConectores Nativos La función <Fuente>.ReadSeekFirst no actualiza el contenido de la tabla o consulta. Si es posible, la consulta no se vuelve a ejecutar. Se guardan todas las posiciones guardadas.
Windows Mobile Los bloqueos se gestionan únicamente en los archivos de datos de HFSQL Client/Server o en los archivos de datos gestionados por un Conector Nativo. No se pueden bloquear los registros HFSQL Mobile. De hecho, el sistema operativo del Pocket PC no permite bloquear registros.
PHP La gestión de los bloqueos no está disponible.
Java Acceso con JDBC: La gestión de las cerraduras no está disponible para las bases de datos a las que accede el JDBC.
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 <Fuente>.ReadSeekFirst seguirá siendo efectivo al llamar a las funciones <Fuente>.ReadPrevious y <Fuente>.ReadNext.
Para modificar el bloqueo de teclas, debe utilizar:
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, el Record que contiene "Smither" coincidirá con la búsqueda (<Fuente>.Found devuelve True).
    Observación: Para la compatibilidad con WINDEV 5.5, la búsqueda genérica de una cadena vacía ("") es equivalente al uso de la función <Fuente>.ReadFirst.
  • Búsqueda de coincidencia de fecha exacta : Busca todos los registros que coinciden exactamente con el valor especificado..
    Por ejemplo: Cuando se realiza una búsqueda de coincidencia exacta en "Smith" (para el elemento NOMBRE), <Fuente>.Found devuelve True para los registros cuyo elemento coincide exactamente con "Smith".
  • Ejemplos de búsquedas realizadas en el archivo CLIENTE ordenado por nombre:
Valor buscadoOpciones<Fuente>.ReadSeekFirst establece la posición sobre el Record.Devoluciones de <Fuente>.FoundDevoluciones de <Fuente>.OutExplicaciones
De los cuales1TrueFalseDe los cuales existen.
El final del archivo de datos no se ha alcanzado todavía.
Davo1FalseFalseDavo no existe. Posición en el primer valor mayor (Davon).
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.
MoroNo se encontró el Record (no hay movimiento, el Record actual no cambia).FalseFalseEl moro no existe.
El final del archivo de datos no se ha alcanzado todavía.
NorbertNo se encontró el Record (no hay movimiento, el Record actual no cambia).FalseTrueNorbert no existe.
Posición en el primer valor mayor (este valor no existe): se ha llegado al final del archivo de datos.

Vea el Hyper File 5.5 y 7: ¿Cómo gestionar los caracteres de espacio en las búsquedas? tabla para más detalles

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 navegación es continuada por <Fuente>.ReadNext, los siguientes registros corresponderán a los valores mayores o iguales al valor buscado. En este caso, <Fuente>.Out debe ser revisado después de cada operación de lectura para saber si se ha llegado al final del archivo de datos.
Si la búsqueda se realiza en un elemento no clave:

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:
HReadSeekFirst(<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.ReadSeekFirst(LastName_FirstName, ["MOORE", "Vince"])

2. Uso de <Fuente>.BuildKeyValue
Ejemplo:
bufSoughtVal is Buffer = Customer.BuildKeyValue(LastName_FirstName, sLastName, sFirstName)
Customer.SeekFirst(LastName_FirstName, bufSoughtVal)
WHILE Customer.Found()
Customer.Delete()
Customer.Next(LastName_FirstName)
END

3. Uso de HConvert
Para construir el valor de una clave compuesta sin utilizar la función <Fuente>.BuildKeyValue, es necesario:
  • llenar los componentes del texto en su tamaño completo con Charact( 0).
  • convertir los componentes numéricos con la función HConvert.
Ejemplo:
MyCompositeKey = Complete(Customer.CustomerLastName, Dimension(Customer.LastName), Charact(0)) + ...
Complete(Customer.FirstName, Dimension(Customer.FirstName), Charact(0))
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 cuyo índice es 1). Para realizar una búsqueda en los otros elementos de array, utilice los filtros o consultas.

Buscar y filtrar

Si un filtro está activado (<Fuente>.Filter), el filtro es tenido en cuenta por la búsqueda 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.
Hyper File 5.5 Si se activa un filtro, la búsqueda lo ignora.

Navegar por los registros correspondientes a una condición

En la mayoría de los casos, <Fuente>.ReadSeekFirst se utiliza para establecer la posición en el archivo de datos para realizar un bucle de navegación entre los registros que corresponden a una condición. <Fuente>.ReadNext y <Fuente>.ReadPrevious se utilizan para leer los registros siguientes y anteriores correspondientes a la condición.
Para ignorar la búsqueda mientras se va a la siguiente o anterior Record, utilice una de las siguientes funciones:
WINDEVWEBDEV - Código ServidorReportes y ConsultasAjaxCódigo de Usuario (UMC)OLE DBConectores Nativos

Búsqueda por coincidencia exacta en Access

Para realizar una búsqueda de coincidencia exacta en una base de datos ACCESS, se recomienda utilizar NoSpace si hay caracteres de espacio al final del valor buscado.
WINDEVWEBDEV - Código ServidorReportes y ConsultasiPhone/iPadUniversal Windows 10 AppWindows MobileAjaxCódigo de Usuario (UMC)HFSQLHFSQL 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.
No es necesario especificar un parámetro de bloqueo si el archivo de datos está bloqueado por HStartLock: el bloqueo especificado por HStartLock se tiene en cuenta automáticamente. Para ignorar la cerradura establecida por HStartLock, usa la constante hLockNo.
Recordatorio: Un Record cerrado puede ser desbloqueado por <Fuente>.UnlockRecNum.
OLE DBConectores Nativos Las opciones de bloqueo no tendrán efecto si el proveedor de OLE DB o Conector Nativo (también llamado Native Access) no admite bloqueos.
WINDEVWEBDEV - Código ServidorReportes y ConsultasiPhone/iPadUniversal Windows 10 AppAjaxCódigo de Usuario (UMC)HFSQLHFSQL Client/ServerHyper File 5.5OLE DBConectores Nativos

Optimización de las operaciones de navegación

Para optimizar los primeros tiempos de navegación en un archivo de datos, usa <Fuente>.Optimize en este archivo de datos.
WINDEVWEBDEV - Código ServidorReportes y ConsultasCódigo de Usuario (UMC)Conectores Nativos

Conector Nativo XML

El comportamiento de la función <Fuente>.ReadSeekFirst depende de las funciones <Fuente>.ActivateAutoFilter y <Fuente>.DeactivateAutoFilter.
<Fuente>.ActivateAutoFilter está habilitado por Default.
Por lo tanto, para leer el contenido del archivo XML, lea el contenido del archivo principal (el padre) y luego lea el contenido de los archivos relacionado (los hijos).
Por Default, cuando se lee un archivo, se aplica automáticamente un filtro a los archivos de relacionado para leer sólo los registros correspondientes al archivo principal.
Por ejemplo:
TEl Email de esta persona puede ser recuperado al navegar por el archivo de la persona.
Para ello, simplemente set la posición en el archivo "Persona" y aplicar <Fuente>.ReadSeekFirst al archivo "Email".
En este caso, la Record leída en el archivo "Correo electrónico" corresponderá al primer correo electrónico asociado con la Record actual en el archivo "Persona".
Si este mecanismo está desactivado (<Fuente>.DeactivateAutoFilter), el Record leído en el archivo "Email" corresponderá al primer Record que se encuentre en el archivo "Email" (y no al hijo del Record leído en el archivo "Persona").
Componente : wd250hf.dll
Versión mínima requerida
  • Versión 25
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario