Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 18

___________________________________________________________CAPITULO 5-Reportes -InforMaker

INFOMAKER

PowerBuilder provee el objeto data Windows el cual usted puede usar para desarrollar sus reportes. Sin
embargo , también le proporciona InfoMaker que le ayudará al usuario final a diseñar sus propios reportes.

PINTOR DE REPORTES / INFORMAKER

Sybase diseñó infomaker para que el usuario final pueda crear reportes. El usuario de Infomaker que pueda crear
reportes y gráficos que el desarrollador de powerbuilder pueda usar en el diseño de una aplicación

Además , sybase simplifica la documentación de infomaker para que los que no son desarrolladores
pudiesen crear reportes fácilmente punto el entorno de desarrollo de infomaker y powerbuilder tienen las mismas
características.

Ambos pintores le permiten al desarrollador crear reportes para una aplicación punto la funcionalidad del
reporte dentro de estas herramientas crean un datawindow, pero no le deja al desarrollador insertar y manipular
data desde el pintor del reporte.

La diferencia principal entre crear un datawindow que le permite al usuario añadir y editar data ,y un
datawindow que muestra un reporte es que el orden de tabulación de todos los controles dentro de un
datawindow para un reporte Empieza de cero. Para especificar los argumentos de recuperación para un reporte
coma debe ir la pantalla de origen de datos del datawindow y seleccionar la opción retrieval arguments del menú
de Design. El cuadro de diálogo de argumentos donde usted puede especificar los argumentos y sus respectivos
tipos aparecerá . si usted especifica los argumentos de recuperación dentro de un evento retrieved de un control
datawindow powerbuilder mostrará el cuadro para ingresar los valores de argumentos.

Si la sentencia SQL para su reporte incluyen cláusulas joins, deberá considerar el escribir un procedimiento
almacenado Como origen de datos para su reporte.

ESTILOS DE PRESENTACION

El pintor de reporte de powerbuilder e infomaker habilite el desarrollador para reforzar los datos usando
los formatos composite ,tabular ,grid, free form, crosstab,N.Up, Group ,label, graph,ole 2.0 and rich tex .estos
formatos son los mismos que los data Windows.

APLICA 17

Desarrollar un reporte que presente un listado de productor agrupados por categoría.

Solución:

1. Iniciar una nueva sesión con Infomaker 7.0 para esto hacer clic en el menú inicio /programas/Sybase\
Infomaker7.0 /infomaker

2. Crear un nuevo DSN conectado a la base de datos de Microsoft sql server Norwich llamado Nwind
utilizando la interfaz de conexión ODBC
POWER BUILDE NIVEL II_______________________________________________________________________

3. Luego deberá crear una nueva librería haciendo clic en File new en la siguiente ventana elegir el objeto
library.

4. Asignarle el nombre de aplica_ 17, guardar en c:\ powerbuilder \prácticas \cap 05\ aplica 17 \aplica 17.
pbl luego dar clic en el botón finish.

5. Luego proceda a crear un nuevo reporte coma para esto dar clic en el menú file new caso contrario clic en
el botón y elegir de la ficha object el tipo Group

6. Luego elija el origen de datos para la creación nuevo reporte punto para este caso utilizaremos el tipo SQL
select

7. Luego seleccione las tablas categories y products de la ventana de selección de tablas.

8. Luego seleccione los campos categoryId, categoryname de la tabla categories y producId, productname,
categoryId, unitPrice, unitsInStock y discontinued de la tabla products :

9. Luego para agruparlos seleccione y arrastre los campos categories_categoryId y categories_categoryname y


clic en el botón Next:

10. Luego escriba el título reporte :

Luego haga los cambios de formato en el nuevo reporte de manera que aparezca de la siguiente manera:

Luego inserte un campo calculado haciendo clic en el menú insert /control /computed field o de la caja de
herramientas.
___________________________________________________________CAPITULO 5-Reportes -InforMaker

Luego haga clic en un espacio de la sección categories_categoryIdy escriba el siguiente código en la ventana de
expresión:

Este campo nos mostrara el precio de venta de cada artículo. Ahora seleccione el campo agregado y haciendo un
clic en el menú insert/ Control /sum se agregara un nuevo campo calculado en la sección detail.

