Guìa de Estudio Gambas

Anuncio
GUIA DE ESTUDIO
Elaborado por:
Ing. Alfredo Diaz
GUIA DE ESTUDIO
GAMBAS
I. QUE ES GAMBAS?
Gambas es un lenguaje de programacion libre y gratuito basado en el Basic. Es el acronimo de
Gambas-Almost-Means-BASic, es decir, “Gambas, casi significa Basic”. En otras palabras, es un
lenguaje orientado a objetos que utiliza instrucciones muy similares a las de otros entornos del
Basic (como Visual Basic de Microsoft). Con este, se pueden realizar aplicaciones de escritorio
complejas y distribuibles en diversas distribuciones de Linux como RedHat, Ubuntu, Debian, entre
otras.
II. QUE SE NECESITA PARA INSTALAR GAMBAS?
Para instalar y utilizar gambas debemos contar con una PC reciente (Pentium 4 Dual Core, 1 Gb de
RAM, Disco Duro con suficiente espacio libre (10Gb), video con resolucion de 1024x768, teclado y
mouse)
III. PARA ESTE CURSO SE UTILIZARA.
-Gambas (version 2,16 o posterior)
-Servidor de MySQL corriendo como servicio
IV. INICIANDO GAMBAS DESDE UBUNTU
1. Para iniciar gambas, haga clic sobre el menu “Aplicaciones” de ubuntu, luego en “Programacion”
y finalmente en “Gambas2”
2. Luego, se iniciara Gambas mostrando la siguiente
ventana:
3, Aca se muestra un menu para crear un nuevo
proyecto, abrirlo o ver algunos ejemplos incluidos
con el paquete.
Un Proyecto es una colección de archivos que al ser
compilados (o traducidos al lenguaje maquina), puede
ser ejecutado por el computador.
Es de mencionar que un solo proyecto puede contener
muchos archivos como Formularios, Modulos,
imagenes, etc.
4. Seleccione la opcion “Nuevo proyecto” y aparecera
la siguiente ventana>
5, Ahora, debemos elegir el tipo de proyecto. En este
caso, podemos crear una aplicación grafica sencilla,
basada en las bibliotecas QT, GTK+, una aplicación
de consola (ejecutable desde el terminal), entre otras.
A nuestros efectos, seleccione “Aplicacion Grafica” y
presione “Siguiente”.
6. Haga clic en el panel izquierdo en la
opcion “Home” y luego cree una nueva
carpeta con el boton de carpeta brillante (el
que aparece en la parte superior derecha en
tercera posicion).
7, Coloque el nombre “sistema” (en
minusculas) para terminar de crear la
carpeta que contendra nuestra aplicación.
8, Hecho esto, presione el boton “Siguiente”
y aparecera la proxima ventana.
9.
Escri
ba el
nomb
re
“siste
ma” y
el
titulo
“siste
ma”.
Estos
indican el nombre de proyecto y el titulo que aparecera en la ventana principal. Finalmente presione
“OK” y
aparecera
el
entorno
de
trabajo
de
Gambas.
10.
ventana
“Consejo
para
a trabajar.
V.
EL
ENTORNO DE TRABAJO DE GAMBAS
Cierre la
del
del Dia”
empezar
Gambas esta provisto de un entorno de trabajo intuitivo y amigable. El mismo, se describe a
continuacion:
Menu y Barra de
herramientas
Explorador
de
proyectos
Botones de
expansion
Presione aquí para ver
las propiedades
Area de
Trabajo
Menu y Barras de Herramientas: Contienen distintas opciones que pueden ser desencadenadas
por los usuarios al momento de realizar su trabajo como Abrir un proyecto, agregar elementos,
depurar el programa, correrlo, empaquetarlo entre otras.
Explorador de Proyectos: Muestra una lista jerarquica y por categorias con todos los elementos
que componen el proyecto. Es decir, todos los formularios se organizan dentro del grupo
“Formularios”, al igual que sucede con los modulos, clases y demas elementos.
Area de Trabajo: Es el area gris que sirve de soporte a los formularios, modulos y demas
elementos de la interfaz que se este disenando. Aparece al presionar la flecha
Botones de Expansion: Son cada una de las puntas de flecha que aparecen a lo largo de todo el
entorno de trabajo. Cuando se presionan, se expanden y muestran otros elementos como la ventana
propiedades, y la ventana “consola”.
Ventana Propiedades: Muestra un listado con cada una de las caracteristicas del objeto que se
tenga seleccionado en ese momento, asi como el valor de dicha propiedad. Se utiliza para modificar
el aspecto, comportamiento u otros aspectos relacionados con dicho objeto.
VI. INICIANDO LA PROGRAMACION EN GAMBAS
1. En este curso, desarrollaremos un proyecto que conste de un formulario con acceso a datos;
especificamente a un a base de datos academica que contiene una tabla de alumnos. Esto presupone
que tenemos en nuestro equipo el MySQL previamente instalado con una base de datos llamada
“central” y una tabla denominada “alumnos”.
2. Asi, debemos hacer doble click en el explorador de proyectos, especificamente en la categoria
Formularios y luego en el Fmain que es creado de manera automatica por Gambas como
formulario principal. Al hacer esto, se muestra la siguiente pantalla>
3. Ahora comenzaremos a dibujar la interfaz. Para ello, necesitaremos mostrar el Cuadro de
Controles que no es mas que el conjunto de todos los objetos que podrian ser insertados en nuestro
formulario. Para ello, Vayamos hacia la esquina inferior derecha de la ventana de gambas y
clickeemos en el boton de punta de flecha hacia arriba. (El que se encuentra directamente debajo
del recuadro gris de la ventana propiedades).
4. En este momento, aparecera el Cuadro de Controles. Gambas esta provisto de una serie de
“clases” a partir de las cuales, se pueden crear objetos en el formulario. Recordemos que un
Formulario es un objeto contenedor a manera de ventana sobre el cual vamos a trabajar y a
programar de acuerdo a nuestras necesidades.
5. A continuacion se describen algunos objetos insertables que se nos presentan en el Cuadro de
Controles. (de arriba hacia abajo y de izquierda a derecha)
Select Este control sirve para seleccionar un objeto dentro del
formulario.
Label: Coloca una etiqueta o rotulo a un objeto dentro del formulario.
TextLabel: Similar al Label, con pequenas variaciones en las
propiedades.
Separator: Dibuja una linea de separacion entre diversas secciones del
formulario.
PictureBox: Permite insertar imagenes estaticas
MovieBox: Permite insertar gifs animados.
ProgressBar: Crea una barra de progreso para aquellos procesos que ameriten mostrar avance de
una actividad en el sistema.
Button: Crea un boton de comando estandar (al presionarse desencadenan una accion).
Checkbox: Crea una casilla de verificacion. Puede crear un conjunto de casillas de las cuales se
pueden seleccionar varias opciones.
RadioButton: Crea botones de opcion, es decir, un conjunto de opciones de las cuales se puede
elegir “solo una”, la cual, excluye al resto del conjunto.
ToggleButton: Es un control que permite insertar un tipo de botones que tienen exactamente la
misma funcion de una casilla de verificacion; solo que en lugar de dibujar una casilla, se muestra
como un boton presionado o no.
ToolButton: Crea un boton muy pequeño tipico de una barra de herramientas.
Slider: Crea un boton deslizable sobre una barra de ajuste, al estilo de un control de volumen.
ScrollBar: Crea una barra de desplazamiento.
ListBox: Crea una lista de opciones de las cuales se puede elegir una o varias. No permite el
ingreso del texto.
ComboBox: Dibuja un cuadro combinado; es decir, un cuadro de texto pero que ademas, incluye
una lista de opciones de las cuales el usuario puede elegir solo una. Permite el ingreso de texto (a
menos que el usuario apluque restricciones a esta opcion).
TextBox: Crea un cuadro de texto, es decir, un recuadro sobre el cual el usuario puede escribir
cualquier valor.
SpinBox: Es un cuadro de texto dotado con una flecha hacia arriba y abajo que permite incrementar
o decrementar un valor numerico.
TextArea: Permite el ingreso de texto en varias lineas.
ListView: Funciona de manera similar al ListBox, pero con algunas propiedades extendidas que
incluyen la insercion de imagenes al lado de cada elemento.
TreeView: Muestra una lista jerarquica de elementos agrupados en forma de arbol
IconView: Permite mostrar una lista de iconos (como imagenes en miniatura)
ColumnView: Dibuja un objeto que muestra un TreeView con columnas. Cada elemento debe tener
una “clave” que lo diferencia del resto.
GridView: Crea una cuadricula para mostrar datos.
ColorButton: Crea un boton para selección de colores.
DirView: Muestra una lista de directorios.
FileView: Muestra una lista de archivos dentro del directorio especificado.
TableView: Muestra una tabla de datos.
ValueBox: Dibuja un cuadro de texto donde el usuario solo podra insertar valores numericos.
VII. INSERTANDO UN OBJETO EN GAMBAS
1. Para insertar un objeto existen diversas maneras: a) Haciendo clic sobre el control deseado en el
cuadro de controles y luego clickeando al formulario de manera sostenida hasta dibujarlo. b) Haga
doble click sobre el control que desee insertar y al instante se creara sobre el formulario en la parte
superior izquierda.
2. Inserte un objeto Label dentro de su formulario. Para ello, haga doble click sobre el objeto Label
del cuadro de controles. Al hacer lo anterior, la imagen quedara asi:
3. Haga
sobre el
Label1
un clic
objeto
y
procedamos a modificar la propiedad (Name) donde colocaremos txtcedula (en minuscula, sin
acentos ni espacios en blanco)
4. Ahora, en la ventana propiedades buscamos la propiedad Text para modificar el rotulo o titulo del
objeto que vera el usuario cuando ejecute la interfaz. En ella escribiremos Cedula (puede incluir
acentos y espacios en blanco), quedando la figura asi:
CONSIDERACIONES IMPORTANTES SOBRE EL NOMBRE DE LOS OBJETOS
Al igual que ocurre en otros lenguajes, en Gambas, cada objeto insertado dentro de un formulario, y
el fomulario mismo deben tener un nombre que lo distingue del resto. Para nombrarlos, se deben
tomar una serie de consideraciones que se mencionan a continuacion:
a. La propiedad que almacena el nombre es (Name), la cual aparece en segunda posicion dentro de
la lista de propiedades, justo debajo de (Class).
b. El nombre del objeto no puede comenzar por un numero, ni contener espacios ni caracteres
especiales.
c. El nombre debe ser descriptivo del contenido del objeto. El uso de nombres como Miobjeto1,
OtroObjeto, Label1, Text1 no es recomendable porque no esta asociado al contenido del mismo.
d. Los nombres de objeto, deben contener un prefijo que identifica el tipo de objeto con el que se
esta trabajando. De esta manera, el programador durante la escritura de codigo puede identificar
dicho objeto sin necesidad de ir a la vista de formulario.
Estos prefijos no son obligatorios, pero si ampliamente recomendados. Aquí se espefician algunos
de ellos:
OBJETO
PREFIJO
EJEMPLO
Formulario (Form)
Etiqueta (Label)
Cuadro de Texto (TextBox)
Cuadro de Texto Numerico (ValueBox)
Boton de Comando (CommandButton)
Boton de Opcion (RadioButton)
Casillas de verificacion (CheckBox)
Cuadro con imagen (PictureBox)
Cuadro Combinado (ComboBox)
Cuadro de Pelicula (MovieBox)
frm
lbl
txt
txv
cmd
opt
chk
pic
cmb
mov
frmAlumnos
lblCedula
txtCedula
txvCedula
cmdGuardar
optMasculino
chkRojo
picFoto
cmbEstado
movVideo
VIII. PREPARANDO EL ENTORNO DE DATOS PARA NUESTRA APLICACION.
1. El objeto de este curso es ilustrar la manera de crear un formulario vinculado a una base de datos
con MySQL y que permita crear, editar, guardar, eliminar y buscar registros dentro de la tabla
referenciada.
2. Para tal efecto, se supone que nuestro equipo esta configurado como servidor local de MySQL.
Debemos asegurarnos de eso y para ello, hagamos lo siguiente:
3. Inicie un terminal haciendo click en Aplicaciones>Accesorios>Terminal Alli aparecera la
siguiente ventana:
4. Inicie una sesion en el servidor MySQL tecleando: mysql -h “localhost” -u “root” -p <Enter>
5. En este momento, se le mostrara el mensaje “Enter Password” y debera presionar <Enter>.
Recuerde que el password de MySQL de manera preestablecida es vacio. La ventana quedara asi:
5. Este es el “interprete de comandos” de mysql. Procederemos a crear una base de datos llamada
“central”, razon por la cual, teclearemos lo siguiente: (debe colocar el punto y coma (;) al final de
la linea de instrucción).
CREATE DATABASE central; <Enter>
6. Ahora, seleccionaremos la base de datos tecleando USE central; <Enter>
7. Finalmente crearemos una sencilla tabla llamada “alumnos” con tres campos: cedula,nombre y
apellido escribiendo lo siguiente:
CREATE TABLE alumnos (cedula VARCHAR(9) NOT NULL, nombre VARCHAR(50) NOT
NULL, apellido VARCHAR(50) NOT NULL, PRIMARY KEY cedula(cedula))TYPE=innoDB;
Nota: Aunque esta instrucción puede estructurarse en varias lineas, se recomienda que la escriba en
una sola y es obligatoria la escritura del punto y coma (;) al final de ella.
8, La ventana mostrara el mensaje “Query OK, 0 rows affected...” tal como se muestra en la
siguiente figura:
9. Ya esta todo listo para volver a GAMBAS a disenar la interfaz de usuario. Importante: Puede
utilizar el MySQL Navigator para administrar sus bases de datos MySQL desde un entorno Grafico.
IX. PREPARANDO A GAMBAS PARA CONECTARSE CON MYSQL
Para que Gambas pueda conectarse con un servidor MySQL es necesario activar dos referencias
dentro de los componentes extendidos del lenguaje. Estas referencias no son mas que “clases”
adicionales proporcionadas por diversos fabricantes o incluidas en el mismo paquete de Gambas,
pero que de forma predeterminada no aparecen en el cuadro de controles.
1. Para acceder a los componentes, haga clic en el menu Proyecto>Propiedades o presione
CONTROL+P. Y seleccione la pestana “Componentes”, tal como se muestra en la figura:
2.
Tilde
los
siguientes componentes: gb.db y gb.db.mysql. Luego, presione OK para terminar.
X. PERSPECTIVA DEL PROGRAMA
1. Tal como se refirio en apartados anteriores, se pretende crear una pequena aplicación que permita
manejar datos desde gambas hacia una base de datos en MySQL. La misma debe funcionar asi:
a. Debe contar con 7 botones: Agregar, Editar, Guardar, Cancelar, Eliminar, Consultar y Cerrar
b. Debe tener al mismo tiempo, 3 cuadros de textos con sus respectivas etiquetas: Cedula, Nombre,
Apellido.
c. Al iniciar el formulario, todos los botones deben estar activados, dejando a Guardar y Cancelar
como “Desactivados”. Por otra parte, todos los cuadros de texto estaran desactivados hasta que el
usuario inicie una operación de “Agregar” o “Editar” registros.
d. Cuando el usuario presione el boton “Agregar”, todos los cuadros de texto se deberan activar, ya
que el sistema esperara a que el usuario ingrese los datos pertinentes. Al mismo tiempo, se
desactivaran los botones “Nuevo”, “Editar”, “Eliminar”, “Consultar” y “Cerrar” dejando solo
activos a “Guardar” y “Cancelar” dado que estas dos ultimas opciones son las unicas que el usuario
puede ejecutar mientras se agrega un registro.
e. Durante una operación de agregacion, se podran “Guardar” o “Cancelar” los cambios hechos al
registro, y por tanto, al presionar alguno de estos 2 botones, el formulario volvera a su estado
inicial.
f. Si se presiona el boton “Editar” el procedimiento es exactamente igual. Se activaran los cuadros
de texto y solo los botones “Guardar” y “Cancelar” dejando inactivos al resto, pero con la diferencia
que antes de realizar estas acciones, se verificara si el registro a modificar se esta mostrando en
pantalla. Tambien se debe acotar que no se podra modificar la cedula una vez guardada, ya que este
es nuestro campo clave principal.
g. En cuanto al boton eliminar, se debe mostrar un mensaje al usuario para confirmar dicha
eliminacion antes de proceder a realizarla.
h. El boton “Consultar” debe mostrar una pequena ventana donde el usuario ingrese la cedula del
registro a buscar y hecho esto, se procedera a realizar dicha busqueda y mostrar los datos del
registro encontrado. De no ser asi, se muestra un mensaje de error.
2. Volvamos a nuestro proyecto en Gambas y recordemos que hemos creado una etiqueta con la
leyenda “Cedula”. Ingresemos dos mas, ubiquemos la propiedad “Text” y escribimos el texto
“Nombre” y en la otra el texto “Apellido”. Dado que no utilizaremos las etiquetas en el codigo,
podremos dejarlas con sus nombres predeterminados por Gambas.
Recuerda: Para insertar un objeto en Gambas puedes hacerlo presionando doble click sobre el
control marcado con
una
del cuadro de controiles y se
insertara
automaticamente en la parte superior izquierda del formulario.
Hecho esto, debera moverlo a la posicion deseada, tal como se muestra en la siguiente figura:
3. Ahora, pegue tres cuadros de texto (TextBox) tal como se muestra en la figura:
4.
Ubiquese en el “TextBox1” y haga un clic sobre el. Luego, en la ventana propiedades cambie la
propiedad “Text” (que contiene “TextBox1”) y dejela en blanco para limpiar el contenido del
campo. Al mismo tiempo, busque al inicio de la ventana propiedades la propiedad (Name) y escriba
“txtCedula”. Y finalmente la propiedad “Enabled” debe cambarla de “True” a “False”.
5. Luego, ubique el “TextBox2” y haga un clic sobre el. Vaya a la ventana propiedades cambie la
propiedad “Text” (que contiene “TextBox2”) y dejela en blanco para limpiar el contenido del
campo. Al mismo tiempo, busque al inicio de la ventana propiedades la propiedad (Name) y escriba
“txtNombre”. Y finalmente la propiedad “Enabled” debe cambarla de “True” a “False”.
6. Posteriormente, haga un clic sobre el TextBox3. Vaya a la ventana propiedades cambie la
propiedad “Text” (que contiene “TextBox3”) y dejela en blanco para limpiar el contenido del
campo. Al mismo tiempo, busque al inicio de la ventana propiedades la propiedad (Name) y escriba
“txtApellido”. Y finalmente la propiedad “Enabled” debe cambarla de “True” a “False”. La ventana
quedara como se muestra en la figura:
7. Ahora debemos insertar siete botones de comando en la parte inferior tal como se muestra:
8.
Camb
ie las
propi
edade
s de
los
boton
es de
coma
ndo
tal
como se muestra en el siguiente cuadro:
OBJETO
PROPIEDAD
VALOR
Button1
(Name)
Text
Enabled
cmdAgregar
Agregar
True
Button2
(Name)
Text
Enabled
cmdEditar
Editar
True
Button3
(Name)
Text
Enabled
cmdGuardar
Guardar
False
Button4
(Name)
Text
Enabled
cmdCancelar
Cancelar
False
Button5
(Name)
cmdEliminar
Button6
Button7
Text
Enabled
Eliminar
True
(Name)
Text
Enabled
cmdConsultar
Consultar
True
(Name)
Text
Enabled
9. El formulario quedara como se muestra en la siguiente figura:
cmdCerrar
Cerrar
True
10. Ahora es el momento de agregar el codigo a nuestro formulario. Para ello, haga doble click
sobre un area libre del formulario y se abrira la vista codigo, tal como se muestra en la siguiente
figura:
11. En esta ventana se podran escribir todas las instrucciones que deseemos se ejecuten cuando se
produce un evento de programa. En este caso, se esta editando el evento Open() del Objeto Form, se
genera automaticamente un encabezado PUBLIC SUB Form_Open() donde PUBLIC SUB indica el
inicio de un procedimiento y Form_Open() hace referencia al evento Open del Formulario actual.
Es de hacer notar que todo PUBLIC SUB debe terminar con su respectivo END SUB...
12. Escriba fuera del procedimiento FORM_Open() las siguientes lineas de codigo (Justo despues
del comentario 'Gambas Class File...
' Gambas class file
PUBLIC Con AS NEW Connection
PUBLIC res AS Result
PUBLIC ssql AS String
Y agregue el siguiente codigo al procedimiento FORM_Open()
Con.Type = "MySQL"
Con.Host = "localhost"
Con.Login = "root"
Con.Password = ""
Con.Port = "3306"
Con.Name = "central"
Con.Open()
Analicemos este codigo:
Lo primero que observamos es la declaracion de dos variables. Para ello se utiliza la estructura DIM
(aunque en este caso se utiliza PUBLIC) <nombre_var> AS <tipo de datos>. En este caso se crea
una variable llamada “Con” de tipo Connection y otra llamada “res” de tipo “Result”.
Esto quiere decir que estamos creando una variable que servira para conectarnos a un servidor de
MySQL y otra para determinar con que tabla queremos trabajar. Es de destacar que la palabra
PUBLIC quiere decir que la variable podra ser utilizada en cualquier parte o procedimiento dentro
del formulario.
Posteriormente, se modifican las propiedades de la variable “Con” que finalmente es un objeto
invisible que hara referencia a la conexión. En este caso el Con.Type=”MySQL” quiere decir que el
tipo de conexión a establecer es de MySQL. Asi mismo el Con.Host=”localhost” se refiere al
nombre o IP del servidor al cual se conectara. En este caso, es el equipo local, razon por la cual se
utiliza la palabra “localhost”.
Por su parte, el Con.Login=”root” quiere decir que el usuario de MySQL que se conectara es el
“root” y el Con.Password=”” queda vacio ya que corresponde a la contrasena con la cual se
conectara el usuario.
Asi mismo, el Con.Port=”3306” corresponde al puerto a traves del cual se conectara. Recuerde que
este es el puerto predeterminado para todos los servidores MySQL.
Por ultimo, Con.Name=”central” especifica que la base de datos que se abrira para trabajar es la que
hemos creado con el nombre de “central”.
Observacion: Aunque Gambas no es sensible a mayusculas y minusculas, el editor coloca en
mayusculas las palabras reservadas del lenguaje, aunque las propiedades y metodos se colocan en
mayusculas y minusculas.
13. Haga click sobre la pestana FMain.form que aparece en la parte superior de la vista formulario
y volvera al objeto principal. Ahora haga doble clic sobre el boton cmdAgregar para abrir el evento
PUBLIC SUB cmdAgregar_Click(). Alli, agregue el siguiente codigo:
'Activa los cuadros de texto para que el usuario escriba en ellos
txtCedula.enabled = TRUE
txtApellido.Enabled = TRUE
txtNombre.Enabled = TRUE
'Limpia los cuadros de texto ya que se colocaran los valores
'del nuevo registro
txtApellido.Text = ""
txtNombre.Text = ""
txtCedula.Text = ""
'Desactiva los botones de Agregar, Editar, Eliminar,
'Consultar y Cerrar
cmdAgregar.Enabled = FALSE
cmdEditar.Enabled = FALSE
cmdEliminar.Enabled = FALSE
cmdConsultar.Enabled = FALSE
cmdCerrar.Enabled = FALSE
'Y activa solamente los de Guardar y Cancelar
'Ya que son las unicas acciones permitidas para durante
'la creacion de un registro
cmdGuardar.Enabled = TRUE
cmdCancelar.Enabled = TRUE
Observacion: Se incluyen los comentarios de cada bloque de codigo para mayor claridad.
Entonces, al escribir cmdAgregar.Enabled=FALSE quiere decir que se esta modificando la
propiedad “Enabled” del objeto “cmdAgregar” que esta dentro del formulario actual, en este caso,
FMain
La propiedad “Enabled” activa o desactiva un objeto; mientras que la propiedad “Text” modifica el
valor de los textboxes “txtCedula”, “txtNombre” y “txtApellido”, es decir, en este caso, los “limpia”
para que el usuario escriba cualquier valor y posteriormente guarde el registro.
14, Ahora, vaya nuevamente al formulario (clickee en la pestana FMain.form) y luego haga doble
click en el boton “cmdEditar” para agregar el codigo en el procedimiento PUBLIC SUB
cmdEditar_Click()
IF Trim(txtCedula.TEXT) =”” THEN
Message.Error("Debe mostrar un registro para modificarlo")
ELSE
'Activa los cuadros de texto para que el usuario escriba en ellos
txtApellido.Enabled = TRUE
txtNombre.Enabled = TRUE
txtCedula.Enabled = FALSE
'Desactiva los botones de Agregar, Editar, Eliminar,
'Consultar y Cerrar
cmdAgregar.Enabled = FALSE
cmdEditar.Enabled = FALSE
cmdEliminar.Enabled = FALSE
cmdConsultar.Enabled = FALSE
cmdCerrar.Enabled = FALSE
'Y activa solamente los de Guardar y Cancelar
'Ya que son las unicas acciones permitidas para durante
'la edicion de un registro
cmdGuardar.Enabled = TRUE
cmdCancelar.Enabled = TRUE
ENDIF
Lo mas destacable del codigo es la estructura IF.. THEN.. ENDIF que se utiliza para tomar
decisiones. Su sintaxis general es la siguiente:
IF <condicion> THEN
sentencias....
ELSE
sentencias...
ENDIF
Es decir, si la condicion es verdadera, ejecuta el primer bloque de instrucciones. En el caso
contrario, ejecuta el segundo bloque, pero nunca se ejecutan ambos. La estructura ELSE es
opcional.
Para el caso de nuestro programa, se verifica que el cuadro de texto txtCedula tenga “algo” en la
propiedad text. Si efectivamente esto ocurre, quiere decir que acabamos de consultar un registro y
podremos editarlo, pero si esta vacio, mostrara un error.
Es importante destacar la funcion TRIM() que elimina los caracteres en blanco de inicio y final en
una cadena. En este caso, se eliminan dichos espacios de la propiedad “Text” del cuadro de texto
“txtCedula” antes de determinar si contiene un valor o no.
Por otra parte, tenemos la funcion “Message” que muestra un cuadro de mensaje de advertencia,
error, informacion o pregunta. En este caso, se muestra uno de error indicando que no se ha cargado
un registro. Para ello se utiliza la siguiente linea de codigo:
Message.Error("Debe mostrar un registro para modificarlo")
El codigo restante no es mas que la activacion de los cuadros de texto (exceptuando el de cedula ya
que no se recomienda cambiar el valor de nuestra llave primaria).
Luego, esta la activacion y desactivacion de los botones de manera identica al evento
cmdAgregar_Click()
15, Clickeamos en la pestana FMain.form para volver a la vista formulario y hagamos doble click
sobre el boton “Cerrar” para escribir el codigo en el procedimiento PUBLIC SUB
cmdCerrar_Click()
ME.Close
Aquí lo unico a resaltar es el metodo “Close” del objeto formulario (ME) que cierra el formulario
actual.
16, Procedemos entonces a agregar el codigo del boton “Guardar”. Vayamos a la vista formulario y
hacemos doble click sobre el boton “Guardar”. Alli, agregamos el siguiente codigo:
'Si el apellido, nombre o cedula estan en blanco, muestra un mensaje de error
IF txtApellido.text = "" OR txtCedula.text = "" OR txtNombre.text = "" THEN
Message.Error("Debe ingresar el nombre, apellido y cedula del alumno para guardar el registro")
RETURN 'Sale del procedimiento de Guardar
ENDIF
'Busca algun alumno que corresponda con la cedula que se esta ingresando...
ssql = "SELECT * FROM alumnos WHERE cedula='" & Trim(txtCedula.text) & "'"
res = db.exec(ssql) 'Ejecuta la consulta
'El res.count devuelve 0 si no existen registros coincidientes con la cedula ingresada. Eso indica que es
'un registro nuevo...
IF res.count > 0 THEN
'Pero si ya existe la cedula, pregunta si se van a actualizar los datos...
IF Message.Warning("Se ha encontrado un registro con esa cedula. Actualizar Datos?", "Si", "No") = 1 THEN
'Si es positiva la respuesta, se borra el registro previo para luego crearlo nuevamente.
db.Exec("DELETE FROM alumnos WHERE cedula='" & Trim(txtCedula.text) & "'")
ELSE 'De lo contrario, sale de esta rutina y no hace nada
RETURN
ENDIF
ENDIF
'Aqui se crea el registro con los datos del alumno (cedula, nombre, apellido)
ssqL = "INSERT INTO alumnos (cedula,nombre,apellido) VALUES('" & Trim(txtCedula.text) & "','" &
Trim(txtNombre.text) & "','" & Trim(txtApellido.text) & "')"
db.exec(ssql) 'Se ejecuta la consulta
Message.Info("Registro Guardado Exitosamente") 'Y emite un mensaje que indica el registro guardado
'Desactiva los cuadros de texto
txtCedula.enabled = FALSE
txtApellido.Enabled = FALSE
txtNombre.Enabled = FALSE
'Y activa los botones Agregar, Editar, Consultar, Eliminar y Cerrar
'Desactiva Guardar y Cancelar
cmdAgregar.Enabled = TRUE
cmdEditar.Enabled = TRUE
cmdConsultar.Enabled = TRUE
cmdCerrar.Enabled = TRUE
cmdEliminar.Enabled = TRUE
cmdGuardar.Enabled = FALSE
cmdCancelar.Enabled = FALSE
Lo primero que se observa es una validacion en la cual se verifica que los cuadros de texto
txtCedula, txtNombre y txtApellido tengan un valor. (IF txtApellido.text=”” ….) Esto garantiza que
todos los campos obligatorios reciban un valor. De existir algun campo en blanco, se muestra un
error.
Luego, se observa una variable llamada “ssql” de tipo cadena, la cual, permitira enviar una consulta
SQL para obtener aquel registro que corresponda con la cedula que se pretende ingresar. Para ello,
se utiliza la instrucción db.EXEC() que recibira dicha variable de cadena.
Notese que la linea de instrucción res = db.exec(ssql) permite guardar el resultado de la consulta dentro
de la variable “res”. Luego, si res.count da mayor que cero, quiere decir que si existe algun registro
previamente ingresado con esa cedula. Por eso, debemos preguntar si se desean actualizar los datos
de ese registro o no. De alli, surge la instruccion IF Message.Warning("Se ha encontrado un registro con esa
cedula. Actualizar Datos?", "Si", "No") = 1 THEN que muestra un mensaje de advertencia con dos posibles
opciones: “Si” o “No” actualizar dichos datos.
Si el usuario responde “Si”, se eliminara el registro para crearlo nuevamente, razon por la cual, se
observa la instrucción db.Exec("DELETE FROM alumnos WHERE cedula='" & Trim(txtCedula.text) & "'")
Pero si responde “No”, sencillamente sale del procedimiento con la instrucción “RETURN”
Por ultimo, se procede a crear el registro propiamente dicho con la siguiente consulta SQL
ssqL = "INSERT INTO alumnos (cedula,nombre,apellido) VALUES('" & Trim(txtCedula.text) & "','" &
Trim(txtNombre.text) & "','" & Trim(txtApellido.text) & "')"
y para ejecutarla utilizaremos
db.exec(ssql)
Posteriormente se emite un mensaje avisando al usuario el “guardado” del registro y se desactivan
los cuadros de texto y por ende, los botones necesarios.
17, Ahora, es el momento de agregar el codigo del boton “Cancelar”. El codigo es bastante simple y
autodescriptivo.
'Desactivamos los cuadros de texto
txtApellido.Enabled = FALSE
txtNombre.Enabled = FALSE
txtCedula.Enabled = FALSE
'Activa los botones de Agregar, Editar, Eliminar, Consultar y Cerrar
cmdAgregar.Enabled = TRUE
cmdEditar.Enabled = TRUE
cmdEliminar.Enabled = TRUE
cmdConsultar.Enabled = TRUE
cmdCerrar.Enabled = TRUE
'Y desactiva los de Guardar y Cancelar
cmdGuardar.Enabled = FALSE
cmdCancelar.Enabled = FALSE
18, En este punto agregamos el codigo del boton “Eliminar” para lo cual, debemos ir a la vista
Formulario y hacer doble click sobre ese boton. Luego, agregamos el siguiente codigo:
IF Trim(txtCedula.TEXT) = "" THEN
Message.Error("No ha cargado el registro que desea eliminar")
ELSE
ssql = "SELECT * FROM alumnos WHERE cedula='" & Trim(txtCedula.text) & "'"
res = db.Exec(ssql)
IF res.count > 0 THEN
IF Message.Question("Eliminar el Registro Actual?", "Si", "No") = 1 THEN
db.Exec("DELETE FROM alumnos WHERE cedula='" & Trim(txtCedula.text) & "'")
Message.Info("Registro Eliminado")
ENDIF
ENDIF
ENDIF
El codigo no es demasiado complejo. Simplemente se verifica que el cuadro de texto”Cedula” tenga
algun valor lo que indica que hay un registro mostrandose en pantalla para ser eliminado. Luego, se
ejecuta una consulta donde se busca el registro que corresponda con la cedula en cuestion y el
resultado se asigna a la variable “res”.
Si existe un registro coincidiente, se pregunta si desea eliminarlo. Luego, si responde positivamente,
se ejecuta una consulta de eliminacion (DELETE FROM alumnos WHERE...) y finalmente se
muestra un mensaje al usuario informandole el resultado del proceso.
19. Procedamos a agregar el codigo del boton “Consultar”.
DIM cedula AS String
cedula = InputBox("Ingrese la Cedula que desea buscar", "Consultar por Cedula")
IF Trim(cedula) = "" THEN
Message.Error("La cedula ingresada es invalida")
RETURN
ENDIF
res = db.Exec("SELECT * FROM alumnos WHERE cedula='" & Trim(cedula) & "'")
IF res.count> 0 THEN
txtApellido.TEXT = Trim(res!apellido)
txtNombre.text = Trim(res!nombre)
txtcedula.text = Trim(res!cedula)
ELSE
Message.Error("No se encontro un registro con la cedula especificada")
ENDIF
En lo concerniente al codigo, de observa la declaracion de una variable llamada “cedula” que
servira para la busqueda. Esta recibira el valor ingresado por el usuario correspondiente a la cedula
que desea buscar dentro de la tabla.
La instrucción InputBox dibuja un pequeño cuadro de mensaje y asigna el valor ingresado a la
variable “cedula”. Posteriormente, se verifica que se haya ingresado “algo” para buscar y en el caso
de que no sea asi, se muestra un mensaje de error.
Posteriormente, se ejecuta una consulta para buscar dentro de la tabla la cedula ingresada. Se asigna
a la variable de resultados “res” y si la cuenta de registros es mayor que cero, significa que existe el
registro en cuestion.
Luego, se asigna a cada cuadro de texto el valor que tiene cada campo de la tabla, finalizando asi el
proceso.
20, Guarde el proyecto y el formulario. Para ello, haga click sobre el menu Archivo>Guardar
Proyecto (o CONTROL+ALT+S).
21. Es el momento de probar el formulario en ejecucion, para lo cual presionamos la tecla F5 y de
esta manera, pasamos del tiempo de diseno al tiempo de ejecucion.
Pruebe agregando, modificando, eliminando y buscando registros desde el formulario.
Descargar