Вы находитесь на странице: 1из 11

Conectarse a MySql y Guardar Datos

En primer lugar debe asegurarse de tener instalado Mysql en su pc. Personalmente recomiendo tambien
la instalacion de PhpMyadmin que es un programa para administrar y crear bases de datos con Mysql.
Si desea mas informacion de como instalar un servidor LAPM (Linux Apache Php Mysql), este link lo
puede ayudar.
Ok instalado Mysql en su equipo, podemos crear nuestra base de datos bien sea por phpmyadmin o
usando el gestor de base de datos que trae Gambas, el cual se accede en: Herramientas -> Gestor de
base de Datos
Al principio te pide una contrasea para encriptarla, esto para hacer mas segura tu BD. Luego puedes
crear la BD y sus tablas de forma muy sencilla e intuitiva.
UN EJEMPLO.
Nada mejor que un ejemplo para ilustrar como se hace para conectar la BD creada y nuestro
formulario.
Formulario: En este ejemplo, el formulario se encarga de agregar informacion sobre unos productos a
nuestra BD. El aspecto es el siguiente:

Codigo: El codigo, un poco extenso, es el siguiente:


Gambas class file
estas son las variables de conexion a la base de datos
PUBLIC cn AS NEW Connection
PUBLIC rs AS Result
variables booleanas para evaluacion de expresiones
PUBLIC valor AS Boolean
PUBLIC valor1 AS Boolean
PUBLIC valor2 AS Boolean
PUBLIC SUB BtnCerrar_Click()
ME.Hide
END

PUBLIC SUB Form_Open()


este evento permite crear la conexion a la base de datos
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)
ME.Close
ELSE
se selecciona los campos de la tabla que contiene la BD
rs = cn.Exec(SELECT * FROM productos)
rs.MoveFirst
END IF
END WITH
END
PRIVATE SUB Evaluacion()
IF IsNumber(texto2.Text) THEN
valor = TRUE
ELSE
Message.Info(el valor no es numerico\n & usted introdujo:\n & texto2.Text)
valor = FALSE
END IF
IF IsNumber(texto3.Text) THEN
valor1 = TRUE
ELSE
Message.Info(el valor no es numerico\n & usted introdujo:\n & texto3.Text)
valor1 = FALSE
END IF
IF IsNumber(texto4.Text) THEN
valor2 = TRUE
ELSE
Message.Info(el valor no es numerico\n & usted introdujo:\n & texto4.Text)
valor2 = FALSE
END IF
END
PUBLIC SUB BtnGuardar_Click()
este es el evento que permite agregar los datos ingresados
mediante el formulario a la base de datos
DIM xresult AS Result
DIM xQuery AS String
DIM xParam AS Integer

Evaluacion()
IF valor = FALSE OR valor1 = FALSE OR valor2 = FALSE THEN
ClearField()
RETURN
END IF
xresult = cn.Create(productos)
xresult!tipo = UCase(Combo1.Text)
xresult!descripcion = Trim(UCase(texto1.Text))
xresult!precio = Val(Trim(texto2.Text))
xresult!stock = Val(Trim(texto3.Text))
xresult!precio_final = Val(Trim(texto4.Text))
xresult.Update
Message.Info(Datos Guardados)
IF ERROR THEN Message.Error(Error.Text)
rs = cn.Exec(SELECT * FROM usuarios)
rs.MoveFirst
ClearField()
END
PRIVATE SUB ClearField()
texto1.Text =
texto2.Text =
texto3.Text =
texto4.Text =
combo1.SetFocus
END
PUBLIC SUB BtnModificar_Click()
FrmOperadores.Hide
FrmModificaProducto.Show
END

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:

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

Ordenacin Por Metodo de la Burbuja


La tecnica de ordenacin por burbuja compara elementos consecutivos de la lista, de modo que si en
una pasada no ocurrieran intercambios, significaria que la lista esta ordenada. Este metodo es muy
clasico y sencillo, y por lo general es uno de los primeros ejercicios que les colocan a los estudiantes
de informatica y computacion cuando ven el capitulo que corresponde a vectores.
A continuacion les coloco un programa que realiza ordenacion por metodo de la burbuja bajo Gambas.
Esta hecho como un programa de consola.
PUBLIC SUB Main()
DIM Columna AS Integer
DIM N, i, j, Aux AS Integer
DIM Limite AS Integer
DIM vector AS Integer[]
vector = NEW Integer[]
PRINT Ingrese el limite maximo a leer el vector:
INPUT Limite
FOR Columna = 0 TO Limite
PRINT Ingresa un Numero
INPUT N
vector.Add(N)
NEXT
Este es el Procedimiento Burbuja
para ordenar los datos que contiene el vector
FOR i = 0 TO Limite 1
FOR j = 0 TO Limite 1
IF Vector[j] > vector[j + 1] THEN
En esta parte se realiza el intercambio
Aux = vector[j]
vector[j] = vector[j + 1]
vector[j + 1] = Aux
END IF
NEXT
NEXT
PRINT
Por ultimo procedemos a imprimir el vector
FOR j = 0 TO Limite
PRINT vector[j]
NEXT
END

Cargar Imagen con el componente PictureBox


PictureBox es un componente que nos permite colocar imgenes o fotos en nuestras aplicaciones en
Gambas. Su uso es relativamente simple; a continuacin vamos a describir en unos simples pasos
como cargar una imagen.
1) Creamos nuestro proyecto y dibujamos el componente PictureBox, esta situado en la pestaa Form.
El tamao puede ser el que usted desee. Para efectos de este ejemplo le cambie en la propiedad Name el
nombre por MiFoto.
2) Fijamos la propiedad Border en Etched, de manera que cuando corramos la aplicacin podamos ver
el borde del cuadro donde estar la imagen.
3) Ubicados sobre el pictureBox dibujado en nuestro formulario, hacemos click con el botn derecho y
elegimos el evento MouseDown y colocamos el siguiente cdigo:
Public Sub MiFoto_MouseDown()
MiFoto.Stretch = True
Dialog.Title = Seleccione una Imagen para Cargar
Dialog.Path = User.Name
Dialog.Filter = [*.jpg, JPG, .png, PNG]
If Not Dialog.OpenFile() Then
MiFoto.Picture = Picture[Dialog.Path]
Endif
End
Y con esas sencillas lineas, al correr el programa y hacer click sobre el recuadro, nos mostrara una caja
de dialogo para elegir la imagen que queremos mostrar en nuestro formulario. Simple verdad?.
Por ultimo podemos agregar un botn para cerrar la aplicacin, o hacer que el formulario salga
centrado o cosas por el estilo.
Espero les sea de utilidad, hasta la prxima!