Por ultimo agregamos un contador de paginas al reporte. Para esto hacer clic en el menú insert / control /page nof
n.

Este se agregará automáticamente en la sección Summary. Peo usted deberá modificar la formula , ya que
esta se muestra en inglés:

Luego deberá guardar el reporte con el nombre de listado_precios_categoria.

El reporte en ejecución se mostrar de la siguiente manera

APLICA 18

Dessarollar un reporte que permita visualizar a todos los clientes de un determinado país. El nombre del
país debe ser enviado como argumento de recuperación.

Solución:

1. Crear una librería de InfoMaker y guardarla como aplica_18, guardar en :


C:/PowerBuilder/Practicas/Cap05/aplica_18/aplica_18.pbl
2. Crear un nuevo reporte, para esto dar un clic en el menú File New caso contrario clic en el botón y elegir de
la ficha Object el tipo Grid.
POWER BUILDE NIVEL II_______________________________________________________________________

Este campo nos mostrar el precio de venta de cada artículo punto ahora selecciona el campo agregado y haciendo
clic en el menú insert/ control / sum se agregará un nuevo campo calculado en la sección Detail.

Por último agregamos un contador de páginas al reporte punto para esto hacer clic en menú insert /control /page
n of n .

Este se agregará automáticamente en la sección summary. Pero usted deberá modificar la fórmula ya que
está se muestra en inglés.

Luego deberá guardar el reporte con el nombre listado_precios_categoría.

El reporte en ejecución se mostrará de la siguiente manera:

APLICA 18

Desarrollar un reporte que permita visualizar a todos los clientes de un determinado país. El nombre del
país debe ser enviado como argumento de recuperación.

Solución:

1. Crear una libreta de infomaker y guardarla como aplica_18 guardar en:


C:/powerbuilder/ prácticas /cap05/ aplica_18 /aplica_18.pbl.
2. Crear un nuevo reporte coma para esto dar un clic en el menú file new caso contrario clic en el botón y
elegir la ficha Object el tipo Grid.

3. Luego elija el origen de datos para la creación nuevo reporte. Para este caso utilizaremos el tipo SQL Select

4. Luego seleccione la tabla customers y elija los campos customerId, companyname contacname,countre y
pone de la tabla customers:
___________________________________________________________CAPITULO 5-Reportes -InforMaker

5. Luego, añada un argumento de recuperación del tipo String llamado país.

6. EN la sección Sort agregue el campo customerId, para el ordenamiento.

7. Por ultimo debe agregar en la selección Where del reporte en la siguiente forma:

8. Luego, en el pintor del reporte, cambie las etiquetas que aparecen en la sección Header de la siguiente
manera:

Campo Nuevo Valor


Customerid Codigo
Conmpanyname Compañía
Contactname Contacto
Pone Telefono

Luego inserte un control Text en la sección Header, elimine su contenido y mostrar su ventana de expresión:

En dicha ventana escribir la siguiente formula:

Finalmente inserte un control Picture en la sección Header con la imagen que se encuentra en la siguiente ruta:

C:/sys_facturacion/imágenes/bd07082_.wmf

Luego haga clic en el botón Preview para ver los datos:

Se le presentará entonces la ventana de argumentos en la deberá escribir un nombre de país cualquiera. Para este
ejemplo digitaremos Germany:

Finalmente, usted vera en el pintor la vista del reporte:


POWER BUILDE NIVEL II_______________________________________________________________________

Guarde el reporte con el nombre de clientes_pais

APLICACIÓN 19

Desarrollar un reporte que permita conectarse a la tabla categorías de la base de datos Northwind
y muestra el campo nombre de categoría.

Solución:

1.Crear una librería de InfoMaker y guardarla como aplica_19, guardar en:

C:/powerbuilder/ prácticas /cap05/ aplica_19 /aplica_19.pbl.

2.Crear un nuevo reporte, para esto dar clic en el menú caso contrario clic en el botón y elegir de la ficha object el
tipo Grid

3.Luego elija el origen de datos para la creación nuevo reporte . para este caso utilizaremos el tipo SQL select

4. Luego seleccione la tabla categories y elija los campos categoryId y categoryname:

Luego elimine el campo categoryID y elimine las etiquetas de encabezado, de manera que solamente quede el
campo de la sección Detail.

Luego haga clic en el botón Preview para ver los datos:

Entonces usted vera el pintor del reporte:

Finalemente guarde el reporte con el nombre de d_categorías


___________________________________________________________CAPITULO 5-Reportes -InforMaker

APLICA20

Desarrollar un reporte que permita ver el detalle de una determinada factura de un cliente. Para esto,
deberá enviar el numero de la factura requerida.

Nota: Previamente debe ejecutar el Script g_OrderD.sql que se encuentra en


c:/powerbuilder/Aplicas_libro/Script_datos[Pruebas]/Customers

Solución:

1. Crear una librería de InfoMaker y guardarla como aplica_20 , guardar en :

c:/powerbuilder/practicas/capo05/aplica_20/aplica_20.pbl

2. Crear un nuevo reporte, para esto dar un clic en el menú File New caso contrario clic en el botón y elegir
de la ficha Object el tipo Gruop.

3. Luego elija el origen de datos para la creación para la creación nuevo reporte. Para este caso utilizaremos el
tipo SQL Select

4. Luego seleccione las tablas customers, orders, orderd, products y shippers, Posteriormente selecciones los
siguientes campos:
 customers.companyname
 customers.address
 orders.orderid
 orders.orderdate
 orders.shippedate
 orderd.quantity
 shippers.companyname
 products.productname

5. luego cree 1 argumento de recuperación xpedido tal como se muestra en el siguiente grafico:

6. En la sección where deberá igualar el campo orders.orderid igualarlo al argumento :expedido, tal como se
muestra en el grafico:
POWER BUILDE NIVEL II_______________________________________________________________________

7. Luego deberá elegir los campos por los que el reporte se agrupara:

Luego, en el pintor del deporte usted tendrá que cambiar las etiquetas y los campos que aparezcan de manera que
el reporte sea similar a la pantalla que se muestra a continuación:

Para ver un ejemplo, haga clic en el botón Preview y digite lo siguiente:

El reporte mostrar los siguientes datos:

Finalmente guarde el reporte como factura_pedidos:

APLICA 21

Desarrrollar un reporte que muestre mediante un grafico las ventanas de todas las categorías.

Solución:

1. Crear una librería de InfoMaker y guardarla como aplica_21, guardar en :

c:/powerbuilder/practicas/capo05/aplica_21/aplica_21.pbl

2. Crear un nuevo reporte, para esto dar un clic en el menú File New. Caso contrario clic en el botón y elegir
de la ficha Object del tipo Graph.

3. Luego elija el origen de datos para la creación nuevo reporte. Para este caso utilizaremos el tipo SQL Select.

4. Luego seleccione las tablas orders, products y categories, Posteriormente selecciones los siguientes
campos:
 orderd.orderid
 orderd.productid
 orderd.unitprice
 orderd.quantity
 products.productname
 products.productname
 products.categoryid
 categories.categoryid
___________________________________________________________CAPITULO 5-Reportes -InforMaker

 categories.categoryname

5. Cierre la ventana, y a continuación se mostrará el dialogo para definir la data del gráfico. Alli deberá
cambiar las opciones de la siguiente forma:

ORIGEN VALOR
Category Categories_categoryname
Values Sum(orderid_unitprice for graph)
Series Categories_categoryname

6. Al definir el estilo de grafico elegir el tipo Solid Column. Para el titulo digite “Categorías”:

Luego, en el pintor del reporte usted tendrá que cambiar las etiquetas y los campos que aparezcan de manera que
el reporte sea similar al grafico que se muestra a continuación:

Para ver un ejemplo, haga clic en el botón Preview. El reporte mostrara los siguientes datos:

Finalmente guarde el reporte como grafica_cantidad_categorias.

APLICA 22

Desarrollar un reporte que muestre las cantidades de ventas por categorías. El origen de datos para este
reporte debe ser un procedimiento almacenado.

Solución:

1. Ejecutar el procedimiento almacenado que se encuentra en:


c:/powerbuilder/Aplicas_libro/Script_datos[Pruebas]/aplica_22 /venta_categorias.sql mediante el
analizador de consultas de sql server.

2. Ccrear una librería de InfoMarker y guardarla como aplica_22, guardar en:


POWER BUILDE NIVEL II_______________________________________________________________________

