Comunidad Gambas-es
Mover un Result a una posición concreta. - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: Bases de Datos (https://gambas-es.org/forum-6.html)
+--- Tema: Mover un Result a una posición concreta. (/thread-1998.html)



Mover un Result a una posición concreta. - guizans - 30-11-2025

Hola a todos.

 Tengo una consulta a una base de datos SQLite3 y se almacena en una variable de tipo Result. Para simplificar digamos que tiene almacenado como 30 campos que son un "ID" y un "nombre". Ahora supongamos que el usuario introduce, o proviene de otra fuente, un ID y necesito mover el puntero de ese Result para obtener el "nombre". No he encontrado ninguna función que lo haga en Gambas. Lo único que se me ocurre es hacerlo con un bucle hasta encontrar el resultado

Código:
While resultado.Available
if resultado["ID"] = idBuscada Then Print resultado["nombre"]
resultado.MoveNext
Wend

Es una opción, pero me parece algo farragosa, pero no se me ocurre otra, a menos que haga otra consulta a la base de datos para obtener el nombre.

Un saludo.


RE: Mover un Result a una posición concreta. - Shordi - 30-11-2025

El result es el resultado de una búsqueda y no dispone de ningún método de búsqueda dentro de sí. Lo más parecido que tienes es myResult.Moveto(index as integer), que te desplaza el puntero interno a la posición marcada por index, pero no por el contenido de un campo. 

Quien dispone de métodos de búsqueda es la clase connection. Puedes usar su método .find ( otroresult=miconexión.find("mitabla","id=&1", valor) ), o utilizar directamente un exec con una sentencia de búsqueda concreta (miconexion.exec("select... where id=&1",valor)).

Recorrer un Result, puede ser rápido o lento dependiendo de, sobre todo, la cantidad de filas que tenga. Si la base de datos está bien construida en lo que a índices se refiere y demás, puede ser mucho más rápido usar otro result.

En algunos controles y circunstancias lo que suelo hacer es después de obtener el result, pasarlo a una Collection o a un String[], que sí disponen de métodos .Exist y .Find y utilizar estos como una manera de ahorrar consultas a la BD, sobre todo con bases de datos mysql que residan en un servidor externo y donde la velocidad de la consulta puede ser lenta. Para SQLite no creo que valga la pena tanto lío. De todas formas, al no conocer tu proyecto y las circunstancias concretas no puedo decirte más, sólo tú sabes lo que quieres.

Saludos