miércoles, 11 de enero de 2017

Integrando A2 (A2softwaay) con PHP para hacer consultas desde un servidor Web



El siguiente articulo lo hago ya que he notado que existe muy poca información en la red al respecto, y muchas personas tienen la necesidad de integrar su sistema administrativo a cualquier modulo o desarrollo externo y no saben por donde empezar. 

Inicialmente, debemos tomar en cuenta que el sistema administrativo utiliza como "motor de base de datos" el DBISAM de Elevatesoft, "motor" no muy conocido para mi y que honestamente me pareció bastante primitivo, pero bueno, no es mi problema criticar las decisiones de sus desarrolladores. Como es el caso de todo motor nuevo que vayamos a implementar, debemos descargar los drivers ODBC. En el siguiente archivo dejaré todo lo necesario para que puedan iniciar con la instalación, adicionalmente incluyo el sistema de gestión para el DBISAM llamado DBSYS, con el mismo se pueden visualizar por interfaz y no por consola las tablas y realizar modificaciones de forma demasiado sencilla (en serio, demasiado).  

DRIVER Y DBSYS 

Una vez descargado el paquete, debemos descomprimir (obviamente) e instalar el driver. Una vez instalado, debemos ejecutar el administrador de orígenes de datos de ODBC (pulsando windows + R Y odbcad32) claro, esto depende de tu sistema operativo y de su arquitectura. 

La ventana que debes ver es la siguiente:



Una vez allí, debes darle click en agregar, y como previamente ya instalaste el driver ODBC este ya debe aparecer en tu lista, al seleccionarlo debes hacer click en finalizar.


 En la siguiente ventana, deberás asignar un nombre a la conexión



 Lo que sigue es bastante importante, debes seleccionar si las operaciones (CRUD) se harán de forma local o a un servidor especifico. 




 Lo que sigue es configurar la ruta en donde se encuentran las tablas de nuestra instalación de a2 (las tablas que queremos trabajar). Generalmente, dependiendo de en donde esté la instalación, la ruta deberá ser algo así: C:\a2Softway\Empre001\Data




 Las siguientes ventas son configuraciones adicionales un poco más especificas, puedes dejarlas por defecto siempre y cuando no tengas un requerimiento muy grande. En cualquier caso, si tienes alguna duda puedes dejarla en los comentarios.




 Al final del proceso verás el nombre que le asignaste a tu conexión y listo, teóricamente ya puedes hacer operaciones sobre la base de datos.



Realizando las consultas

El siguiente paso obviamente será verificar si tu conexión está funcionando realizando las consultas desde el lenguaje de tu preferencia. En este momento, asumiré que poseer conocimientos decentes en informática (ya que intentas realizar operaciones sobre una base de datos con un lenguaje y un modulo externo) las ventajas de realizar operaciones sobre estas tablas son infinitas, va de acuerdo a los requerimientos de tu desarrollo las tablas que quieras tocar. En este ejemplo específicamente realizaré una consulta utilizando PHP, en mi caso. Sin embargo, la estructura es muy similar en cualquier lenguaje que necesites emplear, lo que necesitas es:


1.- Un conector: en el caso de php es la variable $db igualada al método de conexión odbc_connect. Los parámetros iniciales del método deben permanecer, el resto representa la ruta, el usuario y la contraseña. En mi caso, estoy utilizando un servidor local xampp, por ello la ruta se dirige al servidor. Adicionalmente, mi conexión DBISAM no tiene clave. Esto es muy importante, ya que puede generar errores, por ello ese campo está en blanco.

$db = odbc_connect("DRIVER={DBISAM 4 ODBC Driver};ConnectionType=Local;CatalogName=c:/xampp/Data/;","admin","");


2.- Una consulta: La consulta ejemplo apunta a la tabla Sclientes del A2. Pide los campos FC_CODIGO, FC_DESCRIPCION, FC_TIPO, Que representan la cedula, el nombre del cliente y el tipo. Cabe destacar, que la variable "$cedula" se obtiene de un metodo _POST HTML, la misma puede ser modificada por el campo requerido para la consulta a gusto de cada quien. 


$res = odbc_exec($db,"SELECT FC_CODIGO, FC_DESCRIPCION, FC_TIPO, FROM Sclientes WHERE FC_CODIGO = '$CEDULA';");


3.- Un resulset: Es básicamente el arreglo que contiene los resultados de la consulta. En el caso de esta consulta, debe traer la lista de todos los clientes en la base de datos, con su nombre, cedula y tipo.


echo odbc_num_rows($res)." rows found"; while($row = odbc_fetch_array($res)) { print_r($row); }


Como ya he dicho, estos son los ingredientes básicos para poder realizar operaciones sobre tablas de A2 y cualquier sistema que utilice como motor el DBISAM, y en términos generales con cualquier motor sigue el mismo esquema. Los fragmentos del código utilizado están totalmente verificados y operativos, ya queda por parte del programador su correcta implementación. 

