Bd connection por 2

Deseo conectarme a dos bases de datos simultanemamente, una vía ODBC(Visual Fox Pro) y la otra vía SQL nativo, voy a leer dat de fox y guardarla en SQL Server, pero cuando conectyo las dos me dice que la conexión ya fue establecida, como sería...

1 Respuesta

Respuesta
2
Creo que el error que estas cometiendo es que estas tratando de conectar las 2 bases de datos a un mismo objeto de transacción.
Esta es una paridad 1 a 1, cada vez que necesitamos una nueva conexión (independientemente de la base de datos, y el vinculo), necesito declarar un nuevo espacio u área dinámica.
Power Builder incluye en sus estándares el famoso SQLCA,
a partir de este, es necesario crear tantas instancias de transacciones como conexiones necesitemos.
En tu caso puede que la solución este de la siguiente manera:
CONEXIÓN CON SQL Server (NATIVA):
SQLCA.DBMS = 'MSS Microsoft SQL Server 6.x'
SQLCA.DataBase = '<Data Base Name>'
SQLCA.ServerName = '<Server Name>'
SQLCA.LogId = '<LogName>'
SQLCA.LogPass = '<Password>'
(Y algunas condicionales en el SQLCA. DbParm, si así fuera el caso)
Conexión con fox pro (odbc)
1ero. Declarar una variable tipo TRANSACTION, en el área global, por ej.
Transaction sqlfox
Seguido de las instrucciones anteriores lo siguiente:
SQLFOX = CREATE TRANSACTION
SQLFOX.DBMS = 'ODBC'
SQLFOX.DataBase = '<ODBC Name>'
SQLFOX.LogID = '<LogName>'
SQLFOX.LogPass = '<Password>'
(y algunas condicionales en el SQLFOX.DbParm, si asi fuera el caso)
SITUACIONES A TOMAR EN CUENTA:
*- cuando generes una instancia de un objeto cualquiera que sea, tienes que tener en cuenta que si lo creas alguna vez tienes que destruirlo, pues esto puede provocar que los apuntadores del objeto en cuestion, no sean desalojados de la memoria, y tu programa haga cosas que no te expliques.
Recomiendo que leas la ayuda de CREATE y DESTROY
*- el objeto de transaccion SQLCA, no es necesario destruirlo.
*- cuando necesites crear una instancia de un objeto de transaccion, es necesario que determines en donde y cuanto tiempo va ha estar vivo. El ejemplo anterior declara una variable tipo TRANSACTION en el area GLOBAL, asumiendo que todo el tiempo vas a necesitar de trasladar datos de una base a otra o biseversa, de lo contrario esta declaracion puede ser hecha en el area INSTANCE ( de instancias), crearla cuando abres una ventana especial, y destruirla cuando esta es cerrada.
*- si necesitas utilizar DATAWINDOWS para cada una de las bases de datos, utiliza el Objeto de Conexion correspondiente, en este caso no podras crear un datawindow utilizando los datos compartidos de las 2 bases de datos, esto solo se podria dar en el caso en que las 2 bases de datos sean del mismo tipo.
Espero que esto pueda ser de utilidad para resolver tu problema.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas