Mantenimiento en power builder

Tengo un datawindows tipo freeforn y en sql server 2008 tengo una pequeña BD que se llama EMPLEADO y una tabla que se llama EMPLEADOS con los siguiente campos (código, nombre, dirección, país, sueldo) lo que quiero hacer es como hacer un mantenimiento, osea en el power builder tengo los botones Nuevo, Agregar, Modificar, Eliminar, Salir y el datawindows tipofreeforn y cuando le de click en el botón nuevo me permita escribir un nuevo empleado y cuándo le de click en el botón agregar se agregue a la base de datos y en el botón modificar es por ejemplo escribí mal un nombre y luego corrijo el error y cuando le de click en el botón modificar los datos se actualicen y lo mismo para el botón eliminar que se elimine el registro de la base de datos espero que me puedas ayudar ..

3 respuestas

Respuesta
3
Lo que necesitas hacer es lo más fácil en power builder, bien empecemos:
Evento open
// Hacemos la transacción para leer los datos al datawindows
dw_1. SetTransObject( SQLCA)
dw_1.Retrieve
BOTON NUEVO o AGREGAR (creo que es lo mismo) EVENTO CLICKED
// Declaramos una variable de tipo Long
Long ll_fila
// a esta variable le asignaremos la fila nueva en donde ingresaremos los datos
ll_fila = dw_1.InsertRow( 0)
// Ahora le diremos al datawindows que nos muestre la fila nueva creada
dw_1. ScrollToRow( ll_fila)
// Esto es una forma más abreviada del código de arriba
dw_1. ScrollToRow( dw_1. InsertRow( 0)
BOTON GUARDAR, EVENTO CLICKED
// le decimos que los cambios realizados al dw se actualizen
dw_1.Update( )
// Ahora verificamos los errores
If SQLCA.SQLCODE = 0 Then
MessageBox("MENSAJE", "Empleado guardado con exito")
Commit Using SQLCA;
Else
MessageBox("MENSAJE", "Error, el Empleado no se pudo Guardar")
Rollback Using SQLCA;
End If
BOTON MODIFICAR es lo mismo que el guardar
BOTON ELIMINAR, EVENTO CLICKED
// Eliminamos la fila que esta enfocada
dw_1.DeleteRow( dw_1.GetRow( ))
// Ahora actualizamos todos los datos del dw
dw_1.Update( )
// Ahora verificamos los errores
If SQLCA.SQLCODE = 0 Then
MessageBox("MENSAJE", "Empleado eliminado con exito")
Commit Using SQLCA;
Else
MessageBox("MENSAJE", "Error, el Empleado no pudo ser Eliminado")
Rollback Using SQLCA;
End If
Botón salir, evento clicked
Close( Parent)
Recuerda que el código tiene que ser clave primaria y tiene que autogenerarce:
Eh aquí un ejemplo de un ejercicio anterior:
DESCARGAR
Acá tienes una vista Previa: (Algo muy sencillo, ahí te lo dejo para que lo modifiques)
http://www.nekssolutions.ok.pe/powerbuilder/p1.JPG
Cuando le doi click para hace agregar o eliminar me sale este error
datawindow does not have UPDATE capability
Bien para eso abre tu objeto datawindows, y dirígete el menu Row, y después a Update Properties, se abrirá una ventana en donde tendrás que indicar tu clave primaria, y los campos a modificar:


Creo que eso es todo, si tienes más dudas, házmelo saber.
Respuesta
3
Primero asignas el data windows_control la tabla que deseas de tu base de datos, con esto obtienes los campos, luego enlazas el dw_control al dw_objeto que es qui va a tener los eventos
El mantenimientos se puede manejar de diferentes formas con eventos en el datawindow_control o botones.
Te podría servir algo así...
 User_Event o boton.
INSERTAR
long ll_fila
ll_fila =  dw_datos.insertrow(dw_datos.getrow( ))
dw_datos.scrolltorow( ll_fila)
dw_datos.setrow( ll_fila)
GRABAR
dw_datos.accepttext( )
if dw_datos.update( ) < 0 then
 messagebox("Informacion", "No actualizo la base de datos")
 rollback;
 return
end if
commit;
Messagebox("Informacion","Actualizacion exitosa")
Eliminar
dw_datos.deleterow( 0)
Si me podrías explicar brevemente para que sirven te lo agradecería .. gracias
rollback
 return
commit;
El rollback es para que si se produce un error en la transacción no haga nada en la base de datos, para evitar errores e integrida referencial.
Retun acaba la sentencia
Commit una orden propia de pl-sql es para aceptar la transacción en kla base de datos, por que antes de esto la transacción solo sea ha realizado en el datawindows y ni en la BDD.
Respuesta
1
Agregame [email protected], ahi me a hces recordar para enviarte un ejemplillo, ya que indicarte por aca es un codigo regular y como veo que estas empesando mejor seria un ejemplo ya echo antes de ponerte codigo y que te pongas a armarlo tu solo.
No olvides finalizar la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas