versión 11 (Modificado)
Presentación
Este tema contiene los comandos que permiten a 4D acceder a los datos almacenados en otras aplicaciones a través de los protocolos estándar. En la versión actual de 4D, sólo los comandos ODBC están disponibles.
El estándar ODBC (Open DataBase Connectivity) define una librería de funciones estandarizadas. Estas funciones permiten a una aplicación como 4D acceder a través del lenguaje SQL a todos los sistemas de gestión de datos compatibles con ODBC (bases de datos, hojas de cálculo, etc.).
Nota: 4D permite igualmente importar y exportar datos de una fuente ODBC en modo Diseño. Para mayor información, consulte el Manual de Diseño 4D.
Los comandos ODBC de alto nivel del tema "Fuente de datos externos" de 4D pueden utilizarse para implementar soluciones simples permitiendo la comunicación entre las aplicaciones 4D y las fuentes de datos ODBC. Si sus aplicaciones necesitan un soporte más extenso del estándar ODBC, usted necesitará el plug-in ODBC "bajo nivel"de 4D, 4D ODBC Pro.
Cómo funcionan los comandos integrados ODBC
Los comandos ODBC integrados de 4D implementan los siguientes principios:
El alcance de una conexión es el proceso. Si quiere administrar simultáneamente varias conexiones, debe iniciar un proceso por ODBC LOGIN.
El comando ODBC CANCEL LOAD permite ejecutar varias solicitudes SELECT en la misma conexión.
Puede utilizar la mayoría de los comandos de este tema con el con el motor SQL interno de 4D.
Puede interceptar los errores ODBC generados durante la ejecución de uno de los comandos ODBC utilizando el comando ON ERR CALL. El comando ODBC GET LAST ERROR puede utilizarse en este caso para obtener información adicional.
Correspondencia de los tipos de datos
La siguiente tabla lista las correspondencias establecidas automáticamente por 4D entre los tipos de datos 4D y SQL:
Tipo 4D | Tipo SQL | |
C_STRING | SQL_C_CHAR | |
C_TEXT | SQL_C_CHAR | |
C_REAL | SQL_C_DOUBLE | |
C_DATE | SQL_C_TYPE_DATE | |
C_TIME | SQL_C_TYPE_TIME | |
C_BOOLEAN | SQL_C_BIT | |
C_INTEGER | SQL_C_SHORT | |
C_LONGINT | SQL_C_SLONG | |
C_BLOB | SQL_C_BINARY | |
C_PICTURE | SQL_C_BINARY | |
C_GRAPH | SQL_C_BINARY |
Referenciar las expresiones 4D en las solicitudes ODBC
4D ofrece dos maneras de insertar expresiones 4D (variables, arrays, campos, expresiones válidas) en las solicitudes ODBC: la asociación directa y la definición de parámetros utilizando ODBC SET PARAMETER.
La asociación directa se puede efectuar de dos formas:
Insertando el nombre del objeto 4D a utilizar entre los caracteres << y >> en el texto de la solicitud.
Precediendo la referencia con dos puntos":".
Ejemplos
ODBC EXECUTE("INSERT INTO emp (empnum,enombre) VALUES (<<vEmpnum>>,<<vEnombre>>)")
ODBC EXECUTE ("SELECT edad FROM Persona WHERE nombre= :vNombre")
En estos ejemplos, los valores actuales de las variables 4D vEmpnum, vEnombre y Vnombre reemplazarán los parámetros cuando la solicitud se ejecute. Esta solución también funciona con campos y arrays 4D.
Esta sintaxis de fácil utilización, presenta el inconveniente de no estar conforme al estándar SQL y no permitir la utilización de parámetros de salida. Para remediar esto, puede utilizar el comando ODBC SET PARAMETER. Este comando puede utilizarse para definir cada objeto 4D a integrar en una solicitud así como también su modo de utilización (entrada, salida o ambos). Entonces la sintaxis producida es estándar. Para mayor información, consulte la descripción del comando ODBC SET PARAMETER.
1. Este ejemplo ejecuta una solicitud ODBC que utiliza directamente los arrays 4D asociados:
ARRAY TEXT(MiArrayText;10) ARRAY LONGINT(MiArrayEnteroLargo;10) For(vContador;1;Size of array(MiArrayText)) MiArrayText{vContador}:="Text"+String(vContador) MiArrayEnteroLargo{vContador}:=vContador End for ODBC LOGIN("mysql";"root";"") SQLStmt:="insert into app_testTabla (campo_alfa, campo_enterolargo) VALUES (<<MiArrayText>>, <<MiArrayEnteroLargo>>)" ODBC EXECUTE(SQLStmt)
2. Este ejemplo puede utilizarse para ejecutar una solicitud ODBC que utiliza directamente los campos 4D asociados:
ALL RECORDS([Tabla 2]) ODBC LOGIN("mysql";"root";"") SQLStmt:="insert into app_testTabla (campo_alfa, campo_enterolargo) VALUES (<<[Tabla 2]Campo1>"+">,<<[Tabla 2]Campo2>>)" ODBC EXECUTE(SQLStmt)
3. Este ejemplo le permite ejecutar una búsqueda ODBC pasando directamente una variable vía un puntero sin referencia:
C_LONGINT($vLong) C_POINTER($vPuntero) $vLong:=1 $vPuntero:=->$vLong ODBC LOGIN("mysql";"root";"") SQLStmt:="SELECT Col1 FROM PRUEBA WHERE Col1=:$vPuntero" ODBC EXECUTE(SQLStmt)
Recuperación de valores en 4D
La recuperación en 4D de los valores que resultan de las consultas ODBC se lleva a cabo de dos formas:
Utilizando los parámetros adicionales del comando ODBC EXECUTE (solución recomendada).
Utilizando la cláusula INTO en la búsqueda SQL misma (solución reservada para casos especiales).