Posteado por: jjmoncar | Enero 11, 2008

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


Respuestas

  1. 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. 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. 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. 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. gracias profesor esta muy claro el código. me ayudara en la comprensión del proyecto que estoy pensando hacer

  6. 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

  7. me gusta tu blogs, pero trata de comentar mas lo que publicas para usuarios inexpertos, que apenas están comenzando con la herramienta

  8. 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?


Dejar una respuesta

Su respuesta:

Categorías