Vous êtes sur la page 1sur 8

Programación en Power Builder II

Laboratorio Nro. 5

Interfaces de Conexión a Bases de Datos


1. Aquí vamos a trabajar con los diferentes controladores para conectarse a diferentes Bases de datos.
Vamos a conectarnos a tres diferentes bases de datos utilizando diferentes controladores, ademas se
hara uso de objetos transaccion para gestionar la coneccion a las BD.

2. Para este laboratorio se debe tener instalada en la maquina la base de datos Northwind de SQL Server,
la base de datos Neptuno de Access y la base de datos EAS Demo DB V9 de Sybase(ASA).

3. Primero vamos a configurar la conexión a la base de datos Neptuno de Access, para ello realizamos los
siguientes pasos:
El primer paso es crear un origen de datos(datasource) asociado a esta base de datos. Hacer click en
el icono Database, ir al controlador ODB ODBC, desplegar la opcion utilities y a continuación hacer clic
en la opcion ODBC Administrador.

Presionar el botón agregar y en la ventana Crear nuevo origen de datos seleccionar el Driver do Microsoft
Access(*.mdb)
Presiono luego el botón Finalizar para acceder a la ventana de Configuración de ODBC Microsoft Access.

Hacer clic en el botón Seleccionar para seleccionar la base de datos Neptuno en la ruta indicada en la
figura:

Hacer clic en el botón aceptar. Luego en el nombre del origen de datos ingresar Neptuno.
Luego creo el profile asociado al Data Source(fuente de datos) Neptuno, en el controlador ODB ODBC
hacer clic derecho y seleccionar new profile. En el nombre del profile ingresar Neptuno y en la Información
de conexión seleccionar de la lista despegable el data source Neptuno, quitar el check de los campos User
ID y Password, finalmente presionar el boton Apply y luego OK .

Una vez creado el profile hacer clic derecho en el profile(perfil de base de datos) y seleccionar la opción
connect.

4. Luego se va a configurar la conexión a la base de datos EAS Demo DB V9 pero utilizando el


controlador OLE Microsoft OLE DB. Para ello realizamos los siguientes pasos:

Hacer clic derecho en el controlador OLE Microsoft OLE DB y selecciono new profile. Aquí van a
ingresar los siguientes datos como se muestra en la figura:
Finalmente hacer clic en el boton Apply y OK.

