Está en la página 1de 17

Power Builder Clase 4

Las instrucciones dw_1.settransobject(sqlca); crean una conexión transaccional a la tabla implicada, que en este caso es agenda, note que dw_1 es el nombre del objeto al cual tenemos apuntada el SELECT que lo creamos con el pintor, la segunda instrucción dw_1.retrieve(); lee los registros según la sentencia SELECT, con retrieve() se pueden traer los registros según como tengamos el WHERE en el SELECT, enviando parámetros hacia el SELECT. Recuerde que en clases pasadas hablamos de SQLCA. Nuestro siguiente paso es crear un objeto data object para la segunda datawindow, recordar que en la segunda datawindow es donde ingresaremos los datos o los modificaremos. Presionar CTRL + N, DATAWINDOWà seleccionar FREEFORMà SQL SELECTà SELECCIONAR LA TABLA AGENDAà SELECCIONAR TODOS LOS CAMPOSà ICONO RETURNà NEXTà FINISH

Cambiemos el aspecto y alguna de las propiedades, colores y bordes, los tab order a cero entre otros.

Grabemos el objeto como d_agenda1 en la librería que tiene de nombre datos y asociarla a la datawindow .

Ajustar la datawindow de tal manera que luzca y que se pueda ver un solo registro. Cada ves que escribas código lo puedes COMPILAR. observa el icono que está a la par de los larga vistas.SelectRow(0. sencillamente porque no la hemos sincronizado.sharedata(dw_2) Con esto le estamos diciendo que la datawindow1 compartirá datos con la datawindow2. esto lo logramos con el evento ROWFOCUSCHANGED. quitar los cheques a LIVESCROLL. grabar y ejecutar la aplicación. Si observas la segunda datawindow no hace nada. para sincronizarla debemos abrir el evento OPEN y codificar en el script Dw_1. ejecutemos nuevamente la aplicación. al cambiarse de un registro a otro no refresca la segunda datawindow. Como pudiste observar. Digitar el siguiente script en el evento ROWFOCUSCHANGED de la dw_1 dw_1.false) . moverse de un registro hacia el otro y ver que pasa. esto es porque no se sincronizado que cuando cambie un registro arriba refresque también en la segunda.

scrolltorow(currentrow) dw_1. Aumentemos al evento OPEN de la ventana un puntero o indicador de registro a la primera datawindow. Currentrow es un parámetro que es pasado al evento. este evento se dispara cada ves que el registro cambia.dw_1. Notar que en ambas datawindow la modificación de los datos es cero. el scrolltorow a la segunda datawindow hace que haya sincronía. escribir dw_1.setrow(currentrow) dw_2.scrolltorow(currentrow) De esta manera le indicamos que no seleccione y que seleccione el registro que en ese momento sea el actual. porque los TAB ORDER son cero. pintándolo y hacemos que salte al registro scrolltorow y setrow hacen lo mismo.true) dw_1.setrowfocusindicator(hand!) .SelectRow(currentrow.

eliminar y actualizar registros. desde la datawindow. Ubicarse en el primer botón. recuerde que podemos justificar el datos a la derecha. en las propiedades seleccionar ACTION y seleccionar PAGE NEXT . debería lucir así . ya que tendremos una mano apuntando al registro. Ejecutar la aplicación Existe una manera rápida. como para insertar. chequear action default picture. así. Aumentemos un par de botones para avanzar y retroceder registros.Pero antes. pero poco usual de poder crear botones automatizados para desplazarse o navegar en la tabla. y ensanchemos de tal manera que quepan unos botones y vayamos al pintor de la DW. hacer lo mismo para el segundo botón PAGE PRIOR. Modifiquemos la segunda datawindow. quitar el texto(none). debemos correr los datos para que la mano no los tape.

. notar que pasa con los registros y las dos datawindows.Observar que estos botónes no tienen código. aumentar otros dos botónes para primer y último registro y ejecutar la aplicación. sin embargo. tienen un script predeterminado que genera una acción.

aumentemos dos botones más uno para filtrar y otro para ordenar columnas de una manera rápida. a partir de la datawindow. los botones son aplicables a la segunda datawindows solamente. Ahora. recuerde que la sincronización la tenemos en el evento rowfocuschanged de la primera datawindow. .La respuesta a esto es sencillo.

Si hacemos clic sobre el filtro. esta expresión la podemos verificar por ejemplo. en la cual hay que establecer una expresión. ver la siguiente expresión. PB nos permite seleccionar entre los campos de la tabla. .

verifiquela para ver si es correcta y observe como funciona el retrieve(). .El filtro se puede escribir o hacer clic sobre el campo y terminar de especificarlo la expresión.

. si queremos quitar el filtro o cambiarlo debemos volver a hacer clic sobre el botón.El filtro se aplica con el criterio que se ha dado. por ejemplo quitemos el criterio antes puesto.

.

arrastrar los campos a ordenar. hacer lo mismo para el ordenamiento. se puede ordenar por una o varias columnas ya sea ascendente o descendente.El retrieve() vuelve a su estado original. .

ahora. aumentemos un botón más a la datawindow. . botón insertar y vamos a analizar ciertas consideraciones y efectos. para quitar un ordenamiento simplemente quitar los campos involucrados del ordenamiento. Ok.Observar el orden en la primera datawindow.

editar la datawindow y cambiarlos a 10. grabar lo cambios y ejecutar la aplicación nuevamente. 20 y 30.Notamos que al hacer clic en este botón aparentemente no hace nada. porque los TAB ORDER se encuentran a cero. porqué?. observar que sucede. .

pero no ha sido salvado o grabado realmente.Un nuevo registro es adicionado. esto lo podemos notar si cerramos esta ventana y volvemos a entrar en ella. .

comúnmente son utilizadas cuando todo salio bien COMMIT y cuando no se completo una acción o se dio un problema ROLLBACK . cuando trabajamos en una tabla de una DB se hacen transacciones que pueden ir de una a varias. etc. y ROLLBACK para ignorar las transacciones. .. uno para eliminar. DELETE. Aumentar tres botones más. si recordamos establecimos una vía SQLCA. UPDATE. COMMIT es utilizado para registrar en DB las transacciones INSERT. ellas son COMMIT y ROLLBACK. cancelar y el último para grabar(actualizar). existen dos comandos transaccionales que son utilizados para poder grabar estas transacciones en la DB o para ignorar las transacciones. separar los botones con los de filtrar y ordenar.Porqué? Porque.

las cuales empezaremos a corregir en la siguiente clase.Muy bien. . la cual tiene grandes deficiencias de habilitación y desabilitación de botones y otros aspectos. ahora tenemos completa nuestra aplicación.