sábado, mayo 07, 2005

PowerBuilder 11 (El futuro esta presente)

Estimados lectores,

Luego de haber tomado un largo receso en escribir en mi bitacora. Reaparesco, sorprendido, luego de haber podido observar una presentación del ISUG (International Sybase User Group) en la cual mostraban cuales eran las funcionalidades nuevas que la version pb11 (la cual esta planeada liberarla para fines de este año) tiene pensado implementar. Quede asombrado de las presentaciones de funcionalidad que dieron durante el webcast. Actualmente me encuentro enfocado en la Plataforma .net (razon: La compañia con la que trabajo decidio migrarse a esta plataforma), y realmente no he encontrado un control tan bueno, efectivo y confiable como el Datawindow. Irónicamente, en la empresa luego de haber decidido por .net, ahora evalua el uso del Datawindow.net, Gracias Sybase por seguir teniendo esa vision de proveer productos multiplaforma y tecnologia. Bueno, les resumo a continuación los puntos mas relevantes de la presentación:

- La version 11 tendra la posibilidad de poder generar aplicaciones escritas en PowerBuilder que sean totalmente funcionales sobre .net. Pero esto no es todo. Cualquiera podria pensar "Bueno, esto es aplicable a Winforms", pero la verdad, se ha llegado más alla. En la presentación mostraron como una aplicación de PB,inclusive MDI, podrá ser convertida a una aplicacion web (Utilizaron el Aproach de Appeon ver link: Appeon).
-Powerbuilder 11 contará un generador de codigo para C#, con el cual generará la transformacion de los objetos de PB (Windows,DW,etc) a objetos de .Net. Vale la pena mencionar que no sera necesario contar con un PBVM (Virtual Machine) en .NET. Existiran dll's que cumpliran con esta funcion.
-Powerbuilder 11 implementara nuevas mejoras (ver link: Mejoras en PB 11), no solo en el IDE, sino tambien para el producto DW.net. Como por ejemplo, proveer capacidada para acceder a las propidades del dw object nativa (.notation capabilites).

Si quieren conocer mas del tema los invito a escuchar y visualizar la presentación en este link:

Presentacion

O bien si quieren acceder a los Slides de la presentacion seguir este link:

Slides


Saludos Cordiales y ...

"HAPPY CODING !!!"

Ing. Carlos Augusto Lone Sáenz
Guatemala
carlone@galileo.edu

lunes, noviembre 29, 2004

Recomendación al usar funcion GetFileopen o GetFileSave

Recientemente al estar trabajando una aplicación en mi oficina, me tope con un problema al utilizar la función GetFileOpen, el asunto es el siguiente: cada vez que ustedes utilizen alguna de estas funciones, su aplicación tomará luego de ejecutada la función, el path en donde seleccionaron el archivo para abrir o guardar, esto quiere decir que si su aplicación esta en el directorio c:\app, y la función Getfileopen o Getfilesave se quedó en el directorio c:\misdocumentos\archivos, el nuevo path de su aplicación será "c:\misdocumentos\archivos", el problema de esto es si tienen algun archivo como una imagen, o un inifile, que lo trabajen sobre el directorio de su aplicación, en este caso simplemente no encontrará estos archivos.

Para solucionar este problema existe la alternativa de guardar el directorio actual de la aplicación para luego reestablecerlo, y la otra claro seria usar un archivo de recursos PBR.

Les doy el ejemplo de la primera alternativa

String ls_pathActual

ls_pathActual = GetCurrentDirectory()

// llamamos a la funcion Getfile open
GetFileOpen (....)

// volvemos a setear el path
setCurrentDirectory (ls_pathActual)

esto evitara el problema.

Espero que si alguno encuentra este error, o conoce a alguien que lo tiene, les pueda brindar esta simple, pero funcional solucion.

Saludos Cordiales

Ing. Carlos A. Lone
Guatemala

viernes, noviembre 05, 2004

Función Global Replace

Powerbuilder provee un conjunto completo de funciones para el manejo de Cadenas(String), apesar de esto, no existe una funcion para poder hacer un reemplazo masivo en una cadena, por ejemplo: tengo la cadena "mi nombre es {field}, el nombre {field} proviene del pais ..., saludos {field}" y quiero reemplazar el string {field} con "Carlos Lone". Navegando por el sitio de code-exchange de sybase encontre una función para poder hacer esta acción, el codigo lo pongo a continuación:

