Vamos a realizar un siguiente Ejemplo sobre mantenimiento de un tabla de nuestra base de datos, para el ejemplo he tomado una BD cualquiera (lo importante en este momento es saber como programar la ventana de mantenimiento) mi tabla se llama "Cliente" y haremos la siguiente ventana en Power Builder.
Usamos los siguientes controles:
Tab Control: Contenedor de paginas, ayuda al espacio en la ventana.
CommandButton: Botones de acción para nuestros eventos: Nuevo, Modificar, Eliminar, Buscar, Grabar, Cancelar.
Data Window Control: La data que enlazaremos al objeto Datawindow para manipular los datos en inserción, consultas.
SingleLineEdit: Caja de texto para hacer la consulta a nuestro listado.
Cambiamos los siguientes controles:
Control
|
Propiedad
|
Valor
|
Tab_1
|
Name
|
tab_1
|
TabPosition
|
tabsontop!
| |
tabpage_1
| ||
TabText
|
LISTADO
| |
PictureName
|
ArrangeIcons!
| |
tabpage_2
| ||
TabText
|
REGISTRO
| |
PictureName
|
Project!
| |
St_1
|
Name
|
st_1
|
Text
|
Buscar por Nombre:
| |
St_2
|
Name
|
st_total
|
Cb_1
|
Name
|
cb_nuevo
|
Text
|
Nuevo
| |
Cb_2
|
Name
|
cb_modificar
|
Text
|
Modificar
| |
Cb_3
|
Name
|
cb_eliminar
|
Text
|
Eliminar
| |
Cb_4
|
Name
|
cb_cerrar
|
Text
|
Cerrar
| |
Cb_5
|
Name
|
cb_grabar
|
Text
|
Grabar
| |
Cb_6
|
Name
|
cb_cancelar
|
Text
|
cancelar
| |
Cb_7
|
Name
|
cb_buscar
|
Text
|
Buscar
| |
Dw_1
|
Name
|
dw_listado
|
Dataobject
|
d_mtto_cliente_listado
| |
HScrollBar
|
True
| |
VScrollBar
|
True
| |
Dw_2
|
Name
|
dw_registro
|
Dataobject
|
d_mtto_cliente_registro
| |
Border
|
False
|
Programamos los siguientes Controles:
Evento Open de la Ventana principal:
La 1º linea de código realiza la conexión del datawindow para las transaciones, la conexión se realiza en el evento open del proyecto: "connect using sqlca", la 2º linea realiza la recuperación de datos del datawindow (aunque esto no deberia hacerse porque retorna toda la data en el listado, imaginate si hubiera 1000 filas esto haria lento el proceso de listado pero por ejemplo pondremos retrieve en el open), la 3º linea activa el sólo lectura del datawindow listado, y la 4º linea retorna la cantidad de filas recuperadas en el datawindow.
Evento Open del proyecto
Este código realiza la conexión con la Base de datos SQL Server, para ello tenemos que haber creado el DSN en el ODBC, creado el perfil de conexión. Connect using sqlca nos permite activar la conexión para ser usado en todo el proyecto, luego validamos si la conexión tubo errores, si no es asi abrimos la ventana principal.
Evento Clicked del Boton Nuevo
Cuando damos click en Nuevo, cambiaremos el siguiente tabpage y lo seleccionamos, luego llamamos la funcion insertRow para insertar una nueva fila en el datawindow registro, recordemos que usaremos un datawindow de tipo FreeForm. SetFocus enfoca el control, setcolumn(1) establece la columna 1 del dw_registro. y la variable: is_opcion = 'N' es para poder saber que acción se hace cuando validemos el boton grabar.
Evento Clicked del Boton Modificar
Validamos si existen filas en nuestro listado, si no hay datos, detenemos la ejecución con "RETURN", luego asignamos en la variable is_codigo el valor obtenido del listado: GetItemString es una función del datawindow que nos permite obtener un dato de una determinada FILA, y COLUMNA del datawindow. Hacemos algo parecido al Nuevo, cambiamos el tabpage y asignamos un valor M a la variable is_opcion para validar en nuestro boton grabar.
Evento Clicked en el botón Eliminar
Validamos si hay filas en el dw_listado, obtenemos un valor determinado de la fila seleccionada con getrow y la columna 1. Con messagebox realizamos la pregunta el cual si podemos eliminar o no, de acuerdo al valor elegido lo asignaremos en li_r, si es 1 (ok) eliminamos la fila y actualizamos el datawindow, si el valor es 0 (cancelar) No hacemos nada.
Evento Clicked para el Botón Buscar
Evento Clicked para el Botón Cerrar
Close nos permite cerrar la ventana.
Evento de Usuario: ue_keydown
En la caja de texto creamos luego un evento de usuario: Donde dice Event ID seleccionamos pbm_keydown para activar las acción por teclado, la variable key toma el valor del enter, Si presionamos Enter de nuestro teclado se activara este evento, y tambien llamaremos el evento click del boton buscar. TriggerEvent es el que realiza este proceso de llamar el evento clicked! del botón buscar.
Este código nos permite ordenar las columnas cada vez que damos clic en las cabeceras de nuestro listado. Usamos la función setSort para definir nuestro ordenamiento y Sort para activar el ordenamiento. SetRedRaw nos permite refrescar la parte video para poder visualizar los datos en el dw_listado.
Evento RowFocusChanged del datawindow Listado
Evento Clicked del botón Grabar
Este botón es quien se encarga de registrar o actualizar datos en la base de datos, esto es mediante la función Update del datawindow registro, con is_opcion mandaremos mensajes diferentes de acuerdo al boton. Cuando queramos grabar o actualizar los datos nos saldra una pregunta, si le damos Ok grabamos o actualizamos y retornamos a nuestro listado.
Lo que hacemos aquí es reiniciar el datawindow registro, recuperamos los datos del datawindow listado, enfocamos el control de caja de texto, y cambiamos el tabpage, regresandolo como estaba en un inicio.
VARIABLES DE INSTANCIA
VARIABLES DE INSTANCIA
No hay comentarios:
Publicar un comentario