Está en la página 1de 8

Programación en Power Builder II

Laboratorio Nro. 3

Búsqueda y Recorrido en un Datawindow


1. Aquí vamos a trabajar con la base de datos EAS Demo DB V4, que una base de datos de ejemplo que
viene con el Adaptative Server Anywhere que se instala con el Power Builder. Para ello nos conectamos
a esta base de Datos, en el menú de Power presionamos el icono Database, seleccionamos el
controlador de Base de Datos OBD ODBC, luego el profile EAS Demo DB V4, a continuación hacer
click derecho y seleccionar connect.

2. Vamos a crear un datawindow de tipo grid llamado d_grid_productos


Para crear un datawindow presionamos el boton new en la barra de iconos principal de power y luego
seleccionamos el tab datawindow

Selecciono el icono grid y presiono OK, aparece una interfase como la siguiente:
Nos presenta una interfase para seleccionar la forma como voy a construir mi datawindow, aquí
seleccionamos Quick Select (selección rápida), presionamos Next.

Aquí seleccionamos la tabla products, nos


aparece una ventana como la siguiente:
Presionamos el boton Add All para seleccionamos todos los campos de la tabla

Luego presionamos Next

Nos aparece una ventana como la siguiente.

Finalmente presionamos Finish. Se debe visualizar una interfase como la siguiente.


Si presionamos el botón grabar nos pide asignarle un nombre a nuestro datawindow, lo direccionamos para
que grabe en la librería datawindow de nuestra carpeta y presionamos OK
Ya hemos creado entonces nuestro primer datawindow (d_grid_productos) para visualizar la tabla de
productos. Este datawindow lo modificamos para que quede de la siguiente forma:

3. Luego creamos una ventana de nombre w_articulos donde vamos a insertar un control dw para
visualizar la lista de productos

Esta ventana deberá tener la siguiente forma:

Pegaremos los siguientes controles en la ventana:


Control Propiedad Valor
st_1 Text Codigo
Color Blue

st_2 Text Descripcion


Color Blue

sle_1 Name sle_codigo


Border lowered

sle_2 Name sle_descripcion


Border lowered

cb_1 Name cb_primero


Text Primero

cb_2 Name cb_anterior


Text Anterior

cb_3 Name cb_siguiente


Text Siguiente

cb_4 Name cb_ultimo


Text Ultimo

cb_5 Name cb_salir


Text Salir

dw_1 Dataobject d_grid_productos


HScrollBar True
VScrollBar True
Border True
BorderStyle StyleLowered!

4. Ahora procedemos a codificar los eventos

Objeto proyecto (aplicación)


Evento open
// Profile EAS Demo DB V4
SQLCA.DBMS = "ODBC"
SQLCA.Database = "EAS Demo DB V4"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DSN=EAS Demo DB V4;UID=dba;PWD=sql',PBCatalogOwner='DBA'"
CONNECT;

IF SQLCA.SQLCode <> 0 THEN


MessageBox('Error de conexion'+string(SQLCA.SQLCode),SQLCA.SQLErrtext)
Return
ELSE
open(w_articulos)
END IF

Objeto w_articulos (ventana)


Evento open
dw_1.SetTransObject(SQLCA)
dw_1.Retrieve()

Objeto sle_codigo (single line edit)


Evento modified
integer li_fila
string ls_descripcion

dw_1.SetSort("id,a")
dw_1.Sort()

If IsNull(Text) or len(trim(Text)) = 0 THEN


MessageBox('Aviso','Ingrese un valor de busqueda')
Return
END IF

li_fila = dw_1.Find("id=long('"+Text+"')",1,dw_1.RowCount())

IF li_fila < 1 THEN


MessageBox('Aviso','Valor no encontrado')
Return
END IF

dw_1.ScrollToRow(li_fila)

ls_descripcion = dw_1.GetItemString(li_fila,"description")
sle_descripcion.text = ls_descripcion

dw_1.TriggerEvent(RowFocusChanged!)

Objeto sle_descripcion (single line edit)


Evento modified
integer li_fila
long ll_codigo

dw_1.SetSort("description,a")
dw_1.Sort()

If IsNull(Text) or len(trim(Text)) = 0 THEN


MessageBox('Aviso','Ingrese un valor de busqueda')
Return
END IF

li_fila = dw_1.Find("description='"+Text+"'",1,dw_1.RowCount())

IF li_fila < 1 THEN


MessageBox('Aviso','Valor no encontrado')
Return
END IF

dw_1.ScrollToRow(li_fila)

ll_codigo = dw_1.GetItemNumber(li_fila,"id")
sle_codigo.text = string(ll_codigo)

dw_1.TriggerEvent(RowFocusChanged!)

Objeto dw_1 (control datawindow)


Evento RowfocusChanged

IF currentrow = 0 THEN return


SelectRow(0,false)
SelectRow(GetRow(),true)

Objeto cb_primero (boton de comando)


Evento clicked
dw_1.ScrollToRow(1)

Objeto cb_anterior (boton de comando)


Evento clicked
dw_1.ScrollPriorRow()

Objeto cb_siguiente (boton de comando)


Evento clicked
dw_1.ScrollNextRow()

Objeto cb_ultimo (boton de comando)


Evento clicked
long ll_filas

ll_filas = dw_1.RowCount()
dw_1.ScrollToRow(ll_filas)

Objeto cb_salir (boton de comando)


Evento clicked
Close(parent)

También podría gustarte