Shell 08-03-2025, 15:20
Buenas!.

Pues si, puede parecer algo tonto. Pero al igual que construimos una aplicación que hace algo concreto.
Como puede ser un juego, un bloc de notas, un editor, etc.

¿ Y una aplicación que gestiona una base de datos ?.
¿ Cuales son su requerimientos ?. 
¿ Hasta donde llegan ? 

¿ Y si luego digo ?, ah, podía haberle añadido otras cosas más.

La probable respuesta que me daréis puede ser. Depende, depende de lo que trate la base de datos.
Vale, hasta ahí, ok.

No es lo mismo una aplicación que gestiona una biblioteca que una aplicación 
que gestiona una base de datos de juegos y ademas los hace funcionar.

Pongamos el caso de la biblioteca. La base tendrá tres tablas:

- Libros
- Usuarios
- Prestamos

Tanto la tabla libros, como la de usuarios, se van a rellanar a mano. O casi, oye, no tengo un lector de código de barras. Shy

Y como última tabla, la de prestamos se creará según los usuarios van solicitando libros y se tendrá que comprobar si
el libro que solicita esta prestado ó esta fuera del intervalo de fecha de préstamo y devolución.

La tabla de Prestamos es prácticamente solo un registro de todos los prestamos desde que comenzó a funcionar la base
de datos.

Consultas. Esta es la cuestión.

Puedo tener un número determinado de consultas, ya sea de lectura, escritura. Libros, usuarios, prestamos, disponibilidad, clasificación, etc.
¿ Cuál es la mejor forma desde Gambas de ejecutar esas consultas ?. 
¿ Botones ?. ¿ Tantos botones como consultas ?.
¿ Un menú de opciones ?.

Ahora supongamos que con el tiempo digo. Quiero añadir más consultas.

Espero vuestras sugerencias. Me gustaría diseñar la aplicación gráfica que administre la base de datos de la mejor forma posible,
o más adecuada.¿ Qué debería tener en cuenta a la hora de diseñarla ?

Algo que valga para comenzar.  Smile

Saludos
Shell 08-03-2025, 14:55
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
Shell 07-03-2025, 23:57
Buenas!.

Por falta de costumbre y retomar el tema, parece que ha cambiado ahora los componentes para la base de datos.

[Imagen: SwcXYgKl.png]

Aparece ahora un control llamado gb.db2

Lo bueno es que para los que usaban gb.db les seguirá funcionando, pero parece que a la larga 
habrá que actualizarse y muchos de vosotros os va este tema de las base de datos.

¿ Alguien sabe algo nuevo sobre este control ?. Vaya, vaya, desde la 3.20. Rolleyes

Cita:This component allows you to access several database management systems. This component creates an intermediate layer between the specific server and your program, so that you can use exactly the same code whatever database backend you decide to use.

Eso debe ser como la anterior.

Cita:This component creates an intermediate layer between the specific server and your program, so that you can use exactly the same code whatever database backend you decide to use.
This goal is reached only if:
You create your database by using the database manager or by using this component.
You use the Find, Create and Edit methods.
You don't put SQL values directly in the request, but use the substitution feature of the previous methods.
You don't use the Exec method, that lets you send SQL request directly to the backend, so that you can access its specific features.
If you don't need database independence, do as you like! :-)


Cita:This component replaces the now deprecated gb.db component.
Its interface is mostly backward-compatible, except for the following:
Support for SQLite 2 has been removed.
The Blob class has been removed. Blob fields are now accessed exactly like string fields.

Así que el soporte para SQlite 2 ha sido eliminado.

¿ Y vos que opináis ?. Smile

Saludos
Páginas (547):    1 16 17 18 19 20 547   
Bienvenido, Invitado
Tienes que registrarte para poder participar en nuestro foro.
Recordarme?
Miembros: 277
Último miembro: Elarrieu
Temas del foro: 1,687
Mensajes del foro: 8,750
Últimos temas
Nuevo manual dinámico...
Foro: WebApp/WebForms
Último mensaje por: omoreno, Hace 2 horas
Respuestas: 4 - Vistas: 112
Archivos adjuntos
Foro: Sobre gambas-es.org
Último mensaje por: omoreno, Hace 2 horas
Respuestas: 0 - Vistas: 13
Problemas con proyectos d...
Foro: Instalación
Último mensaje por: Grandamakulo, Hace 3 horas
Respuestas: 1 - Vistas: 32
No se ejecuta Gambas3 en ...
Foro: Instalación
Último mensaje por: Shordi, Hace 10 horas
Respuestas: 5 - Vistas: 968
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.