Cita:Por todo esto quería saber si había alguna manera de extraer un objeto registro del result, pero no se puede (o no he sabido encontrar cómo).
Efectivamente, no se puede... pero ¿Qué inconveniente hay en extraerlo de la BDD en cada proceso? Para eso están la BBDD precisamente... salvo que me hables de una BDD no estructurada, sin índices o de un tipo ODBC, no entiendo muy bien la lógica del asunto. ¿Sacas una selección de las tablas a una colección que pasas a distintos procesos y personas (
persona = dispositivo de input-output con 50 bits por segundo de velocidad de proceso ) todo en ram y luego lo vuelves a grabar todo a la BDD?
¿Qué inconveniente hay para que cada proceso o persona no pueda extraer la información precisa que necesita de la BDD?
Pero bueno, no me hagas caso, me suena que trabajas sobre algo ya muy consolidado y difícil de replantear... tú sabrás qué es lo mejor.
Saludos
Se me olvidaba. Es un obviedad, pero en los métodos de la clase Connection, tienes Exec, que pasa la consulta SQL directamente a la BDD. Suele ser más rápido y claro de leer en el código. El inconveniente respecto a Result.Find, etc. es que escribiendo
Código:
miresult = miconexion.Exec("Select * from Tabla1 where campo1 = &1", "XXX")
'o también
miconexion.Exec("Update mitabla set campo1 = &1 where campo1 = &2" ,"XXX","ZZZ")
ahorras mucho tecleo y ganas claridad peroestás atando el código al dialecto concreto de SQL de esa BDD en concreto, con lo que tu aplicación pierde portabilidad y flexibilidad. Como programador profesional de gambas durante más de 20 años en el mundo empresarial, la experiencia me dice que las empresas raramente se lanzan a cambiar su base de datos. Si usan MySQL (o MariaBD, que es lo mismo) se mantendrán fieles a eso, si PostGreSQL pues PostGreSQL (y si Oracle... mejor no uses gambas que estarás condenado al infierno ODBC).
Por tanto, si ese es tu caso, no seas tímido con el .Exec, que facilita mucho todas las operaciones sobre las bases de datos.
Saludos.