La culpa fue del spectrum

La culpa fue del spectrum

viernes, 29 de julio de 2011

Acceder al AS400 desde Libre Office usando JDBC. (parte 2)

Vamos a continuar con la segunda parte donde vamos a configurar una conexión.

Abrimos una nueva base de datos de libreoffice
Y elegimos conectar con una base de datos existente (JDBC)

En la siguiente pantalla introducimos la ip de nuestro AS400 y la clase que tenemos que usar dejándolo tal como esta aquí.


Ahora el usuario para conectarnos, aquí como medida de seguridad es interesante usar un usuario sin capacidad de conectarse de forma interactiva.


Le marcamos la opción de que requiere contraseña y pinchamos en conexión de prueba para que nos solicite contraseña y comprobemos que se conecta.

  
Si la conexión no es correcta no veremos esta ventana, tendremos que revisar contraseña, y dirección ip del servidor. 

Si todo es correcto seguiremos pulsando siguiente hasta completar el proceso y ver una ventana como esta.  

Aquí ahora nos saldrán las bibliotecas que por defecto se cargan en el perfil de usuario que usamos para conectarlos. A partir de ahí en consultas podrías crearte con los asistentes las consultas que necesitaras. Yo prefiero utilizar directamente el editor sql para crear la consulta y salvarla tal como se puede ver en la siguiente imagen.


La consulta la salvas con el nombre que consideres apropiado por ejemplo pedidos del cliente fulano.
Salvas la base de datos de libreoffice.

Después enlazas una hoja de cálculo con la base de datos, abres la hoja de cálculo y pulsas F4


Ahora te aparecerán todas las bases de datos de libreoffice que tengas y tendrar que elegir la que quieres y dentro de ella la consulta que quieres. Como se pude ver en nuestro ejemplo sería i5, consultas, consulta1


Una vez eliges la consulta te pedirá usuario y contraseña (el mismo que hemos usado antes) y te mostrará los registros, pulsas sobre el botón datos en texto y te pasará los datos a la hoja de cálculo.


Si no te aparece la base de datos que grabaste cuando pulsas F4, revisa la ubicación que le diste al grabar y añádela desde opciones, libreoffice base, base de datos.

Todo esto se puede aplicar tanto a windows (xp y 7) como a linux (debian, ubuntu, opensuse, fedora...)

Bueno, creo que ya hemos terminado, espero que os sirva de utilidad y para demostrar el potencial del software libre.

lunes, 25 de julio de 2011

Acceder al AS400 desde Libre Office usando JDBC.

Hace ya unos meses que deje de usar Open Office, en su lugar estoy usando Libre Office, no es que ahora mismo uno sea mejor que otro, simplemente creo que el futuro está en Libre Office, Oracle después de espantar a todos los interesados en Open Office a terminado donándolo a la fundación apache no se bien para qué.
Pero entrando ya en materia,  voy a explicar como configurar Libre Office para acceder a una tabla de nuestro AS400 utilizando JDBC, por supuesto todo esto es valido para Open Office.

Descargar jtopen

Jtopen es la versión de código abierto del toolbox que IBM incluye con Iseries Access. Consigue que acceder desde cualquier aplicación java al AS400 sea sencillo, o más sencillo de lo que muchos piensan.
La última versión en la 7.4, la descargamos si no la tenemos ya. Si tienes una versión anterior ya descargada también es valida.

Configurar libreoffice para usar jtopen

Arrancamos libre office, vamos a configurarlo para que use Jtopen.


Pulsamos en herramientas, y luego en libreoffice elegimos java (la última de las que aparecen desplegadas)


Después pulsamos en el botón ruta de clase y en la ventana que nos aparece pulsamos agregar paquete  y navegamos hasta la ubicación de la carpeta donde tengamos descomprimido el zip del jtopen.
Buscamos jt400.rar y lo seleccionamos. Pulsamos Aceptar.

Nos aparece el mensaje de advertencia para que nos acordemos de que hay que cerrar libreoffice para que se apliquen los cambios.

Con esto ya tenemos configurado nuestro libreoffice para usar jtopen, en la siguiente entrada crearemos la conexión.





lunes, 28 de marzo de 2011

Convertir Listados AS400 a PDF

Hay muchas formas de convertir un listado de AS400 pdf, todos pasan por crear impresoras o colas virtuales donde todo lo que mandemos se convertirá a pdf.

Para la gente bien, los que tienen máquinas modernas y euros para comprar productos esta claro que lo mejor es el infoprint server de la propia IBM, este permite muchas posibilidades no solo convierte a pdf sino que te lo manda por correo electrónico, te lo deja en recurso del ifs, etc...

Para los pobres, los que tenemos máquinas antiguas y que solo tendremos acceso al infoprint server cuando sea gratis (no se si en la actualidad ya lo es) hay otras alternativas más o menos elegantes que yo he tenido el gusto o la necesidad de probar.

Una es configurar una sesión de impresora con Client Access y redirigirla a una impresora virtual creada con pdfcreator en windows. Esto requiere de paciencia para que los listados queden bien según sean de un tamaño u otro, hay que realizar unas cuantas pruebas, si además te encuentras listados muy, muy raros como es el caso de la empresa donde estoy puede llegar a desquiciarte. Como ventaja tenemos que pdfcreator tiene bastantes opciones y permite fusionar documentos pdf cosa que es muy útil para algunos usuarios. Además pdfcreator es software libre con lo cual costo 0.

