La culpa fue del spectrum

La culpa fue del spectrum

miércoles, 30 de junio de 2010

SQL desde ruby al AS400

Aquí un breve ejemplo de como haría una consulta SQL al AS400 desde ruby utilizando una conexión ODBC.

require 'rubygems'
require 'odbc'
require 'dbi'

sentencia='select max(FECHA) from biblioteca.TABLA'
dbh = DBI.connect('DBI:ODBC:AS400', 'usu', 'pas')
sth = dbh.prepare(sentencia)
sth.execute
while row=sth.fetch do
eFEC=row[0]
end
sth.finish
dbh.disconnect

Para los que no sepan nada de ruby, require lo utilizamos para indicar las gemas que necesitas, digamos que las gemas son algo parecido a tener programas de servicio, o módulos en ile que vas a utilizar desde este programa.

En sentencia guardo la select que quiero hacer.
En el objeto dbh creo la conexión por odbc utilizando DBI, AS400 es el nombre de la conexión, usu y pas son usuario y contraseña para realizar la conexión.
A sth le asigno la conexión pasando como parámetro la sentencia y después ejecuto (sth.execute).
A row le voy pasando todos los datos que devuelve el cursor de la sentencia, en este caso solo devuelve un registro ya que busco la fecha más reciente, row es una matriz que tiene tantos valores como campos de la tabla tengamos seleccionados, las matrices en ruby empiezan desde cero, en este caso como solo hay un valor paso row[0] a una variable.
Después finalizo la ejecución cerrando el cursor y en la siguiente finalizo la conexión.

Esto es lo que realiza el programa, supongo que alguien experto en ruby lo explicaría mejor, pero estoy seguro de que esto servirá de ayuda a quien quiera empezar ha realizar algo en ruby teniendo que obtener datos del AS400.

Hay mucha información y manuales sobre ruby en la red pero no fue fácil encontrar información sobre como acceder por ODBC y mucho menos a una base de datos de un AS400.

Yo personalmente para la gente que tenga curiosidad recomiendo esta web, aquí podéis descargar la versión gratuita de un libro para empezar a aprender ruby desde cero.

jueves, 17 de junio de 2010

ODBC para AS400 en un XP

Aunque supongo que la mayoría de la gente ya sabe de sobra como crear y configurar una conexión ODBC, yo en esta entrada voy a exponer como lo hago.

Espero poder ayudar a alguien, sino seguro que a mi mismo me servirá.

Para empezar tendré que instalar el driver que viene con el client access o iseries access.

Después en xp desde el panel de control, accedemos a Herramientas Administrativas y desde ahí a Orígenes de datos ODBC, ahí pinchamos en la opción DSN de sistema (pestaña central) y pulsamos en el botón agregar.



Elegimos la primera opción y pulsamos finalizar, a partir de ese momento nos aparecerá un asistente donde tendremos que configurar la conexión.

Primero definiremos el nombre y la ip de nuestro servidor AS400





En la pestaña servidor definiremos la biblioteca por omisión y la lista de bibliotecas disponibles, normalmente para mi esto no tiene gran importancia ya que después para acceder desde el código siempre lo realizo indicando la biblioteca antes de la tabla.

En la opción convenio de denominación siempre lo dejo por defecto y debajo si indico si quiero tener acceso de solo lectura, o bien de actualización.

Después es muy importante pulsar avanzadas para definir la modalidad de compromiso, separador decimal y formatos de fecha y hora, para adaptarlos a nuestras necesidades.



En la pestaña idioma definimos nuestro idioma y el resto de pestañas o bien las dejamos por defecto o modificamos si necesitamos alguna opción adicional.

Con esto ya podemos empezar ha realizar pruebas, yo en concreto esta configuración la he utilizado para hacer cosas con ruby. En otra entrada pondré un ejemplo de como lo he hecho, aunque ya aviso que mis conocimientos de ruby no son muy avanzados.

Conduce entre la niebla

La culpa fue del spectrum