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
  • Presentación
  • Creación de una clave compuesta
  • Clave y enlace compuesto
  • Valor de la clave compuesta
  • Presentación
  • Añadiendo una Record que contiene una clave compuesta
  • Añadir un Record que contiene una clave compuesta en un archivo de datos relacionado
  • Construir el valor de una clave compuesta para implementar una búsqueda o un filtro
  • Propiedades del lenguaje associated con claves compuestas
  • Uso de una clave compuesta para realizar búsquedas de coincidencias exactas
  • Búsqueda por coincidencia exacta realizada por HReadSeekFirst
  • Búsqueda por coincidencia exacta y HReadSeek
  • Uso de una clave compuesta para realizar búsquedas genéricas
  • Búsqueda genérica realizada por HReadSeekFirst
  • Búsqueda genérica realizada por HReadSeek
  • Uso de una clave compuesta para crear filtros
  • Funciones para crear filtros
  • Filtro entre dos valores (límites)
  • Filtrar a partir de un valor dado
  • Filtro en los primeros componentes clave
  • Observación: Filtro con condición de selección
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
Presentación
Una clave compuesta es un elemento clave que contiene varios otros elementos. Estos elementos pueden ser de texto o numéricos.
Una clave compuesta se utiliza para simplificar las búsquedas realizadas sobre varios criterios.
Las claves compuestas son elementos binarios. Su valor no puede ser visualizado directamente (en un rastro o en una control).
Esta Page presenta los siguientes temas:
Creación de una clave compuesta
Se crea directamente una clave compuesta en la editor de análisis.
Para crear una clave compuesta en la description de un archivo de datos:
  1. Abre los artículos de description del archivo de datos:
    • Seleccione el archivo de datos en el editor.
    • Abra el menú contextual (clic derecho) y seleccione "description de elementos".
  2. Haga clic en . Aparece una pantalla que permite construir la clave compuesta.
  3. La lista de artículos encontrados en el archivo de datos se muestra en el tabla a la izquierda. Haga doble clic en los elementos que deben incluirse en la clave compuesta. Estas posiciones se visualizan en la tabla de la derecha.
  4. Reorganizar (si es necesario) las posiciones que pertenecen a la clave compuesta..
    Atención: el orden de las posiciones es importante porque define el orden de clasificación. Por ejemplo, la tecla compuesta "Nombre + Estado" se ordenará en el nombre y luego en el estado.
  5. Especifique la dirección de búsqueda y los parámetros de búsqueda para cada tecla Component.
  6. Validar. La clave compuesta se muestra en la lista de elementos del archivo de datos.

Clave y enlace compuesto

Las claves compuestas pueden utilizarse en los enlaces entre los archivos de datos. Al describir el análisis, la clave compuesta que se encuentra en el archivo de datos de relacionado aparece no como una clave compuesta sino como una clave binaria. No podrá acceder a los diferentes componentes de la clave compuesta en el archivo de datos de relacionado.
Observaciones:
  • La gestión de la integridad referencial es compatible con una clave compuesta utilizada en un enlace.
  • La gestión de las modificaciones en cascada no es compatible con una clave compuesta utilizada en un enlace..
Valor de la clave compuesta

Presentación

Una clave compuesta se almacena como una cadena binaria. Su valor no puede ser visualizado (ni en un control ni en el depurador, ...).

Añadiendo una Record que contiene una clave compuesta

Cuando se añade o modifica una Record que contiene una clave compuesta, el valor de la clave compuesta se define automáticamente según los valores de los diferentes componentes de la clave. No se requiere programación específica.

Añadir un Record que contiene una clave compuesta en un archivo de datos relacionado

Cuando un Record que contiene una clave compuesta se añade a un archivo de datos de relacionado, el valor de la clave debe ser construido. De hecho, en el archivo de datos de relacionado, la clave compuesta no se considera como una clave compuesta sino como una clave binaria. Por lo tanto, se le debe asignar un valor.
Este valor puede ser asignado:
  • directamente. Por ejemplo, se ha añadido un Record en el archivo de datos del cliente. Para añadir el valor de la clave al fichero de datos relacionado, basta con realizar una asignación directa:
    LinkFile.NameDate = Customer.NameDate
  • mediante la función HBuildKeyValue. Esta función se utiliza para construir el valor de la clave compuesta a partir de sus componentes.

Construir el valor de una clave compuesta para implementar una búsqueda o un filtro

Cuando se implementa un filtro o una búsqueda en una clave compuesta, se debe definir el valor de la clave compuesta (para definir el límite inferior y el límite superior del filtro, por ejemplo).
Se pueden utilizar varios métodos para construir el valor de una clave compuesta:
  • Método 1: Utilizar una lista de valores en HFilter.
  • Método 2: Utilizando la declaración FOR EACH.
  • Método 3: Utilizando la función HBuildKeyValue.
  • Método 4: Uso de la función HConvertX (método conservado por motivos de compatibilidad con WINDEV 5.5)
