lunes, 19 de octubre de 2015

Usar Stored Procedures en Packages de Oracle en DataWindow

Para poder usar cualquier Stored Procedure que se encuentre en un Package de Oracle en un DataWindow, seguimos los siguientes pasos:

1. Buscamos la conexión de la Base de Datos Oracle que tenemos, clic derecho Properties:



2. Activamos la casilla List Package Subprograms de la pestaña System:

domingo, 18 de octubre de 2015

Usando Stored Procedure Firebird en DataWindow

El siguiente post es la respuesta a las preguntas que he recibido de como usar un Stored Procedure creado en Firebird en un DataWindow.

Primero: El siguiente Stored Procedure en Firebird

CREATE PROCEDURE USP_LISTA_RUTA(
v_RUTA VARCHAR(25))

RETURNS(
  COD_RUT VARCHAR(4) ,
  NOM_RUT VARCHAR(25))


AS

BEGIN


  FOR SELECT
COD_RUT,
                          NOM_RUT
              FROM RUTA
           WHERE NOM_RUT CONTAINING :v_RUTA


  INTO :COD_RUT,
            :NOM_RUT


    DO SUSPEND;

END;


Segundo: En PowerBuilder

1. Creamos un nuevo objeto DataWindow:


2. Elegimos SQL Select, clic en Next.


3. Clic en el botón Cancel.


4. Clic en Convert To Syntax de la opción Design



6. Creamos un argumento



8. Debemos escribir lo siguiente:

 9. Clic en Next

10. Clic en Finish

 Nota:

1. Para el ejemplo usamos un Stored Procedure Firebird seleccionable (porque contiene el comando SUSPEND).
2. Se ejecuta un Stored Procedure Firebird como si fuera una tabla.

martes, 8 de septiembre de 2015

Cargar campos de un DataWindow a DropDownListBox de otro DataWindow

Tengo una ventana (Window Object) con dos DataWindows (Cabecera/Detalle) donde cargo los titulos de los campos de un DataWindow a un campo DropDownListBox del otro DataWindow. 

El DataWindow que tendra el campo de tipo DropDownListBox es un DataWindow de tipo External el cual tiene la siguiente estructura:



El siguiente código debe ir en el evento Open de la ventana para poder cargar los titulos de los campos del DataWindow Detalle al campo
DropDownListBox del DataWindow Cabecera que es External:
//==========================================================================
// Cargar titulos de los campos de dw detalle

//---------------------------------------------------------------------------------------------------
Long    ll_lastcol, ll_rc = 1, ll_col
String   ls_colname, ls_label, ls_filtro, ls_descripcion = '', ls_columns[]

is_columns[] = ls_columns[]
//---------------------------------------------------------------------------------------------------
// Captura el Nro. de Columnas en el DataWindow
//---------------------------------------------------------------------------------------------------

ll_lastcol = Integer(dw_detail.Object.DataWindow.Column.Count)
//---------------------------------------------------------------------------------------------------
// Llena las Columnas
//---------------------------------------------------------------------------------------------------

FOR ll_col = 1 TO ll_lastcol
    ls_colname = dw_detail.Describe("#" + String(ll_col) + ".Name")
  
    IF dw_detail.Describe( ls_colname + ".visible" ) = "1" THEN
        ls_label = dw_detail.Describe(ls_colname + "_t.Text")
      
        IF ls_label = '!'  THEN
            ls_label =  dw_detail.Describe( "evaluate('wordcap(~"" + ls_colname + "~")',1)" )
        END IF

        ls_label = ls_label
        ls_descripcion = ls_descripcion + ls_label + '~t' + String(ll_rc) + '/'
        is_columns[ll_rc] = Trim(ls_colname)
      
        ll_rc++
    END IF
NEXT


dw_filter.Object.columna.Values = ls_descripcion
 
//==========================================================================

Espero le sea de mucha utilidad, cualquier duda o consulta no duden en escribir a jorgebarzola@gmail.com que les respondere con mucho gusto.

Saludos.

Obtener la resolución de la pantalla

Hola a todos con este código podemos obtener la resolución de la pantalla:

String ls_Resolucion

Environment env

GetEnvironment(env)

ls_
Resolucion= String(env.Screenwidth) + " x " + String(env.ScreenHeight)

martes, 4 de agosto de 2015

Modernizar la presentación de aplicaciones PowerBuilder

Muchas aplicaciones PowerBuilder han sido desarrolladas hace mucho tiempo y la clásica presentación es tener un menú principal asociado con un toolbar con iconos de las  principales opciones, para facilitar el acceso al usuario.

He desarrollado una presentación moderna para aplicaciones PowerBuilder utilizando los componentes Outlook Style Bar y Ribbon Style Menu de PB Ultimate Suite.

Utilizo Outlook Style Bar para obtener un Menú de estilo Outlook en PowerBuilder que reemplaza al clásico menú principal y permita abrir windows dentro de un marco mdi! o mdihelp!.


Utilizo Ribbon Style Menu para obtener un Menú estilo Ribbon en PowerBuilder el cual tiene las opciones comunes que toda ventana necesita como Nuevo, Editar, Guardar, Buscar, Vista Previa, Imprimir, etc.


De esta manera reemplazo al toolbar de opciones asociado a la ventana de la presentación clásica.


Presentación clásica:


Presentación moderna:


Cualquier consulta al correo jorgebarzola@gmail.com

Menú Ribbon en PowerBuilder

Ribbon Style Menu es un componente de PB Ultimate Suite que permite reemplazar el menú tradicional de PowerBuilder por un menú de estilo Ribbon.

PB Ultimate Suite tiene otro tipo de presentación el cual reemplaza ventanas por pestañas, muchas aplicaciones PowerBuilder tienen una gran cantidad de objetos windows, mi Framework cuenta con windows base o ancestras. Por experiencia les digo el usuario tiene mas facilidad en trabajar con windows.

He creado esta presentación utilizando el componente Ribbon Style Menu para modernizar solo la presentación de las aplicaciones PowerBuilder reemplazando el menú tradicional por el menú de estilo Ribbon.


Un objeto window de tipo mdi! o mdihelp! puede trabajar con un menú de estilo Ribbon y abrir windows dentro del marco.


Permite agrupar en pestañas opciones y seguir abriendo windows dentro del marco.


La estructura del menú de estilo Ribbon la define en un objeto menú y desde este codificar los objetos windows que desea abrir según la opción.


Consultas al correo jorgebarzola@gmail.com

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