martes, 4 de agosto de 2015

Menu Outlook en PowerBuilder

Siempre se ha buscado la manera de que nuestras aplicaciones PowerBuilder se vean mejor, por tal muchos hemos puesto el menú de opciones en un objeto TreeView a un lado del window principal ya sea tipo mdi! o mdihelp!.

He utilizado el componente Outlook Style Bar de PB Ultimate Suite para poder dar a mi Menu TreeView el cual se carga desde un objeto Menú  el estilo del Menú Outlook.

Si se quiere separar por módulos se asocian objetos TreeViews y podriamos tener una presentación moderna en las aplicaciones PowerBuilder como muestra la siguiente imagen:


Consultas al correo jorgebarzola@gmail.com

martes, 21 de julio de 2015

Obtener nombre de la ventana activa

Para obtener el nombre de la ventana activa debemos escribir

This.ClassName()

Ejemplo:

String ls_NombreVentana

ls_NombreVentana = This.ClassName()

MessageBox('Nombre de Ventana Activa', ls_NombreVentana)

Obtener Fecha y Hora de Servidor Oracle

Para obtener la fecha del servidor Oracle creamos una función (Function Object):

$PBExportHeader$f_fecha_servidor.srf
global type f_fecha_servidor from function_object
end type

forward prototypes
global function datetime f_fecha_servidor ()
end prototypes

global function datetime f_fecha_servidor ();

// -------------------------------------------------------------------------------------
// Funcion : f_fecha_servidor
// Proposito: Devuelve la fecha y hora del servidor Oracle
// Creador : Jorge A. Barzola Rosadio
// Fecha : 12/03/2013

// -------------------------------------------------------------------------------------

DateTime ldt_fecha

 SELECT SYSDATE
  INTO :ldt_fecha
  FROM dual;

Return ( ldt_fecha )

end function

Este ejemplo es para asignar la fecha y hora del servidor Oracle a un campo del DW:

dw_1.Object.fecha[ll_Fila] = f_fecha_servidor()

Conexión a Oracle 11g desde PowerBuilder Classic 12.5

Para conectarse a una Base de Datos Oracle 11g desde PowerBuilder Classic 12.5 seguimos los siguientes pasos:

1. Buscamos el Driver ORA Oracle




2. Clic derecho y elegimos New Profile...

3. Ingresamos los datos de conexión en la pestaña Connection


4. En la pestaña System ingresamos el nombre del propietario del catalogo


5. En las pestaña Preview clic en botón Test Connection y listo.


Aquí el detalle del soporte de PowerBuilder y Oracle:

jueves, 12 de febrero de 2015

Conexión a SQL Server 2008 R2 desde PowerBuilder Classic 12.6

Para conectarse a una Base de Datos SQL Server 2008 R2 desde PowerBuilder Classic 12.6 seguimos los siguientes pasos:

1. En PowerBuilder, clic derecho al driver SNC SQL Native Client, clic en New Profile

2. En la siguiente ventana Database Profile Setup.

Primero: En la pestaña Connection ingresamos los datos de conexión:
 Segundo: En la pestaña Preview clic en botón Test Connection y listo.
3. En el evento open del objeto Application, se debe colocar la cadena de conexión:

SQLCA.DBMS = "SNC SQL Native Client(OLE DB)"
SQLCA.LogPass = "CONTRASEÑA"
SQLCA.ServerName = "NOMBRE DE SERVIDOR"
SQLCA.LogId = "USUARIO"
SQLCA.AutoCommit = False
SQLCA.DBParm = "Database='NOMBRE DE BASE DE DATOS',Provider='SQLNCLI10'"

martes, 11 de marzo de 2014

Creando TabPage usando Custom Visual - User Objects

PowerBuilder se caracteriza por ser la mejor herramienta de programación orientada a objetos y por tal debemos explotarla; es fácil ver muchas aplicaciones con objetos en cantidad que cumplen la mismas funcionalidades o los mismos objetivos, aplicaciones sin herencias, sin polimorfismo es decir sin programación orientada a objetos.

Un tiempo trabaje con las famosas PFC y quede maravillado, pero hay cosas que no me agradaron por su complejidad por tal empece a desarrollar librerias con objetos y funcionalidades similares, mas flexibles, mejores de entender y codificar a mi conveniencia.

Una de ellas fue el uso de TabPages, para esto he creado un TabPage ancestro del cual solo heredo. Para crearlo seguimos los siguientes pasos:


1 - Clic en New del PowerBar y escogemos Custom Visual del Tab PB Object.


2 - Luego de dar clic en OK nos mostrara el Custom Visual - User Object creado que a simple vista es muy similar a un Window Object, continuamos y grabamos con el nombre u_tabpage.


Un TabPage no puede trabajar solo este debe estar contenido en un Tab Control, entonces creamos un Tab Control ancestro. Para crearlo seguimos los siguientes pasos:

1 - Clic en New del PowerBar y escogemos Standar Visual del Tab PB Object.



2 - Escogemos Tab.


3 - Grabamos con el nombre u_tab

Listo, recordemos que u_tab es el Tab Control (Contenedor) ancestro y u_tabpage es el Tabpage (Pestaña o Page) ancestro.

Como asociamos el u_tabpage al u_tab de la siguiente manera:

Clic derecho sobre u_tab, seleccionamos Insert User Object


El trabajo de Tab Control y TabPage con User Object visuales es el mismo que el de tener una ventana y colocar un Tab Control del PowerBar. Un ejemplo de estos en tiempo de ejecución:


lunes, 10 de marzo de 2014

Enviar correos GMail desde PowerBuilder

He utilizado EmailSMTP de la web Topwiz Software para enviar correos electronicos y la experiencia ha sido muy buena, no es nada complicado.

Daré un ejemplo de como usarlo:

Primero descargar esta pequeña aplicación desde el siguiente link:

http://www.topwizprogramming.com/freecode_emailsmtp.html

Empecemos:

La aplicación esta estructurada por los siguientes objetos:



Los visual user objects u_tabpg_settings y u_tabpg_smtp hereran de u_tabpg en tiempo de ejecución podemos ver como se muestran estos objetos, se enlazan a u_tab_main y hacen un control Tab con 2 TabPage.

En la primera pestaña colocamos el correo de envio y el correo destino, el titulo o asunto del correo, el cuerpo del correo y hasta permite adjuntar cualquier tipo de archivo.


En la siguiente pestaña el tipo de Servidor SMTP es smtp.gmail.com por default, el puerto debe ser 465, el correo de envió debe ser una cuenta gmail y luego colocar su contraseña.


Una vez que se detallo la configuración, regresamos a la pestaña Send Mail y damos clic en el botón Send y listo se realiza el envió del correo.

Todo esto se puede resumir en una sola opción y es lo que hice yo, incluso enviar a muchos correos de destino y adjuntar muchos archivos.

El objeto no visual n_smtp tiene funciones que permiten el envió de correo con todas las propiedades de un correo gmail.

Las principales funciones son:

of_SetSubject = Para el Asunto del correo.
of_SetBody = Para el cuerpo del correo.
of_SetFrom = Para el nombre y correo de envió.
of_AddAddress = Para el nombre y el correo de destino.
of_SetLogin = Para el correo y contraseña de envió.
of_AddAttachment = Para adjuntar archivos.


Me ha servido de mucho esta aplicación y espero que este post los ayude, pueden enviar sus preguntas a mi correo que gustoso les responderé cualquier duda.