Es MSSQL y estoy conectándome por odbc. Como dije si tiro un SELECT normal si funciona y puedo obtener datos pero ejecutar un store procedure y pasarle un argumento no. Y lo que me está rebanando la mente es que ya lo habia logrado hacer, osea, ya me habia funcionado y reorganice el código y los controles en la pantalla y ya, error.
Y en realación a usar las vistas, si lo consideré pero las tablas que consulto dos de ellas tienen un par de millones de registros, entonces cada vez que le haga un select a la vista sería muy lento y podria causar bloqueos que afecten otros procesos. De hecho tuve que refinar mucho la consulta para hacerla ágil.
Pues seguiré intentando como dijo Harpo formando una cadena con mi sentencia en SQL y pasarla al método EXEC de la conexión.
Ya veremos si anda.
Un abrazo.
Y tal como lo dije: era algo obvio. Resulta que el error no estaba en el código en gambas sino en el codigo sql osea en el stored procedure en sí. Al final del código en SQL estaba una sentencia de GRANT que no tenía nada quie ver con el procedimiento pero el método EXEC también lo ejecutaba y no obtenía un resultado es decir un registro o renglón. Y de alli el Unable to fetch row. Corregí el procedimiento, corrí de nuevo mi programa y allí están los benditos resultadois al fin.
Así que si amigos, es posible ejecutar un Stored procedure desde Gambas y de forma muy rudimentaria lo lohgré asi:
Código:
Dim con As New Connection
con.Type = "odbc" ' Driver que se usa para conectar a la base
con.Host = "Servidor" 'este nombre debe coincidir con el que está en /etc/odbc.ini
con.Name = "BaseDeDatos"
con.User = "Usuario"
con.Password = "PasswordMegaSeguro"
con.Open
' Y después ejecuto el stored procedure:
rs = con.exec("exec spinfo " & txAN8.text)
Después ya puedo tomar los datos guardados en rs y presentarlos en pantalla.
Y así me despido por el camino de la verguenza. Ahora voy aprender como hacer lo anterior de una manera más profesional.
Saludos