5. Luego vamos a configurar la conexión a la base de datos Northwind de SQL Server (se asume que la
PC donde se trabaja debe tener instalado las herramientas del SQL Server 7.0 ó 2000. Para ello
realizamos los siguientes pasos:

Hacer clic derecho en el controlador MSS Microsoft SQL Server y seleccionar new profile. Aquí se van a
ingresar los siguientes datos como se muestra en la figura:

6. Luego vamos a crear un archivo INI. Un archivo ini es un archivo de texto con extensión .ini donde se
puede configurar los parámetros para conectarse a una base de datos. En este archivo escribir el texto
mostrado en la figura, grabar el archivo con el nombre profile.ini
7. Vamos a crear una ventana llamada w_transaccion, donde se van insertar un control dw y 4 botones de
comando tal como se muestra en la figura.

cb_1 Name cb_sqlserver


Text &Conexión SQLServer

cb_2 Name cb_oledb


Text &Conexión OLE DB

cb_3 Name cb_odbc


Text &Conexión ODBC

cb_4 Name cb_ini


Text &Archivo INI

cb_5 Name cb_salir


Text &Salir

8. Finalmente vamos a crear los siguientes datawindows:

- d_grid_clientes_northwind: De tipo grid asociado a la tabla Customer de la BD Northwind en


SQL Server.
- d_grid_clientes_easdemo: De tipo grid asociado a la tabla Customer de la BD EAS DEMO DB
V9 en Adaptative Server Anywhere.
- d_grid_clientes_neptuno: De tipo grid asociado a la tabla Clientes de la BD Neptuno en Access.
9. Luego procedemos a codificar los eventos de los objetos creados:

Primero declaramos en la opcion variables globables dos objetos de tipo transaccion tal como se
muestra en la figura adjunta.

Objeto Aplicación
Evento open

//Vamos a crear dos objetos transacción

// Conexion a la BD "Neptuno" en ACCESS


ltr_trans1 = CREATE transaction

ltr_trans1.DBMS = "ODBC"
ltr_trans1.AutoCommit = False
ltr_trans1.DBParm = "ConnectString='DSN=Neptuno;UID=admin;PWD=admin'"

// Conexion a la BD "Northwind" en SQL SERVER


ltr_trans2 = CREATE transaction

ltr_trans2.DBMS = "MSS Microsoft SQL Server 6.x"


ltr_trans2.Database = "Northwind"
ltr_trans2.LogPass = "sql"
ltr_trans2.ServerName = "COMPUTO"
ltr_trans2.LogId = "sa"
ltr_trans2.AutoCommit = False
ltr_trans2.DBParm = ""
connect USING ltr_trans2;

open(w_transaccion)

Control cb_sqlserver
Evento clicked

//Aqui nos vamos a conectar a la tabla clientes de la BD Northwind utilizando un objeto transacción
//ltr_trans2

DISCONNECT;

CONNECT USING ltr_trans2;

dw_1.Reset()
dw_1.DataObject = 'd_grid_clientes_northwind'
dw_1.SetTransObject(ltr_trans2)
dw_1.Retrieve()
Control cb_oledb
Evento clicked
DISCONNECT;

//Para la conexion via OLE DB pego el codigo de la conexion en el boton(aunque podria tambien
//conectarme creando un objeto transaccion.

DISCONNECT;

// Profile EAS Demo DB V9 OLE


SQLCA.DBMS = "OLE DB"
SQLCA.LogPass = "sql"
SQLCA.LogId = "dba"
SQLCA.AutoCommit = False
SQLCA.DBParm = "PROVIDER='ASAProv',DATASOURCE='EAS Demo DB V9 '"
CONNECT;

IF SQLCA.SQLCode <> 0 THEN


MessageBox('Error de conexion'+string(SQLCA.SQLCode),SQLCA.SQLErrtext)
Return
ELSE
MessageBox('Aviso','Conexión conforme')
dw_1.Reset()
dw_1.DataObject = 'd_grid_clientes_easdemo'
dw_1.SetTransObject(sqlca)
dw_1.Retrieve()
END IF

Control cb_odbc
Evento clicked

DISCONNECT;

CONNECT USING ltr_trans1;

//Aqui nos vamos a conectar a la tabla clientes de la BD Neptuno utilizando otra vez un objeto
//transacción ltr_trans1

dw_1.Reset()
dw_1.DataObject = 'd_grid_clientes_neptuno'
dw_1.SetTransObject(ltr_trans1)
dw_1.Retrieve()
Control cb_ini
Evento clicked

DISCONNECT;

string ls_archivo, ls_seccion

ls_archivo = "C:\lab_5\profile.ini"
ls_seccion = "SQLCA"

SQLCA.DBMS = ProfileString(ls_archivo,ls_seccion,"DBMS","")
SQLCA.Database = ProfileString(ls_archivo,ls_seccion,"Database","")
SQLCA.LogPass = ProfileString(ls_archivo,ls_seccion,"LogPass","")
SQLCA.ServerName = ProfileString(ls_archivo,ls_seccion,"ServerName","")
SQLCA.Logid = ProfileString(ls_archivo,ls_seccion,"LogID","")
SQLCA.AutoCommit = False

CONNECT;

IF SQLCA.SQLCode <> 0 THEN


MessageBox('Error de conexion'+string(SQLCA.SQLCode),SQLCA.SQLErrtext)
Return
ELSE
MessageBox('Aviso','Conexión conforme')
dw_1.Reset()
dw_1.DataObject = 'd_grid_clientes_northwind'
dw_1.SetTransObject(sqlca)
dw_1.Retrieve()
END IF

Control cb_salir
Evento clicked

Close(parent)

Vous aimerez peut-être aussi