Método 1: Lista de valores
Basta con especificar la lista de valores que debe tomar cada Component de clave compuesta para el filtro o para la búsqueda. La clave compuesta se construye directamente en la sintaxis de la función.
Ejemplo: Encuentra todos los registros en el archivo de datos del cliente cuyo apellido está entre "AA" y "Barnaby" y cuyo nombre está entre "Philomene" y "Tartuffe"..
HFilter(Customer, LastNameFirstName, ["AA", "Philomene"], ["Barnaby", "Tartuffe"])
En este ejemplo, "AA","Zorro" es devuelto por el filtro mientras que "Philomene","Zorro" no lo es.
Ejemplo: Encuentra todos los registros en el archivo de datos de Tareas cuyas tareas se incluyen entre el 15/03/2011 00:00 y el 25/03/2011 00:00.
HFilter(Tasks, TaskStarDateTaskStartTime, [20110315,0000], [20110325,0000])
Método 2: Uso de la sentencia FOR EACH
Especifique la lista de valores que debe tomar cada clave Component para el filtro o para la búsqueda. La clave compuesta se construye directamente en la sintaxis de la función.
Ejemplo: Encontrar a los clientes potenciales que viven en el estado 69.
FOR EACH Contacts where CCState = ["Prospect", 69]
...
END
Método 3: Utilizar la función HBuildKeyValue
El valor de una clave compuesta puede ser construido por HBuildKeyValue. Para ello, en esta función se debe especificar el archivo de datos correspondiente, el nombre de la clave y los valores de los componentes.
Por ejemplo, la siguiente Line de código se utiliza para construir el valor de la clave compuesta ("NAMEDATE") correspondiente a "CUSTOMERNAME+ORDER_DATE" del fichero de datos del cliente:
HBuildKeyValue(Customer, NAMEDATE, "SMITH","03/11/99")
Método 4: Uso de HConvertX (método conservado para la compatibilidad con WINDEV 5.5)
Debes hacerlo:
  • completar los componentes de texto con la constante hMinVal.
  • convertir los componentes numéricos con la función HConvert.
Ejemplo:
MyCompositeKey = Complete(Customer.CustomerLastName, Dimension(Customer.LastName), hMinVal)) + ...
Complete(Customer.FirstName, Dimension (Customer.FirstName), hMinVal)

Propiedades del lenguaje associated con claves compuestas

Las siguientes propiedades se utilizan para gestionar las llaves compuestas mediante programación:
BinaryEl Binario Property se utiliza para determinar si un elemento es binario.
ComponentLa propiedad Component configura los diferentes componentes de una clave compuesta.
CompositeKeyLa propiedad CompositeKey determina si un campo es una clave compuesta.
KeyExpressionLa KeyExpression Property se utiliza para set los diferentes componentes de una clave compuesta.
NbComponentEl NbComponent Property se utiliza para get el número de elementos de una clave compuesta.
Uso de una clave compuesta para realizar búsquedas de coincidencias exactas

Búsqueda por coincidencia exacta realizada por HReadSeekFirst

Para realizar una búsqueda por coincidencia exacta del valor de una clave compuesta, debe hacerlo:
  1. Construir el valor de la clave de búsqueda con HBuildKeyValue. Se deben especificar todos los valores de los componentes clave.
  2. Utiliza la función HReadSeekFirst.
Observación: Mediante Default, se utiliza HReadSeekFirst para realizar una búsqueda de coincidencia exacta.
ValCompKey is Buffer
ValCompKey = HBuildKeyValue(Customer, Name_ZC, "Smith", "34000")
HReadSeekFirst(Customer, Name_ZC, ValCompKey)
WHILE HFound() = True
...
HReadNext(Customer, Name_ZC)
END

Búsqueda por coincidencia exacta y HReadSeek

Para realizar una búsqueda por coincidencia exacta del valor de una clave compuesta, debe hacerlo:
  1. Construir el valor de la clave de búsqueda con HBuildKeyValue. Se deben especificar todos los valores de los componentes clave.
  2. Llama a HReadSeek con la constante hIdentical.
Observación: Por Default, HReadSeek se utiliza para realizar una búsqueda genérica. Para realizar una búsqueda exacta, se debe especificar la constante hIdentical.
ValCompKey is Buffer
ValCompKey = HBuildKeyValue(Customer, Name_ZC, "Smith", "34000")
HReadSeek(Customer, Name_ZC, ValCompKey, hIdentical)
WHILE HFound() = True
...
HReadNext(Customer, Name_ZC)
END
Uso de una clave compuesta para realizar búsquedas genéricas