/*A String Occurrence Search and Replace RoutineThe following code demonstrates
a string occurrence search and replaceroutine.This routine works generically for
any string. For example,if old_str = "red" and new_str ="green", all occurrences of
"red" inside of mystring will be replaced with "green".
Parameters
Name = source Type = String
Name = look_for Type = String
Name = replace_with Type = String
*/

//variables
int start_pos=1,len_look_for

len_look_for = len(look_for)
//find the first occurrence of look_for ...
start_pos = Pos(source,look_for,start_pos)
//only enter the loop if you find whats in look_for
DO WHILE start_pos > 0
//replace look_for with replace_with ...
source = Replace(source,start_pos,Len_look_for,replace_with)
//find the next occurrence of
look_forstart_pos = Pos(source,look_for,start_pos+Len(replace_with))
LOOP

return source

Espero que esta función les pueda ser de mucha utilidad.

Saludos,

Ing. Carlos A. Lone
Guatemala

jueves, octubre 21, 2004

Para los colaboradores

Estimados amigos, quería hacerles la invitación para todos aquellos interesados en poder publicar noticias, ejemplos, anécdotas, sugerencias, bugs, etc. en este blog, pueden contactarme al correo spanishpowerbuilder@yahoo.com. También todas sus dudas o sugerencias son bienvenidas.

Por otra parte tambien queria indicarles que cuando quieran escribir comentarios, no es necesario que tengan que abrir una cuenta en este sitio. basta con que seleccionen la opcion "post anonymously" y listo.

Espero se unan más colaboradores para que podamos publicar más articulos.

Saludos !!!

Ing. Carlos Augusto Lone Sáenz
Guatemala

lunes, octubre 18, 2004

Listado de Features para PowerBuilder 11

Como hemos podido observar en las últimas versiones de PowerBuilder, Sybase ha apostado por proveer a esta herramienta, la capacidad de poder trabajar con tecnología de punta, ejemplo de esto son las versiones 9 y 10, las cuales han introducido Herramientas para poder trabajar en las dos plataformas que hoy en dia son las mas fuertes en el mercado, estoy hablando de Microsoft .net Framework y el J2EE (Java to Enterprise Edition). Por parte de .net, Powerbuilder comenzo en la versión 9 habilitando la capacidad de poder interactuar con WebServices, luego en la version 10 hicieron el lanzamiento oficial del Datawindow.net, por parte de Java, en la version 9 la habilitacion de una interface para poder trabajar con componentes (EJB), el JNI y PBNI, asi como la mejora en el desarrollo de paginas web con los JSP.

La pregunta que muchas personas encargadas en el área de sistemas se hacen frecuentemente es la siguiente: Cual es la tendencia de PowerBuilder y cuanto mas tiempo de vida tendra esta herramienta en el mercado?.

En mi opinión, Sybase ha demostrado que esta haciendo mucho énfasis en poder poseer una herramienta que atienda las nuevas tendencias tecnológicas; estamos hablando de una interfaz integrada de desarrollo (IDE, Integrated Development Enviroment), la cual tenga la capacidad de poder generar aplicaciones para diferentes plataformas de trabajo (Web, Cliente - Servidor, Aplicaciones para Dispositivos Mobiles,Ambiente Distribuido, etc). Por esto creo que tenemos PowerBuilder para rato y con el paso de los años seguira añadiendo más funcionalidades.

Recientemente leyendo en el sitio de Sybase pude encontrar una lista preliminar de los nuevos Features que contendrá la versión 11 de PowerBuilder, estas son carácteristicas mas de la interfaz gráfica, aunque al final menciono otras.

PB 11 Feautures ( Datos preliminares )
Publicado por Dave Fish [Team Sybase]

  • Menus - bitmaps (larger than 16x16), animation, rounded corners, hide
    least used, etc

  • Toolbar Enhancements - moveable and dockable, flat buttons, gripper
    bars, usage with all windows (not just MDI), Rebar-type control
  • Updated bitmaps and icons
  • 32 bit color
  • Alpha channel (transparency)
  • Listview/Treeview tooltips
  • RichText Replacement (seriously!)
  • Splitter Window Enhancement
  • DW Calendar/Date picker
  • Column header enhancements
  • Sorting
  • Auto ellipsis support (...) - this would be useful on static text
    controls, too
  • More up-to-date look


    DataWindow:
  • DataWindow Tooltips
  • Tree Style DataWindow
  • More Presentation Styles

