Un datawindow es un objeto visual de acceso a los datos.
Básicamente, este pintor genera una representación visual de una
sentencia Sql del tipo select.
El Objeto DataWindow es un objeto que se usa para
recuperar, presentar y manipular datos de una base de datos relacional u otra
fuente de datos (como archivos DBF). Puede, además, escoger distintos
estilos de presentación (freefrom, Graph,
).
Los objetos DataWindow tienen conocimiento de los datos que
son recuperados. Puede especificar formato de display y otros atributos,
de forma tal que los datos son mostrados de manera más significativa.
Para tener un datawindow en una ventana se debe tener dos elementos:
- Datawindows Objeto ( ver fig. anterior )
- Datawindows Control ( Un datawindow control debe asociarse a un
datawindow objeto para poder visualizar su contenido en una ventana).
- Código de conexión de base de datos en el script de la aplicación y
de actualización en la ventana en la que se mostrará el datawindow.
|
CREANDO UN OBJETO DATAWINDOW
|
Para crear un objeto datawindow, seguir los siguientes pasos:
- Hacer un click en el pintor DataWindow (
).
- A continuación, el window Select Datawindow se displayará.
- Hacer click en el botón New.
- La ventana New DataWindow se displayará.
- Escoger el estilo de presentación: Freeform, tabular, grid, entre otros.
(Para el ejemplo se escogerá el tipo GRID)
- [Opcional ] escoger opciones para el Objeto DataWindow.
- Escoger un Data Source para el Objeto DataWindow.
(Para el ejemplo se escogerá la fuente de datos Quick Select)
- Hacer click en el botón Ok.
- Seleccionar la(s) tabla(s) y campos de la(s) misma(s) que se presentarán en
el datawindow.
- Si se desea se puede hacer un previo inmediatamente después que el Objeto
Data Window ha sido definido. Para ello hacer click en el botón
() de la barra de herramientas del pintor datawindows.
- [Opcional ] se puede mejorar la apariencia del título y otros.
- Guardar el Objeto DataWindow ( hacer click en el botón
de la barra de herramientas ). A continuación aparecerá la siguiente ventana:
| |
Es conveniente que el datawindow objeto tenga el mismo nombre que el datawindow control.
|
|
- Escribir el nombre con el que se va a guardar el objeto datawindow, seguido de
la convención dw_, seleccionar la librería en la que se va a grabar y hacer
click en el botón ok.
|
MODIFICANDO UN DATAWINDOW EXISTENTE
|
- Hacer click al Pintor DataWIndow (datawindow painter).
- Seleccionar el objeto datawindow de la actual librería.
- Hacer click en OK.
- En la ventana que aparecerá a continuación modificar el datawindow seleccionado.
|
ESCOGIENDO EL ESTILO DE PRESENTACION
|
El estilo de presentación que se selecciona para un objeto datawindow
determina el formato que PowerBuilder usa para el primer display del Objeto DataWindow en
el DataWindow painter Workspace.
Se pueden escoger los siguientes estilos de presentación en un nuevo
Objeto DataWindow :
- Tabular
- Freeform
- Grid
- Label
- N-up
- Group
- Graph
- Crosstab
| |
|
ESTILO TABULAR
|
Este estilo de presentación presenta los datos a través de
columnas, encabezados(header) y páginas, generalmente muestran muchas filas de las B.D.,
al mismo tiempo como pueda el Objeto Datawindow. Puede modificar la
organización default, moviendo las columnas y textos. Este estilo es frecuentemente usado
cuando se quiere agrupar los datos.
ESTILO FREEFORM
|
Este estilo de presentación presenta los datos como columnas de datos,
de arriba hacia abajo de la página, con su respectiva etiqueta para cada columna.
Puede organizar la definición default moviendo las columnas y textos. Este estilo
es frecuentemente usado para entrada de datos(mantenimiento).
ESTILO GRID
|
Este estilo de presentación, presenta los datos en formato fila-columna
con lineas grid que separan filas y columnas. No puede mover las columnas y
encabezados como en los estilos anteriores.
ESTILO LABEL
|
Este estilo presenta los datos como etiquetas. Escoja este estilo para
crear etiquetas de correo u otro tipo de etiquetas.
ESTILO N-UP
|
Este estilo presenta 2 ó más filas en la misma línea del Objeto
DataWindow, una seguida de otra. Es similar al estilo label.
ESTILO GROUP
|
Este estilo es una forma corta para crear grupos en un Objeto
DataWindow, generando un estilo tabular que está agrupado por ciertas popiedades que son
definidas por el que programa.
ESTILO GRAPH Y CROSSTAB
|
Los anteriores estilos son basados en texto. PowerBuilder provee dos
estilos que permiten mostrar información gráficamente : graphs y crosstab.
|
DEFINIENDO LA FUENTE DE DATOS
|
Al definir la fuente de datos (dataSource), se especifica cuál es la fuente
de datos que será usada en el Objeto Datawindow. Se puede escoger de las
siguientes fuentes de datos:
- Quick Select
- SQL Select
- Query External
- Stored Procedure
| |
|
Si los datos que el Objeto DataWindow muestra, proviene de una base
de datos, escoger Quick Select, SQLSelect, Query , o Stored Procedure como la
Data Source.
Si los datos a recuperar son de una sola tabla y sólo necesita escoger
columnas, criterio de selección y Sort (No necesita agrupar, campos calculados, etc.),
escoger Quick Select SQLSelect.
Si la data ha sido definida y salvada en un query, escoger Query.
Si la data es definida en un Stored Procedure (procedimieno
almacenado), escoger Stored Procedure.
Si los datos no provienen de una B.D. , escoger Select externa.
Esto incluye las siguientes situaciones:
Si los datos serán importados de un archivo externo, tal como un archivo de
texto separado por un tab o archivo Xbase(DBF).
Si los datos serán importados de una aplicación DDE.
QUICK SELECT
|
Si sólo necesita seleccionar columnas de una sola tabla, use Quick Select
data source, el Quick Select genera una sentencia SQL.
SQL SELECT
|
Cuando el SQL Select como Data Source, se construye la sentencia SQL
select (grafico o texto) que puede incluir lo siguiente:
Más de una tabla
- Criterio de selección (clausula Where)
- Criterio de Sort(clausula Order By)
- Criterio de agrupamiento (clausula group By y Having)
- Columnas Computadas
|
CREANDO UN CONTROL DATAWINDOWS
|
| |
Un control datawindow, como todo control, va pegado en una ventana.
Para crear un control datawindow y asociarlo con un objeto datawindow, seguir los siguientes pasos:
- Crear una nueva ventana (window).
- Seleccionar de la barra de herramientas el control
datawindow (ver lista que aparece al lado izquierdo).
- Pegar el control en la ventana, dándole el tamaño
que se estime va a tener el datawindow que se desea mostrar.
|
- Asociar el control datawindow al objeto datawindow anteriormente creado.
Para ello, dar doble click sobre el control datawindow y aparecerá la ventana
de propiedades en la que se colocará en el área
DataWindow Object Name, el nombre del datawindow objeto.
- Es conveniente que el nombre del datawindow control sea el
mismo que el del datawindow objeto.
- En el script de la ventana, en la que se encuetra el control
datawindow en el evento open, escribir el siguiente código:
dw_coleccion. settransobject(sqlca)
dw_coleccion.retrieve( )
- Si la aplicación no tiene código para CONEXION a base de datos, escribir el
siguiente código en el evento open de la aplicación.
|
CONTROLANDO LA ACTUALIZACION
|
Para controlar la actualización de un datawindow, seguir los siguientes pasos:
- Hacer un click con el botón derecho del mouse en el control datawindow.
Aparecerá una lista como la que se aprecia en la figura.
- Seleccionar la opción:
Modify DataWindow....
- A continuación aparecerá el entorno
datawindow (datawindow workspace).
- Seleccionar el menú Rows, la opción
Update Properties.
- Hacer click en OK y el datawindow tendrá
la propiedad de actualización.
| |
- A continuación aparecerá una ventana similar a
la siguiente, en la que se hará un check al checkbox Allow Updates.
|
|
COMPONENTES DE UN DATAWINDOWS
|
Un datawindow consta principalmente de las siguientes áreas:
En otro tipo de datawindow, también existen áreas como:
Group Header : Muestra información acerca de los grupos de la cabecera.
Group Trailer : Muestra los totales por cada grupo creado.
Barra de color : Se puede cambiar el color del background, texto, etc., desde el popup del menú.
|
EVENTOS DE UN DATAWINDOWS
|
Los eventos más importantes del objeto datawindow son:
|
Evento
Se ejecuta cuando ...
.
|
Clicked
El usuario ejecuta un click con el ratón.
Constructor
Este evento está presente en casi todos los objetos de PB. Se ejecuta cuando
el sistema acaba de crear el objeto.
DbError
Ha ocurrido un error de base de datos. Util para capturar errores de la base de
datos y tratarlos según nuestro criterio.
Destructor
El sistema destruye los objetos, normalmente al cerrar una ventana.
EditChanged
Cada vez que el usuario pulsa una tecla y modifica un carácter del contenido
de un campo.
Error
Se produce un error de validación en un campo.
ItemChanged
El usuario ha modificado un campo e intenta cambiar de campo con la tecla
tab o el mouse. Util para validar los datos, ya que nos da la oportunidad de
rechazar lo que el usuario ha introducido.
ItemError
El usuario ha producido un itemchanged pero los datos que contiene el campo
no pasan las reglas de validación introducidas en el datawindow object.
ItemFocusChanged
El usuario cambia de campo.
RetrieveEnd
Ha finalizado una instrucción retrieve (consulta a la base de datos).
RetrieveRow
Mientras se está ejecutando una instrucción retrieve y recuperamos cada
una de las filas.
RetrieveStart
Antes de que se lance la instrucción SQL Select contra la base de datos.
RowFocusChanged
El foco cambia de fila. Cuidado con esta instrucción porque se ejecuta por sí
sola cuando hacemos un insert, un delete o un retrieve.
SqlPreview
Cada vez que ejecutamos funciones de PB que afectan a la base de datos.
Retrieve,
Update, etc. Muy útil para depurar el sql que se está generando.
UpdateEnd
Ha finalizado la actualización de la base de datos.
UpdateStart
Antes de que empiece la actualización de la base de datos.

| |
Para finalizar DataWindows, algo importante: Normalmente, primero pegas un datawindow
control en la ventana, y después le asignas un datawindow object que debes haber creado antes.
Pero también se puede hacer ésto dinámicamente a través de un script. El atributo DataObject (de
tipo string) es el que asigna el data object a la datawindow. Piensa por un momento en las
posibilidades que ésto ofrece.
|
|
|