vMySQL Este componente permite la conexión usando ODBC con servidores MySQL. Ha sido probado en entornos windows con la versión 5.1 El objeto del mismo es encapsular la conexión usando las instrucciones nativas de velneo para la conexión a bases de datos externas Afortunadamente v7 nos permite diferentes técnicas para realizar esta tarea: (con conexiones TPC/IP, vModApache usando JSON, XML...) sin embargo, nuestro planteamiento claro es que cuando más sencillo, menos siglas y menos sistemas intermedios existan menos posibilidad de error y más sencillez en su configuración e instalación. Esta openApp está fuertemente orientada hacia MySQL, sin embargo con muy pocos cambios funcionará perfectamente contra cualquier origen de datos ODBC. Requisitos Previos Sin embargo no todo va a ser tan fácil, para poder intercambiar datos con tu base de datos MySQL vas a necesitar dos cosas • Que el servidor acepte conexiones y sepamos los datos necesarios para conectar • El driver ODBC instalado y configurado en tu ordenador Conexión con el servidor Necesitamos conocer los siguientes datos: • URL (IP) del servido • Puerto (normalmente es el 3306) • Nombre de usuario • Contraseña • Nombre de la Base de datos (dentro del servidor) vMySQL 1/5 Por otro lado el servidor tiene que aceptar conexiones remotas desde tu ip, recuerda que trataremos de conectarnos desde el ordenador dónde se ejecute el vClient (no desde el servidor). Driver ODBC Hay que descargarse el driver, la dirección de MySQL es: http://dev.mysql.com/downloads/connector/odbc/ Ojo a pesar de que tu sistema pueda ser de 64 bits, hay que descargarse el driver de 32 bits (v7 no es de 64 bits). En el momento de escribir esta información la versión es la 5.1.11 Cuando ODBC se conecta con un servidor externo lo hace o bien usando un DSN del sistema o bien a través de una cadena de conexión. Esta openApp es capaz de construir la cadena de conexión DSN de sistema De cualquier manera a veces es cómodo tener un DSN en el sistema. De esta manera se puede conectar desde varias aplicaciones instaladas en vuestro ordenador y en cada conexión solo os pedirá usuario y contraseña. Los pasos para configurar los drivers de 32-bits son los siguientes: • Lanzamos el gestor ODBC de 32 Bits (si estamos en una máquina de 64 bits ejecutamos : %WINDIR%\SysWOW64\odbcad32.exe) Después “Click” en agregar y seleccionamos MySQL ODBC 5.1 vMySQL 2/5 A partir de aquí los datos necesarios para la conexión Una vez definido el DSN desde nuestra aplicación velneo tenemos un formulario dónde debemos indicarle el nombre del DSN (puedes aplicarlo a un punto de inserción de vDiseño para poder ser lanzado desde la opción de menú configurar) vMySQL 3/5 Cadena de conexión El plan B es generar desde v7 la cadena de configuración, para ello contamos con un formulario para la creación y testeo de la misma: Damos de alta los valores de servidor (url o IP), usuario y password así como base de datos y opción que contiene los flags de la conexión (puedes ver las posibilidades en dev.mysql.com/doc/refman/5.0/en/connector-odbc-configuration-connection-parameters.html), el propio MySQL sugiere la opción 35 para access que funciona muy bien en v7 Desde el botón “Genera DSN” que nos creará la cadena de conexión y a continuación con “Test DSN” podemos ver si la misma es correcta. Con esto ya estamos conectados a la base de datos y se conectará sin necesidad de hacer DNS en el sistema operativo (simplemente tenemos que tener instalado el driver ODBC) Interacción con la base de datos Para la interactuar con la base de datos hemos previsto dos mecanismos uno sincronizado y otro asíncrono • El asíncrono se basa en enviar sentencias SQL aisladas a la base de datos, esperar su resultado y almacenar todo en la tabla SQL (grabamos la sentencia, el resultado y los datos de fecha/hora). Mediante este sistema el usuario deberá ejecutar una acción para lanzar las consultas. • El sincronizado está pensado para interconectar en tiempo real las tablas mediante eventos lanzados con posterioridad a la modificación o al alta de un registro en la base de datos. Cuando se ejecutan estos procesos de forma automática con velneo podemos lanzar una tabla a una cola de sentencias SQL para sincronizar los datos. De esta manera las tablas de la base de datos remotas se mantienen constantemente actualizadas tras cualquier cambio. vMySQL 4/5 Este mecanismo es muy potente ya que es transparente para el usuario, las tablas se sincronizan de forma transparente. Funciones En la caja de datos cuenta con varias funciones y constantes para gestionar las conexiones y la conversión de los tipos más frecuentes • MYSQL_FECHA_VELNEO_DESDE_MYSQL: Genera un tipo de dato de dato “Fecha” de velneo a partir de un campo fecha de MySQL (normalmente su formato es AAAA-MM-DD) • MYSQL_FECHA: Genera un tipo de dato de dato “Fecha” de mysql a partir de un campo fecha de velneo (genera una cadena en formato AAAA-MM-DD) • MYSQL_TEXTO: Mete las comillas necesarias para que las sentencias no den error y sea más fácil la codificación • ODBC_ESTADO_CONEXION: Devuelve el estado de la conexión con la base de datos y nos informa si el sistema tiene correctamente configurados todos los datos necesarios, nos devuelve una de las constantes definidas. (No hay DSN, no hay usuario, no hay password, conexión correcta o conexión incorrecta) • ODBC_TEST_CONEXION: Prueba una la conexión con la base de datos y nos informa del resultado de la misma, nos devuelve una de las constantes definidas. (No hay DSN, no hay usuario, no hay password, conexión correcta o conexión incorrecta) • COLA_SQL: inserta una sentencia a la cola SQL para la conexión sincronizada • STRIP_TAG: quita todos los tag html de la cadena pasada (para limpiar campos rtf) (c) Copyright: Fernando Maltrana, 2012- ticmedia.es fer@ticmedia.es "Como autor de la aplicación que cedo a Velneo, S.A., para su inclusión en el catálogo Velneo Open Apps, declaro expresamente que dispongo de la titularidad de los derechos de explotación de las aplicaciones / soluciones cedidas, exonerando expresamente a VELNEO de cualquier responsabilidad derivada de reclamaciones sobre la titularidad de los derechos de explotación de las aplicaciones / soluciones presentadas" vMySQL 5/5