Power Builder - Llamar la conexion nuevamente

 
Vista:

Llamar la conexion nuevamente

Publicado por Pedro (44 intervenciones) el 06/02/2007 16:46:37
Hola amigos

Tengo una consulta, como puedo volver a llamar la conexion de mi base de datos, lo que sucede es que trabajo con mi aplicacion en red normalmente pero hay instantes como si cortaran la red por un segundo, lo cual hace la perdida de la conexion por lo que tengo que cerrar mi aplicacion y volver abrirla. quisiera realizar no lo se un boton de reconexion para no tener que cerrar mi aplicacion hay alguna manera? si es asi cual es?

Gracias.
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
Imágen de perfil de Antonio
Val: 176
Bronce
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

RE:Llamar la conexion nuevamente

Publicado por Antonio (1271 intervenciones) el 06/02/2007 18:29:30
Hola Pedro:

Pues tu cuestión es más sencilla de lo que te imaginas...

Mira como te conectas cuando inicia tu aplicativo, después crea una función externa con ése código de conexión y la puedes llamar en cualquier momento desde cualquier obtejo que tengas...

¡ Suerte Amigo !
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:Llamar la conexion nuevamente

Publicado por Pedro (44 intervenciones) el 06/02/2007 19:23:55
Hola Antonio

Disculpa mi ignorancia, pero tengo que retornar un valor como especifico realmente mi conexion si yo uso este codigo para conectarme

SQLCA.DBMS=ProfileString("cone.ini","Database","DBMS","")
SQLCA.Database=ProfileString("cone.ini","Database","Database","")
SQLCA.ServerName=ProfileString("cone.ini","Database","ServerName","")
SQLCA.LogId=ProfileString("cone.ini","Database","LogId","")
SQLCA.LogPass=ProfileString("cone.ini","Database","LogPass","")
SQLCA.LogId="proteus"
SQLCA.LogPass="proteus"
Messagebox("",SQLCA.ServerName)

Connect Using SQLCA;
IF Sqlca.SqlCode<>0 THEN
MessageBox("Error de Conexion","No se pudo Conectar a la Base de Datos")
RETURN
ELSE
OPEN(W_ACCESO)

END IF

ayudame please!!
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: conectarte

Publicado por oriel (3 intervenciones) el 09/02/2007 00:27:59
Comparito.
No te hicistes entender muy bien pero creo que quieres hacer lo siguiente.
Deseas reconectarte cada vez que creas que haz perdido la conexión.

Bueno lo que tienes que hacer es lo siguiente create una funcion a nivel de aplicación, para que puedas utilizarlo desde

cualquier parte.

name = uf_ConexionBD
tipo = Boolean
NO reciben parametros

uf_ConexionBD :
SQLCA.DBMS=ProfileString("myINI","Database","DBMS","")
SQLCA.Database=ProfileString("myINI","Database","Database","")
SQLCA.ServerName=ProfileString("myINI","Database","ServerName","")
SQLCA.LogId=ProfileString("myINI","Database","LogId","")
SQLCA.LogPass=ProfileString("myINI","Database","LogPass","")
SQLCA.LogId="sa"
SQLCA.LogPass=""

Connect Using SQLCA;
IF Sqlca.SqlCode = 0 THEN
RETURN TRUE
ELSE
RETURN FALSE
END IF

Solo falta invocar a la función.

Saludos desde LIMA.
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

REconectarte a Oriel

Publicado por Pedro (44 intervenciones) el 09/02/2007 18:55:53
Hola Oriel

como estas gracias por tu respuesta, y de verdad me ayuda mucho, pero no se porque cuando se pierde la coneccion no puedo volver a reconectarme ya realice lo que mencionastes en tu respuesta pero, no se reestablece la coneccion al invocar la funcion, tu sabes mas de este tema ayudame por fa.. a lo mejor hay un detalle que olvide?
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:Llamar la conexion nuevamente

Publicado por Mario Macias (7 intervenciones) el 11/02/2007 04:11:36
Hola Pedro hace un tiempo atras un amigo forista me dio una idea para relizarlo.

Normalmente cuando se corta la conexion a una Base de datos (ASA) tu aplicacion se
corta a raya mostrandote un mensaje de error,

Lo que tienes que hacer primero es crearte una funcion global of_reconectar() que busque algun dato en la base de datos (como averiguar la fecha del servidor con la funcion SELECT GETDATE() ........ "que seria lo mejor") y si todo sale bien continua con el script; SI NO, (o sea -1 con SQLCA.SQLCODE) debes ponerle DISCONNECT USING SQLCA;
Y volverla a conectarla (este script esta en el app de of_connectservice en el evento open)
y eso es todo......!!!!!! esta funcion debe retornar un dato.

Te recuerdo que para que funcione deberas agregarle a cada evento que utilices, al inicio y hacer un if... else OSEA

EVENTO ue_guardar ...

if of_reconectar = true then //es verdadero si desea reconectar ya que la base de dato //se interrumpio
of_conectar()

else...
//continuar con el codigo normal...........de ue_guardar....

end if
espero haberte dado alguna idea .....

ATENTEMENTE MARIO Macias P. DESDE ECUADOR PARA EL MUNDO..
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:Llamar la conexion nuevamente

Publicado por Mario Macias (7 intervenciones) el 11/02/2007 04:36:47
Para ser mas explicativo LA funcion of_reconectar()

of_reconectar
SELECT GETDATE FROM ..... //codigo para obtener fecha y hora del servidor
//bueno no me recuerdo muy bien como era
//esta estructura lo dejara para que lo hagan
IF sqlca.sqlcode=0 then
RETURN TRUE //Porque si hay conexion
else
//Porque hubo un error
DISCONNECT USING SQLCA //esencial para dar por terminado la conexion
// actual corrupta y dejar listo para la nueva conexion
//.....
RETURN FALSE
end if //FIN FUNCION GLOBAL....

LA implementamos al inicio de cualquier evento por ejemplo
EVENTO ue_guardar ...

if of_reconectar = FALSE then //es FALSO si desea reconectar ya que la base de dato
// SE CORTO LA COMUNICACION "en el anterior puse
//VERDADERO PERO esta mal cuidado??"

Messagebox("Conexion interumpida","Volviendo a conectar")
mdi_principal.setmicrohelp("Reconectando...")

of_conectar() ------------->//CREA otra funcion glogal o utiliza la que crea PB
//QUE CREO QUE ES ESTA of_conectservice que se
// encuntra en el open del APP.
//O HASLA TU MISMO CONNECT USING SQLCA.

else...
//continuar con el codigo normal...........de ue_guardar....
Dw_1.Aceeptext()
long a
a=dw_1.update()
if a =1 then
comit;....................
...............................
...............................

end if //fin de ue guardar
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:Llamar la conexion nuevamente

Publicado por Pedro (44 intervenciones) el 13/02/2007 23:15:22
Hola Mario muchas gracias
fue de gran ayuda tu aporte que ayudo a mi problema y creo que resolvera la duda de varios de los forista, a oriel tambien agradecerle su apoyo ayudo a comprender cosas que no entendi de como aplicarlo.

gracias
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