Guardar, Buscar, Editar y Eliminar con MYSQL en Gambas

En esta oportunidad les coloco un ejemplo tipico de creacion de un formulario para agregar, buscar, editar y eliminar usuarios de un sistema utilizando mysql como base de datos y Gambas. El codigo es un poco largo, porque en realidad esta pantalla forma parte de un sistema para control de cibercafe (en desarrollo aun), pero se puede implementar facilmente a otros pogramas que realicen. Una de las modificaciones que se han realizado a este formulario (que se colocaran en un proximo post), es que la conexion a la BD se hace desde un modulo, de manera de reutilizar el codigo en otros formularios.

el aspecto del formulario es el siguiente:

operadores.png

El codigo que debe llevar el formulario es el siguiente:

PUBLIC cn AS NEW Connection
PUBLIC rs AS Result
PUBLIC actStatus AS String
PUBLIC Controlador AS Boolean

PRIVATE SUB SetEnabledFormField(status AS Boolean)

textbox1.Enabled = status
texto2.Enabled = status
texto3.Enabled = status

END

PRIVATE SUB SetEnabledNavButton(status AS Boolean)

BtnFirst.Enabled = status
BtnPrev.Enabled = status
BtnNext.Enabled = status
BtnLast.Enabled = status

END

PRIVATE SUB SetEnabledActButton(status AS Boolean)

BtnGuardar.Enabled = status
BtnEditar.Enabled = status
BtnBuscar.Enabled = status
BtnEliminar.Enabled = status

END

PRIVATE SUB lockFormField(status AS Boolean)

textbox1.ReadOnly = status
texto2.ReadOnly = status
texto3.ReadOnly = status

END

PRIVATE SUB updateFieldValue()

textbox1.Text = rs!usuario
texto2.Text = rs!pass

END

PRIVATE SUB clearField()

textbox1.Text = “”
texto2.Text = “”
texto3.Text = “”
textbox1.SetFocus

END

PUBLIC SUB Erroneos()

IF texto2.Text <> texto3.Text THEN
Message.Warning(“Claves Erroneas”)
texto2.Text = “”
texto3.Text = “”
texto2.SetFocus
Controlador = TRUE
ELSE
Controlador = FALSE
END IF
END

PUBLIC SUB Form_Open()

WITH cn
.type = “mysql”
.host = “localhost”
.login = “root”
.password = “102172″
.name = “cibercafe”

TRY .OPEN
IF ERROR THEN
Message.Error(“Error abriendo la base de datos!!!\n” & Error.Text)
SetEnabledFormField(FALSE)
ME.Close
ELSE
rs = cn.Exec(“SELECT * FROM usuarios”)
lockFormField(TRUE)
textbox1.ReadOnly = FALSE
rs.MoveFirst
IF rs.Available = TRUE THEN
updateFieldValue()
END IF
END IF
END WITH

END

PUBLIC SUB TextBox1_GotFocus()

BtnBuscar.Default = TRUE

END

PUBLIC SUB TextBox1_LostFocus()

BtnBuscar.Default = FALSE

END

PUBLIC SUB BtnBuscar_Click()

DIM i AS Integer
DIM found AS Boolean
rs.MoveFirst
found = FALSE
i = 1
WHILE 1 <= rs.Count
IF rs!usuario LIKE “*” & textbox1.Text & “*” THEN
found = TRUE
EXIT
END IF
rs.MoveNext
i = i + 1
WEND
IF found = TRUE THEN
updateFieldValue()
ELSE
Message.Warning(“Error en la data!!”)
END IF

END

PUBLIC SUB Form_Close()

cn.Close

END

PUBLIC SUB BtnFirst_Click()

rs.MoveFirst
IF rs.Available = TRUE THEN
updateFieldValue()
END IF

END

PUBLIC SUB BtnPrev_Click()

rs.MovePrevious
IF rs.Available = TRUE THEN
updateFieldValue()
END IF

END

PUBLIC SUB BtnNext_Click()

rs.MoveNext
IF rs.Available = TRUE THEN
updateFieldValue()
END IF

END

PUBLIC SUB BtnLast_Click()

rs.MoveLast
IF rs.Available = TRUE THEN
updateFieldValue()
END IF

END

PUBLIC SUB BtnAdd_Click()

lockFormField(FALSE)
SetEnabledNavButton(FALSE)
SetEnabledActButton(FALSE)
BtnGuardar.Enabled = TRUE
BtnCancel.Enabled = TRUE
clearField()

actStatus = “ADD”

END

PUBLIC SUB BtnGuardar_Click()

DIM xresult AS Result
DIM xQuery AS String
DIM xParam AS Integer
Erroneos()
IF Controlador = TRUE THEN
RETURN
ELSE
SELECT CASE actStatus
CASE “ADD”
xresult = cn.Create(“usuarios”)
xresult!usuario = Trim(UCase(textbox1.Text))
xresult!pass = Val(Trim(texto2.Text))
xresult.Update
Message.Info(“Datos Guardados”)
IF ERROR THEN Message.Error(Error.Text)
CASE “EDIT”
xParam = texto2.Text
xQuery = “pass = ” & texto2.Text

cn.Begin
xresult = cn.Edit(“usuarios”, xQuery)
xresult!usuario = Trim(UCase(textbox1.Text))
xresult!pass = Val(Trim(texto2.Text))
xresult.Update
cn.Commit
Message.Info(“Datos editados”)
IF ERROR THEN Message.Error(Error.Text)
CASE “DEL”
xParam = texto2.Text
xQuery = “pass = ” & xParam
cn.Begin
xresult = cn.Edit(“usuarios”, xQuery)
xresult.Delete
cn.Commit
Message.Info(“Datos eliminados”)
IF ERROR THEN Message.Error(Error.Text)
CASE ELSE
END SELECT
rs = cn.Exec(“SELECT * FROM usuarios”)
rs.MoveFirst
SetEnabledNavButton(TRUE)
SetEnabledActButton(TRUE)
‘clearField()
END IF
END

