gambafeliz   21-04-2022, 16:12
#1
Hola

Deseo usar las características de Key - Value de un Collection para simular un Registro de una tabla cualquiera, y digamos lo así meter cada registro o Collection en un Collection contenedor.

¿Como lo hago y por favor me pueden dar un ejemplo?

Gracias.

== Solución

Creas una Collección y le sumas las Key-Value y después guardas la collection en otra collection pero con Copy(). Ya solo queda añadir la última collection a una Collection[]
Última modificación: 21-04-2022, 17:54 por gambafeliz.
Harpo   22-04-2022, 13:09
#2
Buenos días, yo usaría una clase, o un grupo de ellas. Yo lo hago así.

Le cuento como lo tengo montado:
  • Una clase CDatabase, gestiona la conexión de datos y la relación con los formularios y demás objetos. Cuando establece la conexión crea un mapa de la base de datos: Tablas y Vistas con sus PK y FK. Crea una colección de CTables.
  • Una clase CTable, cada tabla y vista de la base de datos. Funciona como un GridView por poner un símil. Hace el trabajo de lectura y edición de datos. Tiene una colección de CField, y un array de CRow. Hace la función del Rows del GridView.
  • Una clase CField, sería el Columns del GridView, tiene la información de cada campo: nombre, tipo, si es PK, si tiene FK, si solo admite valores únicos, si admite nulos....
  • Una clase CRow, sería el Row del GridView, tiene una colección de CData, un CData por cada CField de la tabla o vista. Y el tipo de movimiento que hay que hacer con ella.
  • Una clase CData, seria el Cell del GridView, contiene el valor del CField y la CRow a la que pertenece. Gestiona el dato, su tipo, su formato, si ha cambiado desde la lectura...
  • Hay además un par de clases auxiliares: CFilter y CSort.
Desventajas de todo esto: te complicas más la vida, pones una capa intermedia entre la base de datos y tus programas, al principio  cuesta tener todo el tinglado en la cabeza.

Ventajas: Te ahorras un montón de tiempo y normalizas todo. Es una caja negra que siempre funciona igual. No importa cuantos formularios de datos tengas, La lectura o grabación de datos se hace en una única función, ya  no te preocupas de si iniciaste una transacción, no escribes más sentencias SQL, ya no pasas fechas de SQLite a Gambas y viceversa. Y si hay un error solo tienes que buscarlo en un sitio.

Supongo que hay más soluciones y cada uno tenemos nuestras manías, yo lo convierto todo en una clase. Confused
Le subiría el código al foro si le interesa, pero en estos momentos estoy haciéndole una renovación importante, simplificando cosas, optimizandolo e intentando crear un servidor de SQLite. Si me da tiempo busco una copia funcional, limpia y estable que debo de tener en algún sitio.

Un saludo.
guizans   22-04-2022, 15:31
#3
Hola Harpo.

Me parece muy interesante tu forma de enfocar el tema, si puedes pasar algún código que sea sencillo para ver como lo haces te estaría agradecido. Shy Shy

Un saludo.
gambafeliz   22-04-2022, 17:47
#4
Harpo, Gracias

Estaría interesante verlo, lo que describes sino me equivoco es "Modelo–vista–controlador" solo que yo lo he usado en desarrollo Web cuando he trabajado en ello y tu lo has hecho en Gambas3

Bonita propuesta, pues nada, si te apetece regalar una demo de tu arte para que aprendamos nuevos caminos para la perfección, por mi, estupendo.

Yo sigo creado SQL por que estoy haciendo un desarrollo sobre la marcha ya que funciona en real y cada día, y lo que hago es coger mi desarrollo y perfeccionarlo una y otra vez, versión tras versión, y cada vez estoy mas cerca de la meta, pero justo cuando la veo, observo que hay nuevas formas de simplificar todo (lógicas, código, caminos) en fin, estoy creado una nave y me lo estoy pasando pipa.

Saludos.
Harpo   22-04-2022, 18:52
#5
Buenas tardes,
No llega a ser un MVC, es un engendro intermedio Big Grin
A ver si saco tiempo y busco una versión estable y más sencilla que la actual, añado un formulario de ejemplo de uso y la subo al foro.

Un saludo.
  
Usuarios navegando en este tema: 1 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.