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:
lunes, 19 de octubre de 2015
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:
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.
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)
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.
Presentación clásica:
Cualquier consulta al correo jorgebarzola@gmail.com
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:
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.
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




