PUBLIC SUB BtnCerrar_Click()

ME.Close

END

PUBLIC SUB BtnEditar_Click()

lockFormField(FALSE)
SetEnabledNavButton(FALSE)
SetEnabledActButton(FALSE)
BtnGuardar.Enabled = TRUE
BtnCancel.Enabled = TRUE

actStatus = “EDIT”

END

PUBLIC SUB BtnEliminar_Click()

lockFormField(FALSE)
SetEnabledNavButton(FALSE)
SetEnabledActButton(FALSE)
BtnGuardar.Enabled = TRUE
BtnCancel.Enabled = TRUE

actStatus = “DEL”

END

PUBLIC SUB BtnCancel_Click()

lockFormField(TRUE)
SetEnabledNavButton(TRUE)
SetEnabledActButton(TRUE)

END

About these ads

27 comentarios en “Guardar, Buscar, Editar y Eliminar con MYSQL en Gambas

  1. Adonis Barrera dijo:

    Deberian sacar un manual completo sobre Gambas, donde se plasmen todos los recursos. Las herramientas que tiene asi como los complementos necesarios para hacer uso de ellos como kde.

  2. jjmoncar dijo:

    Estimado amigo adonis, si revisas en este blog conseguiras un libro en español, donde se explican bastante bien muchos de los recursos que usa gambas. Te invito a revisar bien el blog. Saludos y siempre a la orden.

  3. Vioscar dijo:

    Hola jjmoncar, veo que comenzaste el blog apenas en diciembre y ya tienes pasta de la buena. Espero que tu blog crezca. Se ve que el proyecto en el que estas trabajando va a llevar trabajo pero no descuides el blog.

    He leido este tutorial

    http://www.kdehispano.org/curso_gambas

    y esta muy bueno, que con todo lo que aqui he encontrado ya hace que me piquen los dedos por hecharle mano.

    Una sugerencia, el codigo que publicas para quienes venimos de trabajar en visual basic es claro, pero creo que puedes comentarlo un poco mas.

  4. Mal2tiN dijo:

    Hola! Quisiera preguntarte cual es la ventaja de utilizar recordsets (rs). Pues soy programador autodidacta, y cuando empecé a trabajar con DB se me dio por hacer módulos que reciban como parámetros los datos y que ejecuten directamente las instrucciones desde el cn.Exec,…

  5. daniel dijo:

    ps la verdad no entendi mucho o casi nada ,
    hay muy poca documentacion sobre gambas de hecho casi nula la mayoria de la gente ni sabe que existe, y lo peor es que el programa no viene con una guia de su propia base de datos :S

  6. José María dijo:

    Acabo de empezar con gambas y estoy entusiasmado… gracias por estas aportaciones.
    He leido que hay bibliotecas de clases programadas por terceros para incrementar la potencia del lenguaje… ¿donde podemos ver algo al respecto?

  7. Josue Gonzalez dijo:

    no entiendo casi nada del código, alguien podría explicar que es lo que haces aquí.

    o al menos fragmentar todo en partes. También hay novatos interesados.

    No supongas que todos sabemos todo.

  8. oscar dijo:

    Hola al hacer la conexion desde un boton me aprece el el error de que no encuentra el driver de mysql. Este lo tengo instalado y lo trabajo con php que crees que pueda pasar, tambien habilite la propiedad de bd en propiedades de gamabas para tener acceso alas bases de datos

    • si usas ubuntu en el centro de soft escribe “gambas mysql” sin comillas ovbio por ahi t saldra para instalar el driver o si no en terminal seria algo como sudo apt-get install gb.db.mysql

  9. me olvide para activar el driver vas a propiedades del proyecto y activas el componente y me gustaria q en el blog hagan ejemplos con postgresql ya q estoy usando este gestor de base de datos y algunas cosas no se acomodan bien por lo demas gracias por existir :)

  10. jose f. ramirez dijo:

    buenas amigo estoy iniciandome en gambas y de verdad gracias a estos blog hoy en dia en internet e avanzado mucho sin embargo me estancado a la hora validar las cajas de texto en mi proyecto de gambas como el de q acepte solo letras mayusculas, numeros q darle enter pase a la otra caja de texto pero no e encontrado nada en la web hasta ahora me podrias ayudar al respecto mi correo es josefranramirez@yahoo.es

  11. carolina dijo:

    Stoy haciendo un sistema para el comedor de una institucion y queria saber si me podrían facilitar el codigo de conexion cn base d dato mysql, el codigo de buscar un registro, modificarlo, eliminarlo y guardarlo, es de suma importancia..!! Las columnas serian, NOMBRE, APELLIDO, CEDULA, SEXO Y DIRECCION..!! Espero pronta respuesta.! Gracias de antemano

    • Julio Montaño dijo:

      gb.db, gb.db.form y el componente dependiendo de la base de datos a utilizar. Si es mysql: gb.db.mysql; postgres: gb.db.postgresql; sqlite: gb.db.sqlite3

  12. lenieluz dijo:

    muy interesante este aporte!! me podrian recomendar algun foro para que me asesoren con mi proyecto… de tanto investigar opte con trabajar con gambas3… el proyecto es para un consejo comunal

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s