Bueno, aca traigo algo que tenia pendiente desde hace bastante. Se trata de una copia (no muy fiel) de un Recordset, pero en este caso para trabajar directamente sobre SQLite.
Cuenta con propiedades similares al Recordset de ADO, algunas de ellas son:
BOF,
EOF,
Filter,
Fields(),
Index,
RecordCount; pero tambien trae unas nuevas, tales son:
ColIdToName,
ColNameToId y
RowId.
Tambien trae metodos (funciones) similares, como por ejemplo:
AddNew,
Delete,
GetString,
Move,
MoveFirst,
MoveLast,
MoveNext,
MovePrevious,
ReQuery,
Update; pero como para poder adaptarlo mejor, agregue un par mas:
CleanUp,
ColExists y
OpenSQL.
Para comenzar,
Fields no es un array de UDT como en el RST de ADO, sino que es una propiedad que devuelve un Variant con el valor. Si alguien usaba algun valor del UDT del rst de ADO, va a hacer que no le guste este modulo.
Las propiedades
ColIdToName y
ColNameToId se encargan de obtener ya sea el Index (o Id) desde el Nombre de la columna, o viceversa.
La propiedad
RowId devuelve el identificador unico de esa fila, que puede ser o no una columna (rowid esta siempre presente como un PRIMARY KEY AUTOINC, aunque no se defina en ningun lado y ni siquiera aparezca en SELECT *). Esto es lo mas util para editar y eliminar registros; asi no hay que comparar con WHERE y poner todos los campos.
La funcion
CleanUp "suelta" el query actual, osea que desbloquea la base de datos. Nominalmente se llama internamente, pero se puede usar para liberar el archivo por cualquier necesidad.
Para comprobar si una columna existe, se puede usar
ColExists. Solamente hay que pasarle el nombre de la columna (opcionalmente si se busca con distincion entre minusculas y mayusculas) y obtener el resultado.
Y por ultimo, pero lo mas importante, la funcion
OpenSQL. Esta funcion se encarga de inicializar el recordset. Los parametros son el nombre de la tabla, y el handle de la base de datos SQLite (que se obtiene con sqlite3_open).
La clase tiene un par de eventos, similares al recordset de ADO, pero que no funcionan igualitariamente. Igual, yo no los usaria.
Todo lo demas mencionado, funciona igual que el Recordset de ADO.
Arme un ejemplito asi nomas, donde se muestran las funciones del Recordset funcionando: Carga, filtrado, agregar registros, eliminar registros y modificar registros.
En fin, para bajar, click
acaCualquier feedback, comenten!
Saludos