Shell   08-03-2025, 14:55
#1
Buenas!.

Retomando un poco el tema de las base de datos ( mi asignatura pendiente ).
Y habiendo creado la base de datos del proyecto final para el curso de bases de datos
con sqlite. Quise intenta ver de una forma por ahora texto de ver todo el contenido
de la base de datos pero con Gambas.

Eso incluía:

- Las tablas
- Sus campos
- Los valores de los registros.

Y dije, bueno y si fuese para cualquier base de dato, algo más genérico y que valiese
para todas. A ver como lo hago.

Entonces comencé por la conexión , que funcionaba y luego el resultado, rompiéndome
la cabeza, que no me estaba devolviendo ningún resultado la consulta de selección y es que tenía
la base de datos repetida, una con solo la estructura y la otra con datos.

Digamos que construyo la base y para asegurarme de no perderla la guardo y modifico la copia,
que era la que tenía toda la información.

Código:
Private hConn As Connection

Public Sub MostrarTodo()
  Dim HResul As Result
  Dim HRsf As ResultField
  Dim hTable As Table
  Dim snomtabla As String
  hConn = ModGestBase.ConectarConBase()
  For Each hTable In hConn.Tables
    If hTable.System Then Continue
    HResul = ModGestBase.MostrarTabla(hTable.Name)
    snomtabla = "Nombre de la tabla: " & hTable.Name
    Print snomtabla
    Print String(snomtabla.Len, "*")
    'Mostrar cada campo y valor de este en cada uno de los resultados de la consulta
    Do While HResul.Available
      For Each HRsf In HResul.Fields 'Una colección
        Print HRsf.Name & " - " & HResul[HRsf.Name]
      Next
      HResul.MoveNext
      Print
    Loop
  Next
  ModGestBase.CerrarConexion()
End

Con ResultFields  y su propiedad Fields es una colección.
Así que teniendo la clave podemos obtener tanto el nombre del campo de la tabla como su valor.

Y dije, bueno y ¿ qué pasa con las tablas ?.
Al principio vi que se podía obtener con un array pero eso lleva a trabajar con indices
y curiosamente, encontré la misma solución. 

La conexión tiene una propiedad llamada Tables. Definiendo un objeto de la clase Table,
podía recorrer toda la tabla de la base de datos en cuestión.

Y de esta forma pude ver la salida en la consola de Gambas.
Parte de la salida en la consola, de la tabla libros.

Cita:Nombre de la tabla: Libros
**************************
idLibro - 1
titulo - Soledades. Galerías. Otros poemas
genero - Poesía
autor - Antonio Machado
estado - Prestado

idLibro - 2
titulo - Divinas palabras
genero - TragiComedia
autor - Ramón Valle-Inclán
estado - Disponible

Lógicamente la tabla tiene cosas más complejas creadas en si misma, vistas, triggers y una transacción para controlar el tema de los prestamos.

Ahora lo que me surgen son otras dudas. Que plantearé en otro mensaje.


Saludos
Última modificación: 08-03-2025, 14:56 por Shell.

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
  
Usuarios navegando en este tema: 1 invitado(s)
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.