4D v16.3QUERY BY SQL |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16.3
QUERY BY SQL
QUERY BY SQL
El comando QUERY BY SQL permite aprovechar directamente el motor SQL integrado de 4D. Este comando puede ejecutar una petición SELECT simple que puede escribirse de esta forma: SELECT * unaTabla es el nombre de la tabla pasada en el primer parámetro y formulaSQL la cadena de búsqueda pasada en el segundo parámetro. Por ejemplo, la siguiente instrucción: ([Empleados];"nombre=’juan’") es equivalente a la búsqueda SQL: SELECT * FROM Empleados WHERE "nombre=’juan’" El comando QUERY BY SQL es similar al comando QUERY BY FORMULA. El comando busca registros en la tabla especificada. Modifica la selección actual de unaTabla para el proceso actual y vuelve el primer registro de la nueva selección el registro actual. Nota: el comando QUERY BY SQL no puede utilizarse en el contexto de una conexión SQL externa; él contacta el motor SQL integrado de 4D directamente. QUERY BY SQL aplica formulaSQL a cada registro de la selección de la tabla. formulaSQL es una expresión booleana que debe devolver True o False. Como sabe, en el estándar SQL, una condición de búsqueda puede tener un resultado True, False o NULL. Todos los registros (filas) donde la condición de búsqueda devuelva True se incluyen en la nueva selección actual. La expresión formulaSQL puede ser simple, como la comparación de un campo (columna) con un valor; o compleja, como un cálculo. Como QUERY BY FORMULA, QUERY BY SQL puede evaluar la información en las tablas relacionadas (ver el ejemplo 4). formulaSQL debe ser una instrucción SQL válida, conforme con el estándar SQL-2 y con respecto a las limitaciones actuales de implementación del SQL en 4D. Para mayor información sobre soporte SQL en 4D, consulte el manual 4D SQL. El parámetro formulaSQL puede utilizar referencias a expresiones 4D. La sintaxis a utilizar es la misma que para los comandos SQL integrados o el código incluido entre las etiquetas Begin SQL/End SQL, es decir: <<MiVar>> o :MiVar. Para mayor información, consulte la sección . Nota: este comando es compatible con los comandos SET QUERY LIMIT y SET QUERY DESTINATION. Recordatorio: las referencias a las variables locales no son posibles en modo compilado. Para mayor información sobre la programación SQL en 4D, consulte la sección Presentación de los comandos del tema SQL QUERY BY SQL no utiliza relaciones entre tablas definidas en el editor de estructura 4D. Si quiere utilizar los datos relacionados, tendrá que añadir JOIN a la búsqueda. Por ejemplo, asumiendo que tenemos la siguiente estructura, en la cual una relación Muchos a Uno está relacionado los campos [Personas]Ciudad con [Ciudades]Nombre: [Personas] Utilizando el comando QUERY BY FORMULA, puede escribir: QUERY BY FORMULA([Personas];[Ciudades]Poblacion>1000) Utilizando QUERY BY SQL, debe escribir la siguiente instrucción, sin importar si la relación existe o no: QUERY BY SQL([Personas];"personas.ciudad=ciudades.nombre AND ciudades.población>1000") Nota: QUERY BY SQL trata las relaciones Uno a Muchos y Muchos a Uno de una manera diferente a la de QUERY BY FORMULA. Este ejemplo muestra las oficinas con ventas superiores a 100. La búsqueda SQL es: SELECT * Utilizando el comando QUERY BY SQL: C_STRING(30;$formulabusqueda) Este ejemplo muestra las órdenes comprendidas entre 3 000 y 4 000. La búsqueda SQL es: SELECT * Utilizando el comando QUERY BY SQL: C_STRING(40;$formulabusqueda) Este ejemplo muestra cómo obtener el resultado de la búsqueda ordenado con un criterio específico. La búsqueda SQL es: SELECT * Utilizando el comando QUERY BY SQL: C_STRING(40;$formulabusqueda) Este ejemplo muestra una búsqueda utilizando tablas relacionadas en 4D. En SQL debe utilizar un JOIN para simular esta relación. Consideremos las dos tablas siguientes: [Facturas] con los campos (columnas) siguientes: Existe una relación Muchos a Uno de [Lineas_Facturas]ID_Fact con [Facturas]ID_Fact. Utilizando el comando QUERY BY FORMULA, puede escribir: QUERY BY FORMULA([Lineas_Facturas];([Lineas_Facturas]Codigo="FX-200") & (Month of([Facturas]Fecha_Fact)=4)) La búsqueda SQL es: SELECT ID_Linea Cuando utiliza el comando QUERY BY SQL: C_STRING(40;$queryFormula) Si el formato de la condición de búsqueda es correcto, la variable sistema OK toma el valor 1. De lo contrario, toma el valor 0, el resultado del comando es una selección vacía y se devuelve un error. Este error puede ser interceptado por un método instalado utilizando el comando ON ERR CALL.
Ver también
|
PROPIEDADES
Producto: 4D HISTORIA
Creado por: 4D v11 SQL ARTICLE USAGE
Manual de lenguaje 4D ( 4D v16) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||