c:/powerbuilder/practicas/capo05/aplica_22/aplica_22.pbl

3. Crear un nuevo reporte, para esto dar un clic en el menú File New caso contrario clic en el botón y elegir la
ficha Object del tipo tabular.

4. Luego elija el origen de datos para la creación nuevo reporte. Para este caso utilizaremos el tipo Stored
Procedure

5. Luego seleccione el procedimiento almacenado ventas_categoria, luego clic en el botón Next hasta Finalizar:

Usted vera aparecer en el pintor el reporte:

Luego modifique el reporte de manera que se parezca a la Ventana siguiente:

Para ver un ejemplo, haga clic en el botón Preview. El reporte mostrar los siguientes datos:

Finalmente guarde el reporte como ventas_Categoria

CREANDO POWERSOFT REPORT EN INFOMAKER (.PSR)

Un archivo PSR contiene una definición del reporte (origen y objeto( así como la data contenida en el
reporte cuando el archivo PSR fue creado porque su data se guarda con él un archivo PSR no requiere una conexión
database pero su data es estática y no se puede refrescar.

Para crear un archivo. PSR puede:

1. Haga clic en el menú file y elija la opción save as a file

A continuación, se mostrará el cuadro de diálogo para guardar. Para el ejemplo ,digite el mismo nombre del
reporte.
___________________________________________________________CAPITULO 5-Reportes -InforMaker

Cuando usted elija esta opción de menú ,usted podrá dirigir powerbuilder para guardarlo( origen y objeto)
y la data dentro de la extensión PSR antes de que pueda utilizar un archivo PSR desde el explorador u otra
aplicación debe registrar el archivo con los reportes powersoft dentro de la base de registros de Windows red
punto data localizado en el directorio de Windows.

Para abrir el deporte desde Explorer, primero ascie si el archivo PSR con el powersoft
(PM050.EXE)seleccionando ver ,opciones del menú del Explorador y la ficha tipos de archivo

Otra manera de mandar los datos que se muestran a un archivo de texto , es haciendo clic en el menú
select file > save row as localizado debajo de la opción Print Preview en el pintor del reporte.

Luego se le mostrará el cuadro de diálogo guardar en donde usted quiera almacenarlo. Asígnele un nombre
y haga clic en el botón guardar

APLICA 23

Crear una aplicación que permita usar los reportes anteriormente creados punto para la conexión utilizar la
interfaz OLE DB.

Nota: debe añadir las libretas aplica_17 aplica_18 aplica_19 aplica_20 aplica_21 aplica_22 para hacer referencia
a los data Windows creados en ello.

Solución:

1 crear una nueva aplicación Aplica_23 en la siguiente ruta:

c:/powerbuilder/practicas/capo05/aplica_23/aplica_23.pbl

2. Luego cree un menú y asígnele los siguientes sub ítems:

MENÚ REPORTES

Items:

Menú nombre

&Clientes por país m_clientesporpais

&Detalles de pedidos m_detallepedidos

- m_-

&categorías m_categorias
POWER BUILDE NIVEL II_______________________________________________________________________

Lista de Precios por &categoría m_listaprecioscategoria

&Grafico de total de ventas por categoría m_graficocategoria

&Total de ventas por categoría m_totalventascategoria

- m_-1

&Salir m_salir

MENU VENTANA

Items_:

Menú nombre

&layer m_layer

&cascade m_cascade

Arrage & Icons m_arrangeicons

Guarde el menú con el nombre de m_principal. Al terminar de crear el menú debe tener una apariencia
similar a esta:

3. Luego deberá crear la ventana principal de la aplicación que se mostrará como mdi. A esta ventana
guardara con el nombre de w_main
4. Posteriormente deberá crear un datawindow del tipo Grid con los campos customerID, companyname
country y Phone de la tabla customers de la base de datos Northwind grave el objeto como d_clientes.
5. Cree un datawindow del tipo grid con el campo country de la tabla costumers de la base de datos NortWind
grave el objeto como d_países
6. Cree un datawindow del tipo grid con los campos orderid, requiredate y shippedate de la tabla bordes de
la base de datos northwind luego cree un argumento de recuperación llamado xcliente e igualalo al campo
orders.costumerid en la cláusula where, tal y como se muestra a continuación

Finalmente guarde el objeto como d_pedidos.

7. Crear una ventana con los siguientes controles

Control Propiedad Valor


sq_1 Text Seleccione un país
dw_1 Name dw_paises
DataObject d_paises
cb_1 Name cb_visualizar
Text &Ver reporte
___________________________________________________________CAPITULO 5-Reportes -InforMaker

Guardar la ventana como w_paises

8. Crear una ventana con los siguientes controles

Control Propiedad Valor


st_1 Text Seleccione un cliente
dw_1 Name dw_clientes
DataObject d_clientes
st_1 Name St_pedido
Text Seleccione un cliente
dw_2 Name dw_pedidos
DataObject d_pedidos

Guardar la ventana como w_pedidos.

9. Crear una ventana con los siguientes controles

Control Propiedad Valor


cb_1 Name Cb_imprimir
Text &Imprimir
cb_2 Name cb_Anterior
Object <<&Anterior
cb_3 Name cb_Siguiente
Text &Siguiente

Guarde la ventana con el nombre w_visualizar

10. Crear la ventana principal. A este objeto, deberá cambiar las siguientes propiedad:

Propiedad Valor

MenuName m_principal

Title Reportes

WindowType mdi!

WindowState maximized!
POWER BUILDE NIVEL II_______________________________________________________________________

Guarde la ventana con el nombre de w_main

Ahora escriba el siguiente código en el evento Open del objeto

Aplicación.

SQLCA.DBMS = “OLE DB”

SQLCA.Logir = “sa”

SQLCA.AutoCommit = False

SQLCA.DBParm = “PROVIDER = ‘SQLOLEDB’,DATALINK =’C:/Archivos”&+”de programa\Archivos


comuners\SYSTEM\ole”+&”db\Data Links\ConOLEDB.UDL’”

Coneect;

IF SQLCASQLCODE <>0 THEN

Messagebox(‘’Erroe’,’Error de Conexion’+&String(SQLca.SQLCode)+SQLca.SQLErrText)

Return

Else

Open(w_main)

END IF

Ahora proceda abrir el objeto m_principal e ingrese el siguiente código en los respectivos ítems de
menú.

Objeto : m_reportes.m_clientesporpaís Evento : clicked


OpenSheet(w_paises,w_main,2,original!)

Objeto : m_reportes.m_detallepedidos Evento : clicked


OpenSheet(w_pedidos,w_main,2,original!)
___________________________________________________________CAPITULO 5-Reportes -InforMaker

Objeto : m_reportes.m_categorías Evento : clicked

Opensheet(w_visualizar,w_main,2,original!)

w_visualizar.dw_reporte.dataObject : "d_categorias"

w_visualizar.dw_reporte.SetTransObject(SQLca)
w_visualizar.dw_reporte.Retrieve()
w_visualizar.dw_reporte.object.datawindow.print.preview : "Yes"

Objeto : m_reportes.m_listaprecioscategoría Evento : clicked


opensheet(w_visualizar,w_main,2,original!)
w_visualizar.title :"Lista de Precios por categoría"
w_visualizar.dw_reporte.dataObject : "listado_precios_categoria"
w_visualizar.dw_reporte.settransobject(sqlca)
w_visualizar.dw_reporte.retrieve()
w_visualizar.cb_siguiente.visible : True
w_visualizar.cb_anterior.visible : True
w_visualizar.dw_reporte.object.datawindow.print.preview : "Yes"

Objeto : m_reportes.m_graficocategoria Evento : clicked


opensheet(w_visualizar, w_main,2,original!)
w_visualizar.cb_siguiente.visible : false
w_visualizar.cb_anterior.visible : false
w_visualizar.dw_reporte.dataObject : "grafico_cantidad_categorias"
w_visualizar.dw_reporte.settransobject(sqlca)
w_visualizar.dw_reporte.retrieve()
w_visualizar.title : "Reporte gráfico de ventas"
w_visualizar.dw_reporte.object.datawindow.print.preview : "Yes"

Objeto : m_ventana.m_layer Evento : clicked


w_main.ArrangeSheets(Layer!)

Objeto : m_ventana.m_cascade Evento : clicked

w_main.arrangesheets(Cascade!)

Objeto: m_ventana.m_arrangeicons Evento : clicked


POWER BUILDE NIVEL II_______________________________________________________________________

W_main.arrangesheets(lconsl)
Ahora proceda abrir la ventana w_paises e ingrese el siguiente código en los respectivos eventos y objetos:

Objeto : W_paises Evento : Open


dw_paises.setTransObject(SQLca)

dw_paises.Retrieve
Title : "Clientes por país"

Objeto : cb_visualizar Evento : clicked

w_visualizar ventana_clientes
opensheetwithparm(ventana_clientes,dw_paises.getitemstring &
(dw_paises.GetRow(), "Country"),w_main,2,original!)

ventana_clientes.dw_reporte.dataObject : "clientes_pais"
ventana_clientes.dw_reporte.settransobject(SQLca)
ventana_clientes.dw_reporte.retrieve(dw_paises.getitemstring(
dw_paises.GetRow(), "Country"))
ventana_clientes.title "Clientes por país &
+ dw_paises.getítemstring( dw_paises.GetRow(), "Country")
ventana _ clientes.dw_reporte.object.datawindow.print.preview = "Yes'

Ahora proceda abrir la ventana w_pedidos e ingrese el siguiente código en los respectivos eventos y objetos:

Objeto : w_pedidos Evento : open


dw_clientes.settransobj ect(SQLca)
dw clientes.retrieve()
dw_pedidos.SetTransObj ect(SQLca)
st_pedido.Text = 'iSeleccione un pedido del cliente " &
+ dw clientes.getitemstring( dw_clientes.getrow(), "customerid")
dw_pedidos.Retrieve(dw clientes.getitemstring &
(dw_clientes.getrow(), -customerid"))

Objeto : dw_clientes Evento : clicked


dw_pedidos.SetTransObject(SQLca)
string codigo

If row > O Then


___________________________________________________________CAPITULO 5-Reportes -InforMaker

Codigo :dw_clientes.getitemsstring (row, "customerid")


st_pedido. Text : "Seleccione un pedido del cliente” + codigo

Else

Messagebox(“reportes”,”Error al recuperar datos” & + “Debe seleccionar un registro


valido”,StopSing!)

Enf if

Dw_pedidos.Retrieve(Codigo)

Objeto : cb_detalles Evento : clicked


w_visualizar ventana
opensheet(ventana,w_main,2,original!)

ventana.title= “Lista de Precios por categoría"


ventana.dw_reporte.dataObject = "factura_pedidos"

ventana.dw_reporte.Setttransobject(sqlca)
ventana.dw_reporte.retrieve &(dw_pedidos.gettitemnumber(dw_pedidos.getrow(),”orderid”))
ventana.dw_reporte.object.datawindow.print.preview : "Yes"

Ahora proceda abrir la ventana w_visualizar e ingrese el siguiente código en los respectivos eventos y objetos:

Objeto : w_pedidos Evento : open

cb_siguiente.Enabled : True
dw_reporte.X : O
dw_reporte.Y : O

Objeto : cb_imprimir Evento : clicked

int I
long job
job : PrintOpen( )
PrintDataWindow(job. dw_reporte)
PrintClose(job)
POWER BUILDE NIVEL II_______________________________________________________________________

Objeto : cb_anterior Evento : clicked


dw_reportescrollpriorpage()
If dw_reporte.getRow() = I Then
cb_anterior.Enabled = False
End If

Objeto : cb_siguiente Evento : clicked


dw_reportescrollpriorpage()
If dw_reporte.getRow() = dw_reporte.RowCount() Then
cb_siguiente.Enabled = False
End If

cb_anterior.Enabled = True

Al ejecutar la aplicación, pruebe cualquiera de las opciones de menú. Este es un ejemplo de la opción
Clientes por país:

Este es un ejemplo de la opción Detalles de pedidos. Aquí seleccione un cliente y la mostrara todas sus ordenes.
Para ver sus detalles, haga click en el botón ver detalles de pedidos:

Nota: Para construir los datawindow utilizando la tabla Order details contiene un espacio en blanco la solución
planteada fue crear una tabla llamada Orderd. De otra forma en el Painter del datawindow seleccionar la tabla
order details, seleccionar los campos, Ejecute la secuencia Design, Convert To Sintax y modificque de la siguiente
manera: remplace order details con [order details]

You might also like