Power Builder - Conectarse a varias Base de Datos

 
Vista:

Conectarse a varias Base de Datos

Publicado por Bice (44 intervenciones) el 03/10/2005 23:50:09
Hola tengo que desarrollar una aplicación que se conecta a un servidor donde hay 3 base de datos de varias aplicaciones necesito buscar informacion en varias tablas que pertenecen a las base de datos. Mi pregunta es como me conecto a varias bases de datos y como puedo consultar simultaneamente estas tablas aunque pertenezcan a distintas base de datos. Porfa es Urgente 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

RE:Conectarse a varias Base de Datos

Publicado por karen (274 intervenciones) el 04/10/2005 00:34:33
PUEDES CONECTARTE DESDE UNA VENTANA DETERMINADA CUANDO LO NECESITES HACIENDO CONNECT A OTRO PROFILE DE OTRA BASE DE DATOS LO QUE DEBES TENER EN CUENTA ES QUE NO MANTENGAS DOS CONECCIONES SI NO ES NECESARIO DESPUES QUE USAS LOS DATOS O AL CERRAR VENTANA HACER EL DISCONNECT A ESA OTRA BASE DE DATOS
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:Conectarse a varias Base de Datos

Publicado por Bice (44 intervenciones) el 04/10/2005 00:39:24
Estas serian mis 3 Base de datos y asi me conecto a cada una pero como identifico yo que me necesito conectar a una u otra base de datos, eso es lo que no entiendo. Gracias

SQLCA.DBMS = "SYC Adaptive Server Enterprise"
SQLCA.Database = "bd_1"
SQLCA.ServerName = "TTT"
SQLCA.AutoCommit = False
SQLCA.DBParm = ""

SQLCA.DBMS = "SYC Adaptive Server Enterprise"
SQLCA.Database = "bd_2"
SQLCA.ServerName = "TTT"
SQLCA.AutoCommit = False
SQLCA.DBParm = ""

SQLCA.DBMS = "SYC Adaptive Server Enterprise"
SQLCA.Database = "bd_1"
SQLCA.ServerName = "TTT"
SQLCA.AutoCommit = False
SQLCA.DBParm = ""
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:Conectarse a varias Base de Datos

Publicado por wend (95 intervenciones) el 04/10/2005 00:55:31
Debes crear dos objetos transaction y el SQLCA ya son tres y lo puedes hacer de
la siguiente manera:

Transaction tran1
transaction tran2

// Conexion 1 -- SQL Server
tran1 = CREATE transaction
tran1.DBMS = "MSS Microsoft SQL Server 6.x"
tran1.Database = "nombre_database"
tran1.LogPass = "baseuti"
tran1.ServerName = "nombre_servidor"
tran1.LogId = "usuario"
tran1.AutoCommit = False
tran1.DBParm = ""
connect using tran1;

// Conexion 2 -- Sybase Anywhere
tran2 = CREATE transaction
tran2.DBMS = "ODBC"
tran2.AutoCommit = False
tran2.DBParm = "ConnectString='DSN=nombre_dsn'"
connect using tran2;

// Conexion 3 -- SQL Server
SQLCA.DBMS = "MSS Microsoft SQL Server 6.x"
SQLCA.Database = "nombre_database"
SQLCA.LogPass = "baseuti"
SQLCA.ServerName = "nombre_servidor"
SQLCA.LogId = "usuario"
SQLCA.AutoCommit = False
SQLCA.DBParm = ""
connect;

Si tuvieras 3 DW en la ventana,una para cada BD, entonces sería:
dw_1.SetTransObject ( tran1 )
dw_2.SetTransObject ( tran2 )
dw_3.SetTransObject ( SQLCA )

Y si usas SQL entonces sería:

SELECT campo
INTO :variable
FROM tabla
USING TRAN1;
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:Conectarse a varias Base de Datos

Publicado por wend (95 intervenciones) el 04/10/2005 00:58:28
Te aclaro que cuando diseñas los DW no podrás estar conectado a las 3 bases,
tienes que crear tres profiles una para cada base y conectarte a una cada vez que
disenas un DW.
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:Conectarse a varias Base de Datos

