INSTITUTO DE FORMACION TECNICA INFOTEC PowerBuilder
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 cmo programar la ventana de mantenimiento) mi tabla se llama Cliente y haremos la siguiente ventana en Power Builder.
INSTITUTO DE FORMACION TECNICA INFOTEC PowerBuilder
Usamos los siguientes controles: Tab Control: Contenedor de pginas, ayuda al espacio en la ventana. CommandButton: Botones de accin para nuestros eventos: Nuevo, Modificar, Eliminar, Buscar, Grabar, Cancelar. Data Window Control: La data que enlazaremos al objeto Datawindow para manipular los datos en insercin, consultas. SingleLineEdit: Caja de texto para hacer la consulta a nuestro listado. StaticText: Etiqueta de texto. Cambiamos los siguientes controles: Control Propiedad Valor Tab_1 Name tab_1 TabPosition tabsontop! tabpage_1 INSTITUTO DE FORMACION TECNICA INFOTEC PowerBuilder
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 INSTITUTO DE FORMACION TECNICA INFOTEC PowerBuilder 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 lnea de cdigo realiza la conexin del datawindow para las transaciones, la conexin se realiza en el evento open del proyecto: connect using sqlca, la 2 linea realiza la recuperacin 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 lnea activa el slo lectura del datawindow listado, y la 4 linea retorna la cantidad de filas recuperadas en el datawindow. Evento Open del proyecto INSTITUTO DE FORMACION TECNICA INFOTEC PowerBuilder
Este cdigo realiza la conexin con la Base de datos SQL SERVER, para ello tenemos que haber creado el DSN en el ODBC, creado el perfil de conexin. Connect using sqlca nos permite activar la conexin para ser usado en todo el proyecto, luego validamos si la conexin 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 funcin 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 accin se hace cuando validemos el botn grabar. Evento Clicked del Boton Modificar INSTITUTO DE FORMACION TECNICA INFOTEC PowerBuilder
Validamos si existen filas en nuestro listado, si no hay datos, detenemos la ejecucin con RETURN, luego asignamos en la variable is_codigo el valor obtenido del listado: GetItemString es una funcin 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 botn 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 Botn Buscar INSTITUTO DE FORMACION TECNICA INFOTEC PowerBuilder
El botn Buscar nos permitir filtrar el datawindow, primero asignamos en la variable ls_cadena lo que capturamos del control sle_buscar, con upper transformamos en mayuscula los datos de la caja de texto. Luego asignamos el filtro como si fuera el where de una consulta SQL, aplicamos el filtro con filter y usamos un retrieve para retornar los datos. Luego retornamos la cantidad de filas que se recupero. Evento Clicked para el Botn 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 accin 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 botn buscar. INSTITUTO DE FORMACION TECNICA INFOTEC PowerBuilder
Evento Clicked del datawindow Listado
Este cdigo nos permite ordenar las columnas cada vez que damos clic en las cabeceras de nuestro listado. Usamos la funcin 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
INSTITUTO DE FORMACION TECNICA INFOTEC PowerBuilder Estas 2 lineas de cdigo nos permitir sombrear la fila seleccionada. setrowfocusindicator(hand!) nos permite ver una mano en el lado izquierdo de nuestra fila.Evento Clicked del botn Grabar
Este botn es quien se encarga de registrar o actualizar datos en la base de datos, esto es mediante la funcin 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. Evento Clicked del botn Cancelar
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 INSTITUTO DE FORMACION TECNICA INFOTEC PowerBuilder
Escribimo las variables de instancia que usaremos en el formulario o ventana, is_codigo para capturar el cdigo a modificar del datawindow listado, is_name para capturar el nombre del campo en el momento de ordenar por columna, is_opcion para poder saber que accin estamos realizando si es Nuevo o Modificar, y ib_activa un boolean para activar o desactivar en nuestra logica de ordenamiento de campos por columna.