- 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
Claves compuestas
Disponible solo con estos tipos de conexió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: - 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".
- Haga clic en . Aparece una pantalla que permite construir la clave compuesta.
- 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.
- 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. - Especifique la dirección de búsqueda y los parámetros de búsqueda para cada tecla Component.
- 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:
| | Binary | El Binario Property se utiliza para determinar si un elemento es binario. | Component | La propiedad Component configura los diferentes componentes de una clave compuesta. | CompositeKey | La propiedad CompositeKey determina si un campo es una clave compuesta. | KeyExpression | La KeyExpression Property se utiliza para set los diferentes componentes de una clave compuesta. | NbComponent | El 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: - Construir el valor de la clave de búsqueda con HBuildKeyValue. Se deben especificar todos los valores de los componentes clave.
- 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: - Construir el valor de la clave de búsqueda con HBuildKeyValue. Se deben especificar todos los valores de los componentes clave.
- 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: - Construir el valor de la clave de búsqueda con HBuildKeyValue. Sólo se pueden especificar los valores de los primeros componentes clave.
- 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: - Construir el valor de la clave de búsqueda con HBuildKeyValue. Sólo se pueden especificar los valores de los primeros componentes clave.
- 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 HF | Define y activa un filtro en un archivo de datos, vista o consulta. | HFilterIdentical | Define y habilita un filtro utilizado para encontrar el valor exacto de un elemento de cadena. | HFilterIncludedBetween | Define y activa un filtro de tipo "Comprendido entre" en un archivo de datos, vista o consulta. | HFilterStartsWith | Define 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: - Cree los valores de cada límite con HBuildKeyValue.
- Cree el filtro con HFilter y especifique los dos límites.
- 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: - Crear el valor del límite inferior con HBuildKeyValue.
- 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.
- 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: - Crear los valores mínimos y máximos de la clave compuesta con HBuildKeyValue. Sólo deben especificarse los primeros componentes.
- 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).
- 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.
Esta página también está disponible para…
|
|
|