Power Builder - Doble conexión.

   
Vista:

Doble conexión.

Publicado por guido (38 intervenciones) el 05/02/2016 21:56:48
Hola.
Miren tengo un sistema que ya trabajo con oracle, pero ahora necesito hacer que este sistema también pueda conectarse a SqlServer2008 y que jale datos para poder llevarlos a oracle. Ayúdenme con ejemplos por favor.
Saludos.
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 Adolfo

Doble conexión.

Publicado por Adolfo (70 intervenciones) el 06/02/2016 15:25:18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//Declarar en varialbe global o de instancia
transaction sqlca2
 
//Y en el open de la window
sqlca2 = Create transaction
 
// conectamos a la bd
SQLCA2.DBMS = "ODBC"
SQLCA2.AutoCommit = True
SQLCA2.DBParm = "ConnectString='DSN=HRMSSYS;UID=ACHAIREZ;PWD=CHAIREZ'"
Connect using sqlca2;
 
// en close de la ventana o del proyecto
disconnect using sqlca2;
destroy sqlca2


Hasta aqui es un segundo canal de comunicación. Si vas a recuperar información de servidor SqlServer2008 seria asi:
1
SELECT Cli_Cliente, Cli_Nombre INTO :ls_cli_cliente, :ls_nom_cliente FROM Clientes WHERE Cli_Estado = 1 USING sqlca2;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Doble conexión.

Publicado por guido (38 intervenciones) el 08/02/2016 16:31:04
Gracias por tu respuesta. Quisiera saber como hacer para recuperar varios registros de la bd, son marcaciones de asistencia del día, y colocarlos en un dw?? Imagino que meterlos en variables y luego se pasa al dw pero necesito una idea. 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
Imágen de perfil de Adolfo

Doble conexión.

Publicado por Adolfo (70 intervenciones) el 09/02/2016 15:19:57
Es posible crear una DW que recupera datos de la 2a base de datos. En tiempo de diseño debes de crear un nuevo Profile de conexión y diseñar tu DW y cuando ya estes en desarrollo debes de hacer esto:

1
2
3
Integer li_cia
dw_datos.settransobject(sqlca2)
dw_datos.retrieve(li_cia )

No veo la necesidad de hacer lo que pides pero sin embarqo el equivalente a lo anterior seria:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Integer li_cia , li_id
Long ll_i
String ls_nombre
 
DECLARE cur_detalle CURSOR FOR
SELECT emp_id, emp_nombre FROM empleados
          WHERE emp_cia = :li_cia USING sqlca2;
OPEN cur_detalle;
 
if sqlca.sqlcode = -1 then
	messagebox("Error","No se pudo ejecutar la query busca datos~r~n"+sqlca2.sqlerrtext)
	return
end if
DO
	FETCH cur_detalle INTO :li_id, :li_nombre;
	if sqlca.sqlcode = 0 then
             ll_i = dw_datos.rowcount() + 1
             dw_datos.insertrow(ll_i)
             dw_datos.setitem(ll_i,"id", li_id)
             dw_datos.setitem(ll_i,"nombre",ls_nombre)
        end if
LOOP WHILE sqlca.sqlcode = 0
CLOSE cur_detalle;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Doble conexión.

Publicado por guido (38 intervenciones) el 09/02/2016 21:32:36
Gracias por tu respuesta.
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