4D v16.3QUERY |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16.3
QUERY
QUERY
El comando QUERY busca los registros que corresponden al criterio especificado en criterioBusqueda y devuelve una selección de registros de tabla. QUERY modifica la selección actual de tabla para el proceso actual y vuelve el primer registro de la nueva selección el registro actual. Si omite el parámetro tabla, el comando se aplica a la tabla por defecto. Si no se ha definido una tabla por defecto, se genera un error. Si no especifica criterioBusqueda ni el parámetro *, QUERY muestra la caja de diálogo del editor de búsquedas para tabla (excepto cuando es la última fila de una búsqueda múltiple, ver ejemplo 2): Para mayor información sobre la utilización de este editor, consulte el Manual de Diseño. El usuario construye la búsqueda, luego hace clic en el botón Buscar o Buscar en la selección. Si la búsqueda se realiza sin interrupciones, la variable sistema OK toma el valor 1. Si el usuario hace clic en Cancelar, el comando QUERY es interrumpido sin realizar la búsqueda y la variable OK toma el valor 0 (cero). El ejemplo siguiente muestra el editor de búsquedas para la tabla [Productos]: QUERY([Productos]) La línea siguiente muestra el editor de búsquedas para la tabla por defecto (si se ha definido) QUERY Si especifica el parámetro criterioBusqueda, el editor de búsquedas no se muestra y la búsqueda se define por programación. Para búsquedas simples (búsquedas en un solo campo) usted llama QUERY una vez con el parámetro criterioBusqueda. Para búsquedas complejas (búsquedas en múltiples campos o con múltiples condiciones), llame QUERY tantas veces como sea necesario con el parámetro criterioBusqueda, y el parámetro opcional *, excepto para la última llama QUERY, la cual inicia la búsqueda. El siguiente ejemplo busca las [Personas] cuyo nombre comienza por “a”: QUERY([Personas];[Personas]Nombre="a@") El siguiente ejemplo busca las [Personas] cuyo nombre comienza por “a” o “b”: QUERY([Personas];[Personas]Nombre="a@";*) ` * indica que hay otro criterio de búsqueda
{ operador; } campo comparador valor
El operador es opcional y no es necesario para la primera llamada a QUERY de una búsqueda múltiple, o si la búsqueda es una búsqueda simple.
Nota: es posible definir el comparador bajo la forma de una expresión alfanumérica en lugar de un símbolo. En ese caso, es obligatorio utilizar punto y comas para disociar los elementos de la cadena de búsqueda. Este principio permite por ejemplo crear secuencias de búsquedas parámetrables variando el comparador, o construir interfaces de búsqueda usuario personalizadas. Consulte el ejemplo 21.
Estas son las reglas a tener en cuenta para la construcción de búsquedas múltiples:
Nota: cada tabla mantiene su propia construcción de búsqueda actual. Esto significa que puede crear múltiples búsquedas simultáneamente, una por cada tabla. Debe utilizar el parámetro tabla o especificar una tabla por defecto. Sin importar de qué manera se ha definido una búsqueda:
Buscamos los registros para que correspondan a personas con el apellido López: QUERY([Personas];[Personas]Apellido="López") Nota: si el campo Apellido está indexado, nos beneficiamos de una búsqueda acelerada utilizando el índice. Recordatorio: esta búsqueda encontrará registros como “López”, “lópez”, “LÓPEZ”, etc. Si quiere que la búsqueda tenga en cuenta las mayúsculas y minúsculas, defina criterios suplementarios que utilicen los códigos ASCII. El siguiente ejemplo busca los registros de personas llamadas Carlos López. El campo Apellido está indexado. El campo Nombre no está indexado. QUERY([Personas];[Personas]Last Name="lópez";*) ` Buscar todas las personas de apellido López Cuando se realiza la búsqueda, primero se efectúa una búsqueda rápida en el campo indexado Apellido, y se reduce la selección de registros a las personas de apellido López. La búsqueda luego busca secuencialmente en el campo Nombre en esta selección de registros. El siguiente ejemplo aprovechará automáticamente un índice compuesto de los campos [People]First Name+[People]Last Name (si existe) para encontrar los registros de todas las personas llamadas John Smith. QUERY([People];[People]First Name="john";*) ` Buscar a cada persona llamada John Para más información, consulte Índices compuestos. El siguiente ejemplo busca registros de personas de apellido López o Gómez. El campo Apellido está indexado. QUERY([Personas];[Personas]Apellido="lópez";*) ` Buscar todas las personas de apellido López… El comando QUERY utiliza el índice del campo Apellido para ambas búsquedas. Las dos búsquedas se efectúan, y sus resultados se colocan en conjuntos internos que son combinados eventualmente utilizando una operación de unión. El siguiente ejemplo busca los registros de personas que no trabajan en una empresa. La búsqueda se realiza probando si el nombre de la empresa es una cadena vacía. QUERY([Personas];[Personas]Empresa="") ` Buscar las personas sin empresa El siguiente ejemplo busca cada persona cuyo apellido es López, y trabaja para una empresa en Barcelona. La segunda búsqueda utiliza un campo de otra tabla. Esta búsqueda se puede efectuar porque la tabla [Personas] está relacionada a la tabla [Empresa] por una relación muchos a uno: QUERY([Personas];[Personas]Apellido="lópez";*) ` Buscar todas las personas de apellido López… El siguiente ejemplo busca el registro de cada persona cuyo inicial del nombre esté entre la letra A (incluida) y M (incluida): QUERY([Personas];[Personas]Nombre<"n") ` Encontrar todas las personas entre A y M El siguiente ejemplo busca los registros de las personas que viven en Madrid o Barcelona: QUERY([Personas];[Personas]CodigoPostal="28@";*) ` Buscar toda las personas que viven en Madrid… Búsqueda por palabra clave: el siguiente ejemplo busca en toda la tabla [Productos] los registros cuyo campo Descripción contenga la palabra "fácil": QUERY([Productos];[Productos]Descripcion="fácil") ` Buscar productos cuya descripción contenga la palabra clave fácil El siguiente ejemplo busca los registros que corresponden a la referencia de la factura introducida en una caja de diálogo: vBuscar:=Request("Introducir una referencia de factura:") ` Obtener una referencia de factura del usuario El siguiente ejemplo busca los registros de facturas introducidas en 1996. Buscamos todos los registros introducidos entre el 31/12/95 y 1/1/97: QUERY([Facturas];[Facturas]FechaFactura >!31/12/95!;*) ` Buscar facturas después de 31/12/95… El siguiente ejemplo busca los empleados cuyo salario está entre $10 000 y $50 000. La búsqueda incluye los empleados que ganan $10 000, pero excluye a los que ganan $50 000: QUERY([Empleados];[Empleados]Salario >=10000;*) ` Buscar los empleados que tengan un salario entre… El siguiente ejemplo busca los empleados del departamento de mercadeo con salarios superiores a $20 000. Se busca primero en el campo Salario porque está indexado. Observe que la segunda búsqueda utiliza un campo de otra tabla. Esto es posible porque la tabla [Dept] está relacionada a la tabla [Empleados] por una relación automática de muchos a uno. Aunque el campo [Dept]Nombre está indexado, la búsqueda no es indexada porque la relación debe ser activada secuencialmente para cada registro en la tabla [Empleados]: QUERY([Empleados];[Empleados]Salario >20000;*) ` Buscar los empleados con salarios superiores a $20 000 y... Se tienen tres tablas relacionadas de muchos a uno: [Ciudad] -> [Departamento] -> [Region]. El siguiente ejemplo busca las regiones cuyas ciudades comienzan con "New". QUERY([Region];[Ciudad]Nombre="New") ` Buscar todas las regiosnes cuyas ciudades comienzan por "New" El siguiente ejemplo busca la información igual al valor de la variable miVar. QUERY([Leyes];[Leyes]Texto =miVar) ` Buscar todas las leyes que son iguales al valor de miVar La búsqueda puede tener muchos resultados diferentes, dependiendo del valor de miVar. La búsqueda se realizará también de manera diferente. Por ejemplo:
El siguiente ejemplo añade o no líneas a una búsqueda compleja dependiendo del valor de las variables. De esta forma, sólo los criterios válidos son tenidos en cuenta para la búsqueda. QUERY([Factura];[Factura]Pagada=False;*) Este ejemplo ilustra la utilización de un operador de comparación como expresión alfanumérica. El valor del operador de comparación está definido a través de un menú desplegable ubicado en una caja de diálogo de búsqueda personalizada: C_TEXT($oper) If(OK=1) El uso de los índices de palabras claves puede acelerar de manera importante sus aplicaciones. QUERY([IMAGENES];[IMAGENES]Fotos%"gatos") // buscar fotos asociadas con la palabra clave "gatos" Si la búsqueda se lleva a cabo correctamente, la variable sistema OK toma el valor 1.
Ver también
|
PROPIEDADES
Producto: 4D HISTORIA
Modificado: 4D v11 SQL ARTICLE USAGE
Manual de lenguaje 4D ( 4D v16) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||