Cargando



Proyecto en Gambas Linux

En este tutorial conocerás cómo realizar un proyecto en gambas3. Podrás saber qué es gambas, cómo se instala y cómo realizar un proyecto completo enlazándolo a una base de datos.


dic 29 2016 14:20
Avanzado
Total de Apartados : 9
dic 29 2016 14:56

Gambas es un entorno de desarrollo que se distribuye con la licencia GPL GNU, con esto podemos decir que no solo es un lenguaje de programación procedente del lenguaje basic sino que también es una herramienta muy útil a la hora de construir aplicaciones visuales para casi cualquier distribución de GNU/Linux.

 

En Gambas, el programador tiene la facilidad de diseñar las ventanas de forma gráfica, arrastrando objetos desde la caja de herramientas y después escribiendo el código en basic para cada objeto.

 

Como vimos anteriormente, Gambas es basado en un intérprete basic con extensiones de objetos, parecido a Visual Basic. Pero la ventaja que tenemos con Gambas, es que puedes diseñar rápidamente tu aplicación gráfica con QT o GTK+, acceder a bases de datos MySQL, PostgreSQL, Firebird, ODBC y SQLite, controlar aplicaciones con DBUS, construir Front End de comandos de Linux, hacer aplicaciones 3D OpenGL, hacer aplicaciones web CGI, generar paquetes de instalación para diversas distribuciones, entre otras.

 

Por esta razón, podemos decir entonces que en Gambas no es una copia o clon de Visual Basic, ya que a pesar de estar basado en basic, es una alternativa para crear programas y aplicaciones para entornos GNU. Si vemos un poco de la historia de gambas, nos encontraremos con que la primera versión de gambas fue liberada en 1999 por el francés Benoît Minisini, creando un entorno que nos permitiera programar y desarrollar aplicaciones fácilmente con interfaz gráfica para el usuario.

 

Al principio, la forma de programa en Gambas era parecida a la de Gimp, con varias ventanas, y orientada al uso de Qt y KDE. Cuando dio el salto a las versiones 2.x en el año 2008 supuso un rediseño por completo de la interfaz gráfica de programación, integrando todo en una sola ventana, y permitiendo el uso de GTK+. En el 2011 saltó a la versión 3.x.

 

Empecemos con la instalación de Gambas3.

 


1. Cómo instalar Gambas3


La sencillez de Gambas hace fácil su uso por lo que no es necesario conocer ningún lenguaje de programación. Tan solo hace falta contar con un manual gratuito y dedicarle algo de tiempo. Por este motivo, es perfecto para aprender si estás comenzando. Bueno, vamos a aprender cómo instalarlo en nuestro sistema operativo Linux:

 

Primero, debemos abrir la terminal de comandos e introducir estos comandos uno por uno:

sudo add-apt-repository ppa:gambas-team/gambas-daily
sudo apt-get update
sudo apt-get install gambas3

Comandos instalación Gambas

 

Con esta línea de comandos podremos obtener la última versión liberada de Gambas. Actualmente van por la 3.8.1, aunque yo recomiendo tener la versión más estable que podemos obtener usando estos otros comandos, pero hay que tener en cuenta que nunca podremos sumar los dos PPA a la vez, solo podremos tener uno de los dos, esto se debe a que podríamos provocar un error y tendríamos que comenzar de nuevo limpiando las instalaciones previas.

 


2. Crear proyecto Gambas con BBDD e informe


Lo primero que debemos hacer es diseñar la base de datos que necesitamos para almacenar nuestra información. La que yo propongo se llamará “estudiantes” y tendrá dos tablas (alumnos y asignaturas).
Tabla alumnos: id, cedula, nombres, apellidos, direccion, telefono y correo.
Tabla Asignaturas: id, nom_materia
Para realizarla usamos un gestor muy simple para el diseño de bases de datos, llamado SQLite Data Browser, lo abrimos y creamos la base de datos haciendo clic en el botón nuevo. Ubicamos dónde la guardaremos y creamos las tablas según el diseño anterior.

 

Una vez creada quedaría así:

 

imagen1.jpg

 

Dejaremos como clave primaria el campo cedula en ambas tablas. Antes de cerrar el mini-gestor, le agregamos algunos datos para comprobar su funcionamiento cuando estemos diseñando los formularios en el programa. Ahora si podemos hacer clic en el botón guardar y cerrar el mini gestor databrowser.

 


3. Realizando el programa Gambas


Abrimos Gambas y creamos un nuevo proyecto dándole el nombre y la ruta correspondiente:

 

 

Para mayor comodidad, colocamos la base de datos creada dentro de la carpeta creada para el proyecto, en este caso la carpeta llamada GestionEstudiantes, así será fácil al momento de ubicar su ruta en el programa.

‘Configuramos el boton de salir.
Public Sub btnCerrar_Click()
Quit
End
Creamos dos formularios nuevos, para ingresar estudiantes y para las asignaturas.

 

imagen3.jpg

 

imagen4.jpg

 

Ahora configuramos el botón de ingresar estudiantes:

Public Sub btnNuevoEstudiante_Click()
FMain.Hide
FormEstudiantes.Show
End
Igualmente configuramos el botón agregar asignatura:
Public Sub btnNuevaAsignatura_Click()
FMain.Hide
FormCursos.Show
End
Así lo habremos asignado.

 


4. Diseño del formulario para ingresar estudiantes


Para comenzar, colocamos un columview y dos botones a los que les pondremos el texto nuevo y salir respectivamente (Propiedad text).

 

Podemos, si así lo deseamos, agregar un ícono a cada botón mediante su propiedad picture. Al columview lo llamaremos sencillamente “tabla” (En propiedad name) pues se asemeja mucho a cualquier tabla y estamos tratando de mantener este primer proyecto de base de datos lo más sencillo posible.

 

Los botones los llamaremos: btnnuevo y btnsalir.

 

El formulario quedaría así:

 

imagen5.jpg

 

Configuramos el botón cerrar del formulario.

Public Sub btnSalir_Click()
Me.Close
End
Ahora nos pasamos a codificar.

 


5. Comenzamos a codificar Gambas


Vamos a comenzar a poner algo de código a nuestro programa, y lo iremos comentando. Lo primero en una base de datos es la conexión a la misma. Para esto, Gambas nos provee el objeto Connection.

 

Todo lo que aparece con un apostrofe simple en el código es un comentario que no será interpretado por el programa.

 

Ejemplo:

'Proyecto Prueba
Private hconn As Connection 'variable para establecer la coneccion
Private Function ConectarBase() As Boolean 'variable para la coneccion, devuelve un valor verdadero o falso
If hconn <> Null Then Return False 'comprobamos que la conexión no este abierta
hconn = New Connection 'inicializamos la conexion con el metodo new y despues le pasamos los
paramentros con hconn
'parametro para la ruta de la base de datos
hconn.Host = "/home/prueba"
hconn.Name = "estudiantes" 'nombre de la base de datos
hconn.Type = "sqlite3" 'tipo de base de datos
Try hconn.Open() 'tratamos de abrir la conexion si no lo logramos enviamos un mensaje de error y
le damos el valor null
If Error Then
hconn = Null
Message.Error("Error al conectar con la base de datos")
Return True
Endif
Return False
End
Una vez que hayas copiado el código anterior haz clic en la opción ejecutar del menú Depuración. Si todo va bien, no deberá salir ningún error y aparecerá nuevamente la pantalla de nuestro proyecto. Lo cual quiere decir que la conexión a nuestra Base de Datos se ha realizado satisfactoriamente.

 

En el caso de algún error, a continuación te doy posibles causas:

 

Causas de Error
Veamos los tipos de causas:

 

1. Al copiar y pegar el código debes tener en cuenta las comillas, las cuales muchas veces se cambian al copiar y pegar y por consiguiente no son reconocidas por la aplicación. En este caso, lo recomendable es borrar las comillas y colocarlas manualmente. El código dentro de las comillas debe estar en color fucsia para saber que está bien.

 

2. Otro posible error es no haber marcado las opciones correspondientes en la pestaña de Propiedades del Proyecto, la cual se encuentra haciendo clic en menú de Proyecto, luego Propiedades y allí en la pestaña Componentes, comprueba que estén marcadas las opciones siguientes:

  • bg
  • gb.db
  • gb.db.sqlite3
  • gb.form
  • gb.db.mysql (Ésta no debería ser necesaria por la base de datos que realizamos, pero la marcamos de todas maneras)

 

3. Otro error muy común es la ruta donde tenemos tanto el proyecto, como la base de datos que es donde están las líneas resaltadas en el código a copiar y pegar.

 

Ya después de corregir los posibles errores y comprobar que funciona nuestra aplicación, procedemos a cerrar la conexión colocando el siguiente código al final.

PUBLIC SUB
cerrarconexion()
IF
hconn = NULL THEN RETURN
hconn.Close()
hconn = NULL
END

Primero vemos que ya no esté cerrada, si no es así la cerramos con .close

 


6. Visualizar datos almacenados


Abrimos el formulario y dentro del proceso Form y colocamos el siguiente código:

 

(No olvidar revisar las comillas que al pegar el código se pudieron haber cambiado).

Public Sub Form_Open()

'primero declaramos las variables y limpiamos el columnview

Dim hresul As Result

Dim clave As String

Dim filtro As String

tabla.Clear

If ConectarBase() Then Return 'confirmamos conexion con la bse de datos

'definimos las propiedades para el columnview

'count para cantidad de columnas

'text para el titulo de las columnas

'width para el ancho de las columnas

'alignment para la alineacion de los campos.

tabla.Columns.Count = 6

tabla.Columns[0].Text = "Cedula"

tabla.Columns[0].Alignment = Align.Center

tabla.Columns[0].Width = 100

tabla.Columns[1].Text = "Nombres"

tabla.Columns[1].Alignment = Align.Center

tabla.Columns[1].Width = 120

tabla.Columns[2].Text = "Apellidos"

tabla.Columns[2].Alignment = Align.Center

tabla.Columns[2].Width = 120

tabla.Columns[3].Text = "Dirección"

tabla.Columns[3].Alignment = Align.Center

tabla.Columns[3].Width = 120

tabla.Columns[4].Text = "Teléfono"

tabla.Columns[4].Alignment = Align.Center

tabla.Columns[4].Width = 120

tabla.Columns[5].Text = "Correo"

tabla.Columns[5].Alignment = Align.Center

tabla.Columns[5].Width = 120

hresul = hconn.Exec("select * from alumnos") 'Esta instrucción busca en la base de datos, si encuentra datos hace que la variable hresul sea verdadera y por tanto esté disponible (Available)

Do While hresul.Available 'luego recorrerá la tabla con un bucle do while basándose en la

clave(Cedula) e irá rellenando la tabla con los datos.

clave = hresul["cedula"] 'hacemos el campo cédula como primario para las búsquedas

tabla.Add(clave, clave) 'agregamos los datos encontrados en la base de datos.

tabla[clave][1] = hresul["nombres"]

tabla[clave][2] = hresul["apellidos"]

tabla[clave][3] = hresul["direccion"]

tabla[clave][4] = hresul["telefono"]

tabla[clave][5] = hresul["correo"]

hresul.MoveNext() 'esta instrucción hace avanzar la búsqueda al siguiente dato

Loop 'Vuelve a ejecutar las instrucciones dentro del bucle hasta que no haya más datos para
mostrar.

CerrarConexion() 'cierra la conexión

End
Proceso Form

 

Al terminar lo corremos y comprobamos su funcionamiento, lo cual devolverá el siguiente resultado:

 

 

 


7. Crear formulario para ingresar datos de estudiantes


Ahora vamos a crear un nuevo formulario que nos permita ingresar datos de nuevos estudiantes, el nombre sugerido parta el mismo es edata.

 

El mismo tendrá los siguientes objetos: 6 etiquetas label, 6 cajas de texto y dos botones.

 

El diseño sugerido es el siguiente:

 

imagen7.jpg

 

Para ver si todo va bien, vamos al formulario que muestra la lista de estudiantes y configuramos el botón nuevo de la siguiente manera:

 

 

Si no hay errores y todo va bien, pasemos a configurar el formulario recién creado para ingresar nuevos datos de estudiantes. Este formulario recibirá una referencia a un objeto del tipo connection, en nuestro caso hconn por lo tanto lo ubicamos al principio de nuestro formulario.

' Gambas class file
' primero configuramos la coneccion
Private hconn As Connection
'creamos un metodo runnew que será llamado desde el formulario que lista los estudiantes
Public Sub runnew(data As Connection)
hconn = data 'referencia para el formulario anterior
Me.ShowModal() 'obliga a interactuar con el formulario antes de cerrarlo
End
Configuramos el botón de cancelar:
Public Sub btnCancelar_Click()
Me.Close(0)
End
Para ingresar nuevos datos, utilizaremos la siguiente instrucción:
TRY hconn.EXEC (“insert into mitabla values (&1,&2,&3,&4,&5.&6)”,
txtid,txtnombre,txtapellido,txttelefono,txtmovil,txtcumple)
exec
Los campos serán llamados mediante un ampersand y el índice correspondiente
como se muestra a continuación. (&1,&2,&3,&4,&5.&6)
Volvamos al formulario anterior y configuremos el botón aceptar de la siguiente manera:

 

 

Primeros tratamos de conectarnos a nuestra base de datos, si no lo conseguimos, nos salimos. Conseguida la conexión llamamos al método runnewde fdata. Como este formulario se muestra en forma modal, el presente código queda a la espera de que ingresemos datos en fdata o simplemente lo cerramos.

 

A continuación cierra la conexión y llama al método form_open que se encarga de recargar los datos para mostrar los cambios realizados. Ahora vamos a ver cómo hacemos para modificar un registro, por ejemplo si un amigo cambia el móvil, basta con editar ese campo.

 

Vamos a aprovechar el evento activate de nuestro control colunmview(tabla) para agregar esta funcionalidad. Dicho evento se dispara al hacer doble clic 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("alumnos", "cedula=&1",

tabla.Current.Key)

edata.runedit(hresul) 'Llama al método runeedit del formulario edata

tabla.Current[0] = hresul["cedula"]

tabla.Current[1] = hresul["nombres"]

tabla.Current[2] = hresul["apellidos"]

tabla.Current[3] = hresul["direccion"]

tabla.Current[4] = hresul["telefono"]

tabla.Current[5] = hresul["correo"]

cerrarConexion()

End
Evento activate

 

La línea en negrita es la que llama al método runedit de edata. Como aún no hemos creado este método, si tratamos de ejecutarlo ahora, no funcionará.

 

Volvamos por lo tanto a edata 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

Luego creemos el nuevo método llamado runedit:
Public Sub runedit(data As Result)
hresul = data
editando = True
txtCedula.Text = hresul["cedula"]
txtNombres.Text = hresul["nombres"]
txtApellidos.Text = hresul["apellidos"]
txtDireccion.Text = hresul["direccion"]
txtTelefono.Text = hresul["telefono"]
txtCorreo.Text = hresul["correo"]
Me.ShowModal
End
Esto nos muestra edata con los datos del registro seleccionado de modo que podamos editarlo y pone la variable editando con el valor true. Esto es necesario para que mediante una instrucción condicional al hacer clic en btnaceptar distinga entre nuevo y modificar.

 

imagen10.jpg

 

Podemos probarlo aunque todavía no funcionará, falta configurar el botón aceptar, pero sí podemos comprobar que nos lleva hasta el formulario solicitado.

 

Configuremos el botón aceptar para guardar los cambios:

Public Sub btnAceptar_Click()
If editando Then
Try hresul["cedula"] = txtCedula.Text
Try hresul["nombres"] = txtNombres.Text
Try hresul["apellidos"] = txtApellidos.Text
Try hresul["direccion"] = txtDireccion.Text
Try hresul["teleefono"] = txtTelefono.Text
Try hresul["correo"] = txtCorreo.Text
Try hresul.Update
Else
Try hconn.Exec("insert into alumnos values(&1,&2,&3,&4,&5,&6)", txtCedula.Text,
txtNombres.Text, txtApellidos.Text,
txtDireccion.Text, txtTelefono.Text, txtCorreo.Text) 'con esto ingresamos la informacion enviada
Endif
Me.Close()
Catch
Message.Error("Imposible introducir los datos enviados")
End

Podremos ya guardar los cambios.

 


8. Configurar la búsqueda de datos


Agreguemos al formulario, un botón para buscar y un textbox. Éste es el nuevo aspecto del formulario:

 

 

Configuramos el botón buscar de manera similar al botón nuevo, este es el código:

Public Sub btnBuscar_Click()

Dim hresul As Result

Dim clave As String

Dim filtro As String

tabla.Clear

If ConectarBase() Then Return

tabla.Columns.Count = 6

tabla.Columns[0].Text = "Cedula"

tabla.Columns[0].Alignment = Align.Center

tabla.Columns[0].Width = 100

tabla.Columns[1].Text = "Nombres"

tabla.Columns[1].Alignment = Align.Center

tabla.Columns[1].Width = 120

tabla.Columns[2].Text = "Apellidos"

tabla.Columns[2].Alignment = Align.Center

tabla.Columns[2].Width = 120

tabla.Columns[3].Text = "Dirección"

tabla.Columns[3].Alignment = Align.Center

tabla.Columns[3].Width = 120

tabla.Columns[4].Text = "Teléfono"

tabla.Columns[4].Alignment = Align.Center

tabla.Columns[4].Width = 120

tabla.Columns[5].Text = "Correo"

tabla.Columns[5].Alignment = Align.Center

tabla.Columns[5].Width = 120

filtro = txtBuscar.Text

hresul = hconn.Exec("select * from alumnos where nombres like '" & filtro & "'")

Do While hresul.Available

clave = hresul["cedula"]

tabla.Add(clave, clave)

tabla[clave][1] = hresul["nombres"]

tabla[clave][2] = hresul["apellidos"]

tabla[clave][3] = hresul["direccion"]

tabla[clave][4] = hresul["telefono"]

tabla[clave][5] = hresul["correo"]

hresul.MoveNext()

Loop

cerrarConexion()

End
Ya con lo que hemos realizado podemos tener ya claro cómo es el proceso, ahora vamos a hacer lo mismo con el formulario para las materias. El diseño sugerido es el siguiente:

 

 

imagen12.jpg

 

Como siempre, lo primero que vamos a programar es el botón salir:

Public Sub btnSalir_Click()
Me.Close
End
Ahora realizaremos la conexión a la base de datos:
Private hconn As Connection
Private Function conectarbase() As Boolean
If hconn <> Null Then Return False
hconn = New Connection
hconn.Host =
"/home/prueba"
hconn.Name = "estudiantes" 'nombre de la base de datos
hconn.Type = "sqlite3" 'tipo de base de datos
Try hconn.Open()
If Error Then
hconn = Null
Message.Error("Error al conectar la base de datos")
Return True
Endif
Return False
End
Programamos el evento para cerrar la conexión:
Public Sub cerrarConexion()
If hconn = Null Then Return
hconn.Close()
hconn = Null
End
Ahora visualizamos los datos en el columview, en el evento open del formulario.

 

imagen13.jpg

 

El código es el siguiente:

Public Sub Form_Open()
Dim hresul As Result
Dim clave As String
Dim filtro As String
tabla2.Clear
If conectarbase() Then Return
tabla2.Columns.Count = 2
tabla2.Columns[0].Text = "id"
tabla2.Columns[0].Alignment = Align.Right
tabla2.Columns[1].Text = "Nombre de la Asignatura o Curso"
hresul = hconn.Exec("select * from asignaturas")
Do While hresul.Available
clave = hresul["id"]
tabla2.Add(clave, clave)
tabla2[clave][1] = hresul["nom_materia"]
hresul.MoveNext()
Loop
cerrarConexion()
End
Ahora creamos el formulario para agregar y/o editar los datos de la tabla, asignaturas o cursos. El nombre sugerido es adata. (asignaturas datos).

 

imagen14.jpg

 

 


9. Programamos el botón de cerrar

Public Sub btnCerrar_Click()
Me.Close
End
Creamos la referencia a un objeto del tipo connection, en nuestro caso hconn, por tanto al principio de nuestro formulario adata colocaremos el siguiente código:
Private hconn As Connection
Además, creamos el método runnew que será llamado desde el formulario principal. La sintaxis es la siguiente:
Public Sub runnew(data As Connection)
hconn = data
Me.ShowModal()
End

Vamos ahora al formulario de ingresar los datos de las asignaturas y en el evento clic de btnnuevo colocamos el siguiente código:
Public Sub btnNuevo_Click()
If conectarbase() Then Return
adata.runnew(hconn)
cerrarConexion()
Form_Open()
End
Ahora podemos probar el botón nuevo de dicho formulario.

 

Continuando con el mismo formulario, codificamos el método para modificar registros de la siguiente manera. Vamos a aprovechar el evento activate de nuestro control colunmview(tabla) para agregar esta funcionalidad. Dicho evento se dispara al hacer doble clic sobre alguna columna de la tabla.

Public Sub tabla2_Activate()
Dim hresul As Result
If tabla2.Current = Null Then Return
If conectarbase() Then Return
hresul = hconn.Edit("asignaturas", "id=&1",
tabla2.Current.Key)
adata.runedit(hresul)
tabla2.Current[0] = hresul["id"]
tabla2.Current[1] = hresul["nom_materia"]
cerrarConexion()
End
Recuerda que no funcionará hasta que hayamos creado dicho evento en el formulario adata. 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
Creamos el método runedit cuyo código es el siguiente:
Public Sub runedit(data As Result)
hresul = data
editando = True
txtAsignaturas.Text = hresul["nom_materia"]
Me.ShowModal
End
Recuerda ir probando para comprobar que todo vaya bien. Ahora programamos el botón aceptar de la siguiente manera:
Public Sub btnAceptar_Click()
If editando Then
Try hresul["nom_materia"] = txtAsignaturas.Text
Try hresul.Update
Else
Try hconn.Exec("insert into nom_materia values(&1)", txtAsignaturas.Text)
Endif
Me.Close()
Catch
Message.Error("Imposible introducir los datos enviados")
End
Ahora programamos la rutina de búsqueda de asignaturas:
Public Sub btnBuscar_Click()
Dim hresul As Result
Dim clave As String
Dim filtro As String
tabla2.Clear
If conectarbase() Then Return
tabla2.Columns.Count = 2
tabla2.Columns[0].Text = "id"
tabla2.Columns[0].Alignment = Align.Right
tabla2.Columns[1].Text = "Nombre de la Asignatura o Curso"
filtro = txtBuscar.Text
hresul = hconn.Exec("select * from asignaturas where nom_materia like '" & filtro & "'")
Do While hresul.Available
clave = hresul["id"]
tabla2.Add(clave, clave)
tabla2[clave][1] = hresul["nom_materia"]
hresul.MoveNext()
Loop
cerrarConexion()
End
Lo tendremos listo.

 

 

Conclusiones sobre Gambas

Para personas que han hecho alguna aplicación en Visual Basic, y tienen interés por la programación, ésta es una de las herramientas que sin lugar a dudas te va a interesar y es una clara opción que debes considerar.

 

Gracias a las pruebas que podemos ver en este tutorial, podemos ver que es sencillo de trabajar y realmente no toma mucho tiempo realizar alguna que otra aplicación sencilla para Linux.

 

Como podemos apreciar, el autocompletado que tiene gambas se restringe al objeto con el que trabajas, no como en el caso de Geany, que te puede poner cualquier cosa. Tenemos que darle puntos ya que funciona como Java y Netbeans y sin más complicaciones.

 

Así que para los que quieren aprender a programar sencillas aplicaciones en Linux y sienten curiosidad les recomendamos que le den una oportunidad a Gambas3.


¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X