GeneXus - SQLConnect()

 
Vista:

SQLConnect()

Publicado por Su (10 intervenciones) el 24/04/2002 15:35:23

Tengo este procedimiento en Visual FoxPro, el cual me devuelve en "cCadena" las propiedades de la conexión a la base de datos :
------------------------------------------------------------------------
PARM cCadena

Handler = SQLConnect()
cCadena = SQLgetprop(Handler, "ConnectString")
-----------------------------------------------------------------------

El problema que tengo es que cuando llamo a este procedimiento YA tengo la conexión abierta con la base de datos y no quiero ejecutar SQLConnet().
Pero para ejecutar SQLgetprop() necesito el controlador (Handler) que devuelve la funcion SQLConnect()

Según la documentación si a la función SQLgetprop() se le pasa un 0 en el primer parámetro (Handler) toma la conexión abierta, pero esto no me funciona.

¿Cómo podría hacerlo?

Gracias, un saludo.
Susana Ferrer.

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:SQLConnect()

Publicado por Buenpibe (47 intervenciones) el 26/04/2002 22:05:31
Susana, he probado el ejemplo de esta funcion y con cero no camina. Si tu dices que ya tienes el Handler, o sea la conexion establecida, porque no lo pasas como parametro tambien?.
en la linea de comando de fox, he simulado la situacion.

En la variable cnx, guardo "la conexion que ya tienes abierta"
cnx = sqlconnect()
= messagebox(str(cnx))

este seria el segundo programa recibiendo "la conexion que ya tienes abierta" en la variable cnx.
cSource= SQLGETPROP(cnx, "datasource")
= MESSAGEBOX('DataSource = ' + cSource + ' --- Handler = ' + alltrim(str(cnx)))

Y me desconecto...
=SQLDISCONNECT(cnx)

Saludos
BP
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SQLConnect()

Publicado por Su (10 intervenciones) el 29/04/2002 10:43:33
Sí, la conexión con la db ya está abierta, pero no tengo su "handler".
Es decir, al ejecutar la aplicación me aparece la pantalla de ODBC solicitando los datos para la conexión (servicio, usuario, password), hay un work panel que en un evento debe realizar un "scrip" a la base de datos obteniendo datos de una tabla del sistema (Select * from <tabla>) y la única forma que tengo de hacerlo es llamando a un procedimiento externo hecho con visual foxprow (creo que es la única forma de hacerlo, no lo sé). Por eso este procedimiento no debe hacer SQLConnect() pues la conexión ya está realizada pero no tengo su "handler" para realizar tratamientos con la base de datos.
No sé si comprendes el problema que tengo.

Gracias, un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SQLConnect()

Publicado por Buenpibe (47 intervenciones) el 30/04/2002 00:26:05
Por lo que he estado mirando sobre el comando, hay, aparentemente, una restriccion, que deberia ser por seguridad. Si tu no sabes el handler, este comando no te va a suministrar los datos de la conexion, he hecho esta deduccion en base a la observacion de que si bien no muestra los datos "datasource", "userid", "ConnectString", que son datos especificos de conexion, (y ademas muestra el password), si me muestra datos del tipo secundarios como por ejemplo "Transactions","WaitTime", o "DispLogin". (con handler = 0)Evidentemente tienes un problema. La variable handler de genexus,(que he estado buscando), no es facil de encontrar, es mas ,no la he encontrado, voy a ver si te averiguo por ahi, capaz que alguien si tiene idea de cual es. Una duda, tu quieres ejecutar un comando SQL desde Genexus?...algo asi como SQL-Embebido?...en que ambiente estas?
Saludos BP
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SQLConnect()

Publicado por Su (10 intervenciones) el 30/04/2002 10:27:51
Gracias por tu interes.
Trabajo con Genexus v6.e1.p3 - VFP 6.0 y generador de C/SLQ p4.
Todo mi problema viene porque necesito saber el servicio/usuario de la conexión que está abierta. Para ello he pensado en hacer una select sobre una tabla del sistema de la base de datos oracle en la que está guardada esta información.
Lo que debo hacer es ejecutar, desde un work panel, un procedimiento de tipo "main" generado en C/SQL. Al ser de tipo main este procedimiento necesita conectarse y para ello recibe las variables propias de genexus: parm(&GxDBName ,&GXUserId ,&GXPasswrd) Estas variables le indican al procedimiento que debe realizar una conexión (estas variables nos deben definirse). Lo llamaría desde el work panel así:
call(pMiProc, "servicio", "usuario", "password") , mi problema es saber el "servicio" y el "usuario" para poder llamar a ese procedimiento.
¿Lo entiendes?
Gracias, un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar