Sunteți pe pagina 1din 4

Agregar, editar, borrar en Gambas

Publicado el 6 octubre, 2010 de dapeca2608


Por su parte el botn de cancelacin simplemente cierra el formulario, sin actuar sobre
los datos.
PUBLIC SUB btncancelar_click()
Me.close
End
Insertamos los datos mediante el siguiente cdigo en el evento click de btnaceptar:
TRY hconn.EXEC (insert into mitabla values (&1,&2,&3,&4,&5.&6),
txtid,txtnombre,txtapellido,txttelefono,txtmovil,txtcumple)
ME.close
CATCH
message.error(Imposible introducir los datos solicitados)
END
Le pedimos al objeto connection que inserte los datos en la tabla,mediante la instruccin
insert intro nombre_de_la_tabla values,el &1 indica que toma el primer valor a
continuacin que es txid.text, el &2 el siguiente(txtnombre.text) y as sucesivamente.
Si todo va bien el formulario se cierra, si hay un error se captura con catch y nos
muestra el mensaje de error.
Volvamos ahora al formulario principal y en el evento click de btnnuevo colocamos el
siguiente cdigo;
PUBLIC SUB Btnnuevo_Click()
IF ConectarBase() THEN RETURN
fdata.runnew(hconn)
cerrarconexion()
Form_Open()
END
Primeros tratamos de conectarnos a nuestra base de datos, si no lo conseguimos nos
salimos. Conseguida la conexin llamamos al mtodo runnewde fdata.
Como este formulario se muestra en forma modal, el presente cdigo queda a la espera
de que ingresemos datos en fdata o simolemente lo cerremos.
A continuacin cierra la conexin y llama al metodo form_open que se encarga de
recargar los datos para mostrar los cambios realizados.
Continuando con el formulario principal, vamos a codificar el mtodo para borrar
registros presionando la tecla suprimir.
PUBLIC SUB tabla_KeyRelease()
IF Key.Code = Key.Delete THEN
IF tabla.current = NULL THEN RETURN
IF tabla.Current.Selected = FALSE THEN RETURN
IF ConectarBase() THEN RETURN
TRY hconn.exec(delete from mitabla where id=&1, tabla.Current.Key)
IF ERROR THEN
Message.Error(Imposible borrar el registro)
ELSE
tabla.Current.Delete()
ENDIF
ENDIF
END
Vemos primero si hay algn elemento en la tabla y si hay algo seleccionado, si no es as
salimos del mtodo. Si hay alguno seleccionado tratamos de abrir la coneccin y tras
lograrlo, borramos de la base los datos del registro cuya clave coincida con la del
registro seleccionado. Si hay un error sale el mensaje informativo, es caso contrario se
borra el registro tambin en nuestro colunmview para reflejar el cambio en la base.
Aqu vemos que la instruccin sql usada es condicional y la palabra marcada en negrita
where antecede a la condicin;
TRY hconn.exec(delete from mitabla where id=&1, tabla.Current.Key)
Ahora vamos a ver como hacemos para modificar un registro, por ejemplo si un amigo
cambia el mvil, basta con editar ese campo.
Vamos a aprovechar el evento activitede nuestro control colunmview(tabla) para
agregar esta funcionalidad . Dicho evento se dispara al hacer doble click sobre alguna
columna de la tabla.
PUBLIC SUB tabla_Activate()
DIM hresul AS Result
IF tabla.Current = NULL THEN RETURN
IF ConectarBase() THEN RETURN
hresul = hconn.Edit(mitabla, id=&1,
tabla.Current.Key)
fdata.runedit(hresul)
tabla.Current[0] = hresul["id"]
tabla.Current[1] = hresul["nombre"]
tabla.Current[2] = hresul["apellido"]
tabla.Current[3] = hresul["telefono_fijo"]
tabla.Current[4] = hresul["telefono_movil"]
tabla.Current[5] = hresul["cumple"]
cerrarconexion()
END
La lnea en negrita es la que llama al mtodo runedit de fdata. Como an no hemos
creado este mtodo si tratamos de ejecutarlo ahora no funcionar.
Volvamos por tanto a fdata y coloquemos las siguientes variables al principio del
formulario para que sean accesibles desde todo el formulario.
PRIVATE hconn AS Connection
PRIVATE hresul AS Result
PRIVATE editando AS Boolean
y agregamos el mtodo runedit cuyo cdigo es el siguiente:
PUBLIC SUB runedit(data AS Result)
hresul = data
editando = TRUE
txtid.text = hresul["id"]
txtnombre.text = hresul["nombre"]
txtapellido.text = hresul["apellido"]
Txttelefono.text = hresul["telefono_fijo"]
txtmovil.text = hresul["telefono_movil"]
txtcumple.text = hresul["cumple"]
ME.ShowModal
END
Esto nos muestra fdata con los datos del registro seleccionado de modo que podamos
editarlo.Y nos pone la variable editando con el valor true. Esto es necesario para que
mediante una instruccin condicional al hacer click en btnaceptar distinga entre altas y
modificaciones.
El nuevo cdigo de btnaceptar es el siguiente.
PUBLIC SUB btnaceptar_Click()
IF editando THEN
TRY hresul["id"] = txtid.text
TRY hresul["nombre"] = txtnombre.text
TRY hresul["apellido"] = txtapellido.text
TRY hresul["telefono_fijo"] = Txttelefono.text
TRY hresul["telefono_movil"] = txtmovil.text
TRY hresul["cumple"] = txtcumple.text
TRY hresul.Update
ELSE
TRY hconn.EXEC(insert into mitabla values (&1,&2,&3,&4,&5,&6), txtid.text,
txtnombre.text, txtapellido.text,
Txttelefono.text, txtmovil.text, txtcumple.text)
ENDIF
ME.Close()
CATCH
Message.Error(Imposible introducir los datos solicitados)
END
Si hay una modificacin sita el valor de cada caja de texto con TRY y actualiza la base
de datos con hresul.update, si hay un error lo captura con CATCH y muestra el mensaje
de error. Si editando es false contina con las intrucciones despes de else que no es
ms que la instruccin insert into ya vista en agregar registros.

S-ar putea să vă placă și