-->

Menú principal

viernes, 28 de octubre de 2016

Creación de una aplicación en Gambas3 para gestión de calificaciones con SQLite

Este es un ejemplo para el desarrollo de una aplicación de gestión de notas de alumnos utilizando el entorno de programación de Gambas 3.9.90 con base de datos SQlite, en un equipo con Ubuntu 16.04 LTS.


El entorno de programación de Gambas se ha convertido en un auténtico heredero del popular entorno de Visual Basic 6.0 y una delicia para los programadores que trabajan y conocen sus entresijos, ya que no solo emula a Visual Basic 6.0 sino que lo mejora en muchos aspectos.

Gambas solo funciona en sistemas operativos Linux, aunque muchos buscan formas alternativas para ejecutar Gambas en Windows con máquinas virtuales como VirtualBox y otros similares, que en mi opinión todavía no dan la talla, ya que presentan problemas de lentitud y son engorrosas de implementar.

Lo mejor es trabajar en un entorno Linux con Gambas directamente, para obtener la máxima eficacia y rendimiento.

Este artículo está dirigido al alumnado que se inicia en la programación de aplicaciones sencillas en la asignatura de Tecnologías de la Información y la Comunicación (TIC), aunque puede servir a cualquiera que se inicie en el tema.

Por tanto, veremos este ejemplo desde un enfoque didáctico, haciendo hincapié en los conceptos fundamentales de la programación y de los contenidos relacionados con esta asignatura.

Para el desarrollo de nuestra aplicación vamos a seguir dos manuales sencillos:

- Manual paso a paso de Gambas:  Donde se describe paso a paso el desarrollo de una aplicación para Listín de datos.

- Bases de datos SQLite desde Gambas3: Donde nos describe como crear una sencilla aplicación con acceso a una base de datos creada con SQLite.

El primer paso es la instalación de la aplicación gambas desde el gestor de software de sistema Linux:


Una vez instalada la última versión de gambas, procedemos a la instalación de los complementos de Bases de datos para Gambas, entre ellos SQLite, en el caso de que no se hayan instalado al instalar Gambas.

También podemos descargar dos programas de gestión de bases de datos Sqlite como DB Browser for SQLite y SQLiteman:



Pero la opción que más recomiendo para gestionar bases de datos Sqlite es el complemento del navegador Firefox llamado "SQLite Manager", que se instala fácilmente desde el gestor de complementos del navegador.



1.- ESTRUCTURAS DE DATOS:

En Gambas como en la mayoría de los lenguajes de programación, los datos se definen utilizando un estructura determinada para cada tipo de dato. En nuestro ejemplo tenemos que definir los siguientes datos:

Public Struct alumno ' ejemplo de estructura


  Id As Integer ' id: identificador del alumno variable tipo numero entero

  Nombre As String ' nombre: variable donde guardaremos el nombre del alumno

  Apellidos As String' apellidos: variable donde guardaremos los apellidos del alumno

 Centro as String   'Nombre del centro de enseñanza
 Curso As String ' Identificación del curso que que realiza el alumnos (3ºESO,2º BCH,..)
 Asignatura as String  'Asignatura que se está evaluando.
 Actividad as String   'Nombre de la actividad que se califica, ej: Exámen Tema 7
 Fechaentrega as Date  'Variable con la fecha de entrega  realización de la prueba.
 Nota as numeric   'Variable con la nota en formato numérico
 promedio_notas As Float 'variable con el promedio de las notas que tenga el alumno
 Obser as String     'Una variable para guardar las observaciones que creamos necesarias.


End Struct

En este ejemplo hemos definido los datos tipo texto como String, los datos numéricos se pueden definir con entero corto, entero largo o de coma flotante y los datos de tipo fecha como Date.

También existen otros tipos de datos como arrays, que son matrices o vectores, donde se almacena valores de tablas y booleanos que son datos del tipo verdadero o falso.

- Primer paso: creación del formulario en Gambas3



Creamos el formulario con los campos definidos en la estructura de datos. El formulario va a contener además un Grisview para visualizar los registros de la tabla.

- Segundo paso: selección del fichero de base de datos

Vamos a utilizar una base de datos sqlite3. Crearemos una opción de menú para seleccionar una ubicación distinta del fichero de base datos. Con la combinación de teclas Ctrl+E abrimos el editor de menús:

 Creamos dentro del menú opciones un item que llamamos "Selección de la Bases de datos", en la que añadimos el siguientes código.

Public Sub Menu_SelectBD_Click()
  ' Inicializar valores
  Dialog.Path = User.Home
  DirViewBD.Root = Dialog.Path
  FileViewBD.Dir = DirViewBD.Current
  FrameSelecBD.visible = True
  FrameSelecBD.Enabled = True
End

 
     En este código activamos y hacemos visible el marco "FrameSelecBD" que contiene los controles Dirview y Fileview.
     En la parte de la derecha he incluido el frame en fondo naranja que incluye los dos controles: DirviewBD y un FileviewBD, que nos van a servir para seleccionar una base de datos, en caso de que no se haya definido al abrir el formulario o que se haya cambiado o movido de directorio.


El código que contienen estos controles es el siguiente:

Public Sub DirViewBD_Click()
  rutaBD = DirViewBD.Current
  FileViewBD.Dir = DirViewBD.Current
End


Public Sub FileViewBD_Click()
  rutaBD = FileViewBD.Current
  'Message(rutaBD)
End


Al hacer clic en el DirViewBD ponemos en la varible rutaBD el directorio seleccionado, y actualizamos en directorio en el control FileViewBD. Cuando hacemos clic en el control FileViewBD actualizamos la variable ruta con la ruta del fichero de base de datos seleccionado.

En el frame colocamos dos botones: El botón seleccionar y cancelar con el siguiente código:

Public Sub Boton_AceptarBD_Click()
  rutaBD = DirViewBD.Current & "/" & FileViewBD.Current
  'Message(rutaBD)
  Conexion = New Connection
  Conexion.Type = "sqlite3"
  Conexion.Host = DirViewBD.Current
  Conexion.Name = FileViewBD.Current
  Try Conexion.Open()
  If Error Then
    Message.Error("Error al conectar a la base de datos.")
    Conexion = Null
  Else
    TablaNotas = Conexion.Exec("Select * from Notas")
    If TablaNotas.Available Then MostrarCampos
    TextAreaMensaje.Text = "Conexión establecida con Base de datos: " & rutaBD
    'Message.info("Conexión establecida con Base de datos: " & rutaBD)
    FMain.Text = "CALIFICACIONES --->" & "  Ruta de la Base de datos: " & rutaBD
    FrameSelecBD.visible = False
    FrameSelecBD.Enabled = False
    definirGridviewDatos()
    rellenadatosGridview()
    Gridviewdatos.mode = Select.Single
  End If
End


En este botón abrimos la conexión y asignamos el tipo ("sqlite3"), la ruta del directorio y el nombre de la base de datos. Probamos la conexión, en caso de error enviamos un mensaje por pantalla y en caso de que conecte ejecutamos la sentencia SQL que nos carga los datos de la tabla notas. Después mostramos un mensaje en un texbox para nos informe de que se ha establecido conexión con la base de datos. Además ponemos la ruta de la base de datos en el texto de cabecera del formulario. Después ocultamos el marco de selección de la base de datos y rellenamos los datos del Gridview.

En el botón cancelar cerramos el frame de selección de base de datos sin hacer nada.

Public Sub Boton_CancelarBD_Click()
  FrameSelecBD.visible = False
  FrameSelecBD.Enabled = False
End


- Declaraciones de variables:

' Gambas class file

Public rutaBD As String
Private Conexion As Connection
Private TablaNotas As Result


- Código que se ejecuta a la apertura del formulario:

Public Sub Form_Open()
 Me.center()
 Conexion = New Connection
 Conexion.Type = "sqlite3"
 Conexion.Host = "/home/francisco/Datos"
 Conexion.Name = "Calificaciones.sqlite"
 Try Conexion.Open()
 If Error Then
    Message.Error("Error al conectar a la base de datos. Selecciones una BD")
    Conexion = Null

    Menu_SelectBD_Click()
 Else
    TablaNotas = Conexion.Exec("Select * from Notas")
    If TablaNotas.Available Then MostrarCampos
    definirGridviewDatos()
    rellenadatosGridview()
    Gridviewdatos.mode = Select.Single
 End If
 rutaBD = "/home/francisco/Datos" & "/" & "Calificaciones.sqlite"
 FMain.Text = FMain.Text & "  Ruta de la Base de datos: " & rutaBD
 TextAreaMensaje.Text = "Área de mensajes de la aplicación"
End


Vamos a introducir el código necesario para añadir un registro en la base de datos con el botón "Insertar":

Para añadir un registro seleccionamos en el menú de operaciones de la aplicación la opción de "Insertar":

Hay que poner el siguiente código para que se ejecute al hacer clic en Insertar:




Public Sub Boton_Insertar_Click()

  Dim VarResult As Result
 
  VarResult = Conexion.Create("Notas")
  VarResult["Nombre"] = textbox_Nombre.Text
  VarResult["Apellidos"] = textbox_apellidos.Text
  VarResult["Centro"] = ComboBox_Centro.Text
  VarResult["Curso"] = ComboBox_Curso.Text
  VarResult["Asignatura"] = ComboBox_Asignatura.Text
  VarResult["Actividad"] = ComboBox_Actividad.Text
  VarResult["Fecha"] = DateboxFecha.Value
  VarResult["Nota"] = ComboBox_Nota.Text
  VarResult["Obser"] = TextBox_Obser.Text
  VarResult.Update
  TablaNotas = Conexion.Exec("Select * from Notas")
  Boton_Ultimo_Click
  TextAreaMensaje.Text = "Se ha añadido el registro: " & TablaNotas["Id"] & " ---> " & textbox_Nombre.Text & " " & textbox_apellidos.Text
 
  Boton_Insertar.Enabled = False
  Boton_Modificar.Enabled = False
  Boton_Primero.Enabled = True
  Boton_Anterior.Enabled = True
  Boton_Siguiente.Enabled = True
  Boton_Ultimo.Enabled = True

End





No hay comentarios:

Publicar un comentario