Publicado por karen (274 intervenciones) el 04/10/2005 16:22:02
ademas tu debes saber en la ventana a que base de datos conectarte no se si tienes una tabla de clientes a la que debes accesar y esta en la bd1 donde hagas una busqueda a clientes es alli donde debes conectarte a db1 solo tu debes saber el momento de conectarte a una u otra y no olvides desconectarte despues de usarla
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:Conectarse a varias Base de Datos

Publicado por Roberto (32 intervenciones) el 04/10/2005 20:16:42
Hola !!!.. Yo tengo una programacion que te puede servir.

Esta muy bien lo que te indicaron los chicos, que debes conectar varios objetos transaccionales, pero
puede pasar los datos de esas tablas a tablas temporales de tu conexion SQLCA.

Ejemplo:
SQLCA conectada con mi BD_1
SQLCA1 conectada con mi BD_2
SQLCA2 conectada con mi BD_3
SQLCA3 conectada con mi BD_4

String ls_sql

/*Crea Tabla Temporal*/
ls_sql = "CREATE TABLE #tmp_objetos_2 (nom_obj varchar(255))"
EXECUTE IMMEDIATE :ls_sql USING SQLCA;

/*Crea Tabla Temporal*/
ls_sql = "CREATE TABLE #tmp_objetos_3 (nom_obj varchar(255))"
EXECUTE IMMEDIATE :ls_sql USING SQLCA;

/*Crea Tabla Temporal*/
ls_sql = "CREATE TABLE #tmp_objetos_4 (nom_obj varchar(255))"
EXECUTE IMMEDIATE :ls_sql USING SQLCA;

INSERT INTO #tmp_objetos_1 ( nom_obj )
select distinct obj.name
from syscolumns col, sysobjects obj
where col.name like '%'+:ls_nombre_col+'%' and
col.id = obj.id and
obj.name like :ls_nombre_objeto USING SQLCA1;

if sqlca1.sqlcode <>0 then
MessageBox( "Error de Sybase" , string( sqlca1.sqldbcode ) + " " + sqlca1.sqlerrtext )
end if

INSERT INTO #tmp_objetos_2 ( nom_obj )
select distinct obj.name
from syscolumns col, sysobjects obj
where col.name like '%'+:ls_nombre_col+'%' and
col.id = obj.id and
obj.name like :ls_nombre_objeto USING SQLCA2;

if sqlca2.sqlcode <>0 then
MessageBox( "Error de Sybase" , string( sqlca2.sqldbcode ) + " " + sqlca2.sqlerrtext )
end if

INSERT INTO #tmp_objetos_3 ( nom_obj )
select distinct obj.name
from syscolumns col, sysobjects obj
where col.name like '%'+:ls_nombre_col+'%' and
col.id = obj.id and
obj.name like :ls_nombre_objeto USING SQLCA3;

if sqlca3.sqlcode <>0 then
MessageBox( "Error de Sybase" , string( sqlca3.sqldbcode ) + " " + sqlca3.sqlerrtext )
end if

Lo importante de este ejemplo no es que hace, sino como lo hace, fijate que puede levantar informacion de cualquier
base de datos y cargarla en una temporal en la conexion SQLCA actual.

Luego puedes crear estas tablas temporales en un ambiente, y pueder armar una Datawindows que te visualicen
los datos como quieras.

Yo lo engaño al power armando una datawindow normalente seleccionado una tabla, luego convierto esa datawindow a syntaxis y le pego el select a al tabla temporal, de esa manera se contruye una datawindow que hace select de una tabla temporal y de varias bases de datos.

Saludos, espero que te sirva.
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:Conectarse a varias Base de Datos

Publicado por BICE (44 intervenciones) el 05/10/2005 00:15:44
GRACIAS A TODOS LO ESTOY PROBANDO CUALQUIER DUDA NUEVAMENTE PREGUNTO. 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