4D v16.3QUERY BY FORMULA |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16.3
QUERY BY FORMULA
QUERY BY FORMULA
QUERY BY FORMULA busca registros en tabla. QUERY BY FORMULA modifica la selección actual de tabla para el proceso actual y hace del primer registro el nuevo registro actual. QUERY BY FORMULA y QUERY SELECTION BY FORMULA funcionan exactamente de la misma manera, excepto que QUERY BY FORMULA busca en todos los registros de la tabla y QUERY SELECTION BY FORMULA busca únicamente en los registros de la selección actual. Los dos comandos aplican formula a cada registro de la tabla o de la selección. formula es una expresión booleana que debe devolver TRUE o FALSE. Si formula devuelve TRUE, el registro está incluido en la nueva selección. El parámetro formula puede ser simple, como la comparación de un campo con un valor; o compleja, como la realización de un calculo o incluso una evaluación de los valores en una tabla relacionada. formula puede ser una función 4D (comando), o una expresión que usted haya creado. Cuando trabaje con campos de tipo Alfa o Texto, puede utilizar en formula símbolos arroba (@) como también el operador "contiene" (%) para búsquedas de palabras claves. Para mayor información, por favor consulte la descripción del comando QUERY. Si omite el parámetro formula, 4D muestra la caja de diálogo de búsqueda (el usuario puede añadir una línea de fórmula efectuando Alt+clic en el botón [+]). Cuando termina la búsqueda, el primer registro de la nueva selección es cargado desde el disco y se convierte en el registro actual. Estos comandos son optimizados y pueden particularmente aprovechar los índices. Cuando el tipo de búsqueda lo permite, estos comandos ejecutan búsquedas equivalentes al comando QUERY. Por ejemplo, la instrucción QUERY BY FORMULA ([mitabla]; [mitabla]micampo=valor) se ejecutará igual que QUERY ([mitabla]; [mitabla]micampo=valor), que permite utilizar índices. 4D también puede optimizar búsquedas que contengan partes que no puedan ser optimizadas, ejecutando primero las partes optimizables y luego combinando los resultados con el resto de la búsqueda. Por ejemplo, la instrucción QUERY BY FORMULA ([mitabla]; Length(micampo)=valor1 | micampo=valor2 ) se optimizará parcialmente. Estos comandos por defecto efectúan “uniones” como SQL cuando compara campos de diferentes tablas. Esto significa que no es necesario que exista una relación automática estructural entre las tablas. Por ejemplo, puede ejecutar una instrucción del tipo QUERY BY FORMULA([Table_A];([Table_A]field_X = [Table_B]field_Y) & ([Table_B]field_Y = "abc")) (ver ejemplo 3). La primera parte de la fórmula ([Table_A]field_X = [Table_B]field_Y) establece la unión entre dos campos y la segunda parte ([Table_B]field_Y = "abc") define el criterio de búsqueda (al menos un criterio debe definirse). - Si la formula no puede descomponerse en elementos de la forma { campo ; comparador ; valor} Nota: por razones de compatibilidad, es posible desactivar el mecanismo de uniones, bien sea globalmente vía las Preferencias de la base (bases de datos convertidas únicamente) o por procesos utilizando el comando SET DATABASE PARAMETER. 4D Server: este comando se ejecuta en el servidor, lo cual optimiza su ejecución. Note que cuando las variables son llamadas directamente en formula, la ordenación se calcula con el valor de la variable en el equipo cliente. Por ejemplo, la instrucción QUERY BY FORMULA ([mitabla]; [mitabla]micampo=mivariable) se ejecutará en el servidor pero con el contenido de la variable mivariable del equipo cliente. Compatibility note: hasta 4D Server v11, este comando se ejecutaba en el equipo cliente. Por compatibilidad, este funcionamiento se conserva en las bases de datos convertidas. Sin embargo, una propiedad de compatibilidad y un selector del comando SET DATABASE PARAMETER permiten adoptar la ejecución en el servidor en bases de datos convertidas. Este ejemplo busca los registros para todas las facturas que se introdujeron en diciembre de cualquier año. El principio consiste en aplicar la función Month of a cada registro. Esta búsqueda no podría realizarse de otra forma sin crear un campo separado para el mes: QUERY BY FORMULA([Facturas];Month of([Facturas]Entrada)=12) ` Buscar las facturas entradas en diciembre Este ejemplo busca los registros de las personas que tienen nombres con más de 10 caracteres: QUERY BY FORMULA([Personas];Length([Personas]Nombre)>10) ` Buscar nombres de más de diez caracteres Este ejemplo activa las uniones SQL para una búsqueda por fórmula específica: $valorActual:=Get database parameter(QUERY BY FORMULA Joins)
Ver también
QUERY
|
PROPIEDADES
Producto: 4D HISTORIA
Modificado: 4D v11 SQL Release 2 ARTICLE USAGE
Manual de lenguaje 4D ( 4D v16) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||