Búsqueda genérica realizada por HReadSeekFirst

Para realizar una búsqueda genérica sobre el valor de una clave compuesta, debe hacerlo:
  1. Construir el valor de la clave de búsqueda con HBuildKeyValue. Sólo se pueden especificar los valores de los primeros componentes clave.
  2. Llama a HReadSeekFirst con la constante hGeneric.
Observación: Mediante Default, se utiliza HReadSeekFirst para realizar una búsqueda de coincidencia exacta. Para realizar una búsqueda genérica, especifique la constante hGeneric.
ValCompKey is Buffer
ValCompKey = HBuildKeyValue(Customer, Name_ZC, "Moore")
HReadSeekFirst(Customer, Name_ZC, ValCompKey, hGeneric)
WHILE HFound() = True
...
HReadNext(Customer, Name_ZC)
END

Búsqueda genérica realizada por HReadSeek

Para realizar una búsqueda genérica sobre el valor de una clave compuesta, debe hacerlo:
  1. Construir el valor de la clave de búsqueda con HBuildKeyValue. Sólo se pueden especificar los valores de los primeros componentes clave.
  2. Utiliza la función HReadSeek.
Observación: Por Default, HReadSeek se utiliza para realizar una búsqueda genérica. Para realizar una búsqueda exacta, se debe especificar la constante hIdentical.
ValCompKey is Buffer
ValCompKey = HBuildKeyValue(Customer, Name_ZC, "Moore")
HReadSeek(Customer, Name_ZC, ValCompKey)
WHILE HFound() = True
...
HReadNext(Customer, Name_ZC)
END
Uso de una clave compuesta para crear filtros

Funciones para crear filtros

Además de HFilter, se pueden utilizar varias funciones de WLanguage para crear filtros específicos. Estas funciones permiten manipular las teclas compuestas:
Filtro HFDefine y activa un filtro en un archivo de datos, vista o consulta.
HFilterIdenticalDefine y habilita un filtro utilizado para encontrar el valor exacto de un elemento de cadena.
HFilterIncludedBetweenDefine y activa un filtro de tipo "Comprendido entre" en un archivo de datos, vista o consulta.
HFilterStartsWithDefine y activa un filtro de tipo "Comienza por" en un archivo, vista o consulta.

Filtro entre dos valores (límites)

Para filtrar registros entre dos valores específicos de una clave compuesta, debe hacerlo:
  1. Cree los valores de cada límite con HBuildKeyValue.
  2. Cree el filtro con HFilter y especifique los dos límites.
  3. Examinar los registros seleccionados.
sFilterKey1 = HBuildKeyValue(CUSTOMER, NAME_ZC, "MOORE", "34000")
sFilterKey2 = HBuildKeyValue(CUSTOMER, NAME_ZC, "MOORE", "34999")
sSearchKey= HFilter(Customer, NAME_ZC,  sFilterKey1,  sFilterKey2)
HReadFirst(Customer, sSearchKey)
WHILE NOT HOut()
...
HReadNext(Customer, sSearchKey)
END

Filtrar a partir de un valor dado

Para filtrar los registros de un valor dado (sin especificar ningún límite superior), debe:
  1. Crear el valor del límite inferior con HBuildKeyValue.
  2. Crear el filtro con HFilter especificando los límites inferior y superior. En este caso, el límite máximo es igual a la constante hMaxVal.
  3. Examinar los registros seleccionados.
sFilterKey = HBuildKeyValue(CUSTOMER, NAME_ZC, "MOORE", "34000")
sSearchKey = HFilter(Customer, NAME_ZC, sFilterKey, hMaxVal)
HReadFirst(Customer, sSearchKey)
WHILE NOT HOut()
...
HReadNext(Customer, sSearchKey)
END

Filtro en los primeros componentes clave

Para filtrar los registros de los primeros componentes de una clave compuesta y realizar una clasificación de los siguientes componentes, debe hacerlo:
  1. Crear los valores mínimos y máximos de la clave compuesta con HBuildKeyValue. Sólo deben especificarse los primeros componentes.
  2. Crear el filtro con HFilter especificando los límites inferior y superior. En este caso, la constante hMinVal debe añadirse al límite inferior y hMaxVal debe añadirse al límite superior. Observaciones: hMinVal es equivalente a Char(0) y hMaxVal es equivalente a Char(255).
  3. Examinar los registros seleccionados.

Observación: Filtro con condición de selección

Si la condición del filtro afecta a varios elementos correspondientes a una clave compuesta del archivo de datos, la clave de búsqueda seleccionada automáticamente por el filtro será esta clave compuesta.
Versión mínima requerida
  • Versión 14
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 10/03/2023

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