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.
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.