BeRuby te paga por navegar

martes, 24 de febrero de 2009

Cambiar Configuracion Regional con Power Builder

Hay muchos programas que modifican la configuracion regional de la maquina, y como con el power utilizamos una especifica que suele ser diferente a la que se usa viene bien poder cambiar la configuracion regional desde nuestra aplicacion.
Lo ideal es, para evitar inconvenientes a los usuarios, al iniciar la aplicacion, tomar la configuracion regional que tiene la maquina, cambiar por la configuracion que usamos en el power y al cerrar el programa, volver a dejar como estaba inicialmente, para esto, cree un objeto de usuario que lo hace, lo pueden bajar aca:
objeto
Basicamente tiene tres funciones que tendrian que acomodar en su aplicacion. Cuando abre la aplicacion, antes de hacer nada deberian usar las funciones of_getvalores(), para tomar los valores actuales, una vez que hicieron esto usar la funcion of_setvalores() para setear los valores de configuracion que vamos a usar. Luego lo unico que falta es al cerrar la aplicacion usar la funcion of_setvalores_anteriores() para dejar la configuracion como estaba.
Tener cuidado, porque esta probado sobre el windows 2000, pero el lugar donde se guarda la configuracion en el registro de windows, varia de acuerdo al Sistema Operativo. El objeto esta hecho en power 5, y esta exportado, lo unico que deberian hacer es importarlo y probarlo.

Log de Aplicaciones en Power Builder: aclarando algunas dudas


Hola a todos, este post es dedicado a un lector.Así abrimos la categoría consultorio, donde si Dios me ilumina y uds tienen paciencia, podré responder al 0,001 de las preguntas ^_^.

Tengo un archivo de configuración con el cual me conecto a la base de datos, pero quisiera saber cómo uso el objeto log que tanto mencionas porque aún no logro crear un log de errores


Aclaración previa:Power Builder 9 o 10.

Ok. primero vas declarar al objeto logger como variable global

uo_logger log

Con esto ya lo tenemos disponible para todo el ambito de la aplicación.
Luego en el evento Open de nuestra aplicación lo creamos con create:
uo_logger log= create uo_logger

Bueno, ahora vayamos al código del objeto logger



En el enlace al final te dejo la librería, la carpeta utils con el bat, la carpeta log y el ejemplo de como tendrían que ser las entradas al archivo.
Todos estos archivos y carpetas deberían estar en la raíz de tu app.
La idea de este código es la siguiente.
  • Buscar en el archivo siscom.ini el directorio donde esta la carpeta log.
  • Crear un archivo con un nombre estático seguido por un discriminador, yo use la fecha y la hora. los archivos se nombran de la siguiente manera...
VGMlog-08_01_2009_11-56-25.log
VGMlog-08_01_2009_12-12-17.log etc etc.
  • Para crear un archivo nuevo utilizo un bat (porque no encontré una función de creación de archivos en PB).
  • El código del .bat es el siguiente: echo %1 > %2 (una pavada).
  • En el codigo también busco la ruta de la carpeta utils para usar el bat.
  • Para ejecutar el comando utilizo un objeto no visual uo_syncproc.
Eso sería basicamente lo que hace esa parte que es la principal.
Aca dejo un nuevo rar con los archivos y carpetas mencionadas logger.rar

Si ves que te está costando demasiado te sugiero investigar el manejo de archivos en power builder, en esencia todo se basa en eso.
Parte dos:

Aprovechando la oportunidad de escribirte y tu experiencia me gustaría preguntarte cómo puedo indicar un salto de línea (Carriage Return) cuando mando a escribir una cadena usando la función WriteFile(); y finalmente cómo puedo crear archivos pdf.


Con respecto a el quiebre de línea:
Ejemplo: messagebox('Generación de Documentos de Venta','Fallo en recuperación de condiciones de venta.~nError: ' + sqlca.sqlerrtext, StopSign!)
con el caracter ~n es el quiebre de página.

Con respecto a exportar a pdf acá te dejo un enlace
http://www.todoexpertos.com/categorias/tecnologia-e-internet/programacion/power-builder/respuestas/1976499/exportar-datawindows-a-pdf

Bueno ojalá que te sirva algo de todo esto Augusto.Como consejo investiga, investiga investiga.
Un abrazo.