Como curiosidad encontré también un software que se llama PDFing que instalado en un pc permite crear una cola remota que convierta en pdf todo lo que envíes a ella. Aparentemente funciona bastante bien, pero la versión completa hay que pagarla y además no es software libre con lo cual no sabemos si hace algo más.

Mi opción favorita es la de instalar en un linux el tn5250 y utilizar la configuración de impresora para generar una impresora virtual que convierta a pdf. Esto lo rediriges a una carpeta en el propio linux o un recurso compartido que tengas montado en él y ya la tienes. Funciona bastante bien, aunque en mis pruebas hay algunos listados que bloqueaban la impresora y tenía que volver a arrancarla. No se si es normal o bien por el tipo de listado ya que en listados "normales" realizados con prtf nunca me da el problema. El único inconveniente que le encuentro es que a mucha gente linux todavía le causa respeto y no se atreven con él.

Para instalarlo la cosa es sencilla, casi todas las distribuciones medianamente serias lo llevan como paquete, yo que para estas cosas uso debian, simplemente ejecuto como root
aptitude install tn5250
Después creamos una carpeta donde queramos guardar los pdf que generemos
mkdir /home/pdf
Esta carpeta será la que luego compartiremos para que toda la red pueda ver los pdfs.
Ahora editamos .tn5250rc en la carpeta del usuario que lo queremos usar (yo como editor uso nano que es muy simple y sencillo)
nano .tn5250rc
Dentro escribimos lo siguiente

host=ip AS400
map=284
env.DEVNAME=nombre dispositivo impresora
outputcommand=scs2pdf>/home/pdf/pdf400-$$.pdf

La última línea el $ lo sustituirá por el número de trabajo de linux (si no recuerdo mal) quedando que todos los archivos se llamarán pdf400-número aleatorio. pdf.

Para arrancarlo desde una línea de comandos escribimos
lp5250d
Esto arrancará la impresora en nuestro AS400.

Si se utiliza en un servidor linux, y este esta programado para que se reinicie periódicamente o bien el que se reinicia es el AS400 (la verdad es que ninguno de los dos lo necesita), para esos casos siempre podemos programar una tarea que ejecute el comando utilizando cron. Pero esto ya es otra historia.




jueves, 30 de diciembre de 2010

Instalar DEBIAN 5.0 LENNY EN CITRIX XENSERVER

Instalar Debian en un xenserver puede convertirse en un poco complejo si, como es mi caso no llevas mucho tiempo trabajando con un citrix xenserver.

Yo como recomienda ctitrix quería instalarlo desde la plantilla que incluye, la ventaja de usar las plantillas es evidente pero el problema de esta plantilla es que busca el arranque desde una ruta muy especifica para xen (ruta /netboot/xen), ruta que por cierto las imágenes normales de instalación no tienen.

Esto ocasiona que al arrancar la maquina virtual muestre un error y no comience la instalación. En este momento se puede buscar información en la web para ver como solucionar el problema, encontré un enlace donde te dan la información para descargar una imagen utilizando Jigdo, pero lamentablemente esa imagen ya no esta disponible de forma completa y el proceso nunca llega a completarse.

En los comentarios una de las opciones que recomiendan es instalar desde url, y efectivamente esto puede funcionar buscando un servidor que tenga la ruta que arriba comento, pero el problema es que la web que recomiendan http://mirrors.cn99.com/debian no parece una web muy recomendable, tampoco es una web oficial del proyecto debian por lo que no me gustaba la idea de instalar desde ahí.

La solución que encontré fue realizar la instalación por url utilizando un servidor que tenga la ruta apropiada. En mi caso fue un mirror alemán, concretamente este:

http://ftp.de.debian.org/debian/dists/stable/main/installer-i386/current/images/netboot/xen/

Como podéis ver tiene la ruta adecuada.

Para instalar solo hay que indicarle http://ftp.de.debian.org/debian y la plantilla se encarga de comenzar la instalación, a partir de ese momento hacemos una instalación en modo texto y la completamos de forma normal.

lunes, 8 de noviembre de 2010

Modificar Tablas

Hola a todos.

Sigo estando vivo, y esto no esta abandonado, digamos que he tenido una época un poco cargada, he cambiado de empleo y eso me ha llevado a tener menos tiempo del poco que ya tenía.

Para retomar un poco el blog, un pequeño apunte de como realizo las modificaciones en una tabla (o fichero) del AS400 que ya se esta usando para añadir otro campo más. Hablo de añadir por el final de la tabla, insertar o modificar un campo ya existente es más delicado.

  • Primero cambio los lógicos de esa tabla a LVLCHK(*NO) si no lo estaban. Usando el CHGLF
  • Segundo modifico la tabla, añado el campo y realizo el CHGPF indicando LVLCHK(*NO), todo esto cuando la tabla no este en uso.
  • Tercero compilo los programas que van a usar el nuevo campo, el resto de programas siguen funcionando como si nada, aun así para asegurar puedes compilar todos los programas que usen esa tabla pero no es imprescindible.

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