Finalmente, les dejo el código completo del proyecto, estoy seguro que como inicio será de mucha utilidad para los que intenten integrar A2 con cualquier otro tipo de sistema. Recuerden que lo actual, es una consulta web, por lo tanto el codigo contiene fragmentos de HTML, PHP e invocaciones a CSS externos que le dan estilo, las validaciones y el resto queda de su parte desarrollarlas. 

Kikeex

Programador web, soporte IT y especialista en seguridad informática. Amante de la tecnología, enemigo de las pseudo ciencias y el conformismo. Irreverente, directo y bastante honesto con mis opiniones.

16 comentarios:

  1. Como abrir el comprimidor del driver?

    ResponderEliminar
    Respuestas
    1. Saludos Edbin,
      Gracias por tu comentario, el enlace estaba mal pero lo acabo de actualizar.
      De cualquier manera te lo dejo por acá directamente:
      https://mega.nz/#!1ooimIgL!FUW7qzt3BsQvsMWq5bMd6uCyO4LInW_JKoYhsrdO3ak

      ¡Gracias por tu visita!

      Eliminar
  2. un buena ayuda hermano, pero baje e instale el drivers pero no me sale en la lista para configurarlo, tengo windows 10 pro

    ResponderEliminar
    Respuestas
    1. Saludos Abdul,

      Probablemente sea por la arquitectura de tu sistema operativo, sin ingresaste el comando "odbcad32" y no te salió nada, entonces por descarte debe ser de 64bits.

      Ve a la ruta: “C:\Windows\SysWOW64” y busca el archivo "odbcad32.exe" y ejecútalo como administrador.

      Eliminar
  3. Mil gracias hermano, ya me funciono, debía reiniciar la compu

    ResponderEliminar
  4. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  5. Buenas dias amigo, me sirvió de mucha ayuda ya que ando realizando un pequeño programa web de consultas con el a2 softway pero tengo un problema, el sistema a2 al crear las tablas inserta informacion importante (prescios de productos y excistencias) en una tabla en especifica y esta la ingresa en un campo blob de una tabla, una vez accedo a la tabla y al campo blob no se como leer los datos almacenados alli. Ejemplo: en la tabla FX_FIXED en el campo FX_COSTOS del tipo BLOB esta una tabla que contiene los costos de los produsctos pero no puedo leerlo adecuadamente, si me puedes ayudar de alguna manera lo agradeceria por favor

    ResponderEliminar
    Respuestas
    1. Saludos Jesús,
      El DBISAM por defecto, para los campos BLOB trae una compresión zlib, te recomiendo leer la documentación para manipular este tipo de compresión.

      Sin embargo, si lo que buscas es manipular precios y existencias, puedes acceder a ellas sin tocar los campos BLOB.

      Eliminar
  6. Campeonn buenas tardes, para conectarlo con el SQL no tienes algun driver mas actual es que me tira error :(

    ResponderEliminar
    Respuestas
    1. Saludos Memo David,
      El driver está en su ultima versión y lo estoy
      corriendo actualmente en windows 10 con todas
      las actualizaciones. Si gustas, dame mas detalles
      sobre el error para poder orientarte un poco.

      Eliminar
  7. no el driver mas actual es e. 4.43 build 5 y el que subio hermano es el 4.29, lo que yo hago es conectarlo con SQL server pero con la 4.29 me lanza error de conexion

    ResponderEliminar
  8. Todo de maravilla puedo consultar todas las tablas, ahora al realizar update me dice esto "odbc_exec(): SQL error: [Elevate Software][DBISAM] DBISAM Engine Error # 11949 SQL parsing error - Database is read-only and INSERT, UPDATE, or DELETE "

    ResponderEliminar
  9. Hola Gente, sobre los campos BLOB no se puede acceder sin el permiso y autorizacion de a2, Solo los desarrolladores autorizados y Distribuidor Certificado puede desarrollar sobre estos campo. Desde la Version 8.0 cambiaron la programacion para acceder, Solo las versiones anteriores V 7.0 para atras se pueden hacer desarrollos. Estamos a la orden cualquier apoyo con gusto.

    ResponderEliminar
  10. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  11. Buenas amigos quisiera saber si puedo conectar a una base de datos externa al servidor como haria la conexión ConnectionType=Local

    ResponderEliminar
  12. Gracias por esta valiosa información, voy a hacer los primeros intentos de conexión, pero pues al ver tus conocimientos, creo puedas asesorarme. Requiero crear un evento cron o taks manager, que cada cierto tiempo verifique si hay una nueva factura y extraer los items vendidos y sus cantidades. Sabes que tablas son las de ventas y/o facturas?, los demás aspectos creo los sabre manejar.

    Te agradezco en lo que me puedas orientar.

    Saludos.

    ResponderEliminar

 

Copyright @ 2017 Pwned!!.