Como complemento puedo mencionar otros dos features muy buenos.



  1. La Posibilidad de tener un compilador de .Net, que permita que powerbuilder pueda trabajar con el Framework .net, asi como tambien generar codigo intermedio (MSIL) para que las aplicaciones hechas en powerbuilder puedan funcionar sobre esta plataforma.

  2. Un PBVM (PowerBuilder Virtual Machine) para Linux. (Este es un feauture que posiblemente a finales de este año o comienzos del otro se espera)




Esperamos que Sybase siga aportando más funcionalidad en PowerBuilder, siempre manteniendo la directriz de "proveer una herramienta abierta".

Saludos.

Ing. Carlos Augusto Lone Saenz
Guatemala

miércoles, octubre 13, 2004

Trasladar un Datawindow a Excel sin perder el Formato

Todos los que utilizamos powerbuilder sabemos el poder que tiene el DataWindow. Una de sus características especiales es que permite guardar los datos recuperados en el control como una hoja de excel. Pero muchas veces hemos visto esta opcion como un poco limitada, por que?, supongamos que tenemos un reporte tipo Crosstab o hemos desarrollado uno con campos computados, cuando ejecutamos la funcion de salvar dicho reporte como una hoja de excel nos podremos dar cuenta que el formato se pierde y en vez tener la misma presentacion solo nos topamos con el conjunto de datos recuperados de la Fuente de informacion (bd, archivo externo,etc.). Imaginense tener un reporte en el cual existen grupos de datos y que ese formato no se respete al trasladarse a excel !!!. Bueno investigando un poco he encontrado que existe una alternativa a este problema :), a continuación detallo como funciona este proceso.

Excel desde la version 2000 (si no estoy mal), tiene la capacidad de poder interpretar Tablas de HTML ( Hyper Text Markup Language), esto quiere decir que si yo creo un archivo en notepad que contenga el siguiente codigo


<table>
<tr>
<td bgcolor="blue">Nombre </td>
<td bgcolor="blue">Apellido </td>
</tr>
<tr>
<td>Carlos </td>
<td>Lone </td>
</tr>
<table>


y lo Guardamos ya sea como una pagina html (prueba.html) o tambien como una archivo de excel (prueba.xls)

Luego de haber hecho esto podemos iniciar excel y abrir el archivo y nos daremos cuenta que excel interpretara perfectamente la tabla (inclusive con sus atributos de color).

Dada esta funcionalidad que tiene excel, nosotros podemos hacer lo siguiente con nuestros reportes para que al mandarlos a excel mantengan el formato.

Si el nombre de mi control es dw_reporte, entonces vasta con que ejecute esta funcion para que la magia se pueda hacer

dw_reporte.saveas("reporteenexcel.xls",HTMLTable! ,true)

lo que estamos haciendo es basicamente guardar la sintaxis de una tabla generada por el datawindow como un archivo de excel.

Un pequeño problema que he encontrado, en la version 9.0 no se si en la 8.0 tambien ocurre, es que cuando el datawindow genera el formato de la tabla con CSS, este define cada formato de la siguiente forma

nombre del formato {;background-color:#445566 .......}

el problema que existe aqui es que ese punto y como que aparece despues del primer corchete estropea la interpretacion del formato en excel, lo que he hecho para solucionar este problema y preservar el formato es que primero obtengo en un string la sintaxis y luego reemplazo "{;" por "{", en el siguiente articulo estare posiblemente publicando una muestra de este codigo.

Espero esto les pueda ser de mucha ayuda.


Saludos.

Ing. Carlos Augusto Lone Saenz
Guatemala


Nuevo EBF para PB9 liberado

Recientemente, Sysbase publico un nuevo EBF para la version 9.0 de PowerBuilder (PowerBuilder 9.0.1 EBF build 7275). Si quieren encontrar mas informacion de los Fixes y donde lo pueden descargar, visiten esta pagina:

http://www.powerbuilder.org/modules.php?name=News&file=article&sid=178

o en el portal de sybase

http://www.sybase.com

Saludos.

lunes, septiembre 13, 2004

EBF para PB9 liberado

Recientemente se ha publicado el nuevo EBF (Emergency Bug Fix) para PowerBuilder 9, este puede ser bajado del sitio de sybase(http://www.sybase.com) o tambien en el portal de powerbuilder (http://www.powerbuilder.org). Les recuerdo a todas las personas interesadas en publicar trucos, noticias, anécdotas o manuales en este Blog, pongase en contacto.

Saludos,

Ing. Carlos A. Lone
Guatemala