Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Los ejemplos estn preparados para Microsoft SQL Server 7.0 pero, haciendo una migracin
posterior a Oracle, me di cuenta que hay muy pocas diferencias.
Yo realizo las transacciones a travs de ODBC, pero s que pueden hacerse a travs de
objetos ADO. Me han dicho que es mucho mejor de esta forma, pero an no la he investigado.
Se supone que ya est instalada la base de datos en un servidor de la red. Lo primero que hay
que hacer es crear un DSN (Data Source Name). Es decir un "vnculo" entre la aplicacin y la
base de datos. Es un nombre para identificar el origen de los datos.
Esto se hace desde el Panel de Control, en el cono Origenes de Datos ODBC (el icono puede
cambiar segn el Windows).
All debe elegirse el tipo de base de datos instalada (Access, MSSQLServer, Oracle, etc) y
crear un nuevo nombre de datos que ser el que utilizaremos para conectar nuestra aplicacin.
En el ejemplo he creado un DNS con el nombre SQLPack, tomando como base el driver de
SQL Server.
El lenguaje SQL
Toda la comunicacin con la base de datos, se hace a travs de un lenguaje conocido como
SQL (Structured Query Language). Este puede variar un poco entre las distintas base de datos,
pero los comando bsicos son 4 y son los que utilizaremos para los ejemplos: seleccionar,
insertar, actualizar y eliminar.
La conexin
El primer paso para hablar con el motor es crear una conexin. Esta es como un cable que
nos permite acceder a toda la informacin disponible en la base de datos.
El comando para crear la conexin es:
nHndl es el nmero de conexin con la base de datos (puede existir ms de una). Identifica
unvocamente a la conexin y es siempre >0 si la conexin fue exitosa.
En caso de error durante el proceso de conexin, tendr un valor negativo.
DataSourceName: nombre del origen de datos con el que creamos a travs del Panel de
Control.
cUserID: nombre del usuario con el que se cre el DSN.
cPassword: clave de acceso del usuario.
IF m.cnx < 1
=MESSAGEBOX(Error de conexin, 16, Error)
RETURN
ENDIF
Ej. 1
La idea es tener una conexin nica a la base de datos, que pueda ser compartida por todos
los usuarios.
Yo no gener una conexin por cada nombre de usuario, sino que a travs de esta nica, una
vez dentro controlo por programa si el usuario est habilitado, si coinciden las claves de
ingreso, los niveles de acceso, etc.
Imagen 1
En el mtodo Click del botn Conectar con la Base de Datos, deberamos incluir el cdigo
de conexin.
Si la conexin fue exitosa, el prximo paso es verificar los datos introducidos en los campos
Usuario y Contrasea.
Para ello utilizaremos el identificador de conexin que nos devolvi el comando SQLCONNECT
y que se encuentra en la variable m.cnx.
Ej. 2
El comando ejecutado es el SQLEXEC, cuya sintaxis es la siguiente:
SQLEXEC(nConnectionHandle, [cSQLCommand, [cCursorName]])
Como decamos con SQLEXEC podemos seleccionar datos, tal como vimos en el ejemplo
anterior, pero tambin podemos insertar nuevos registros en la base de datos:
Ej. 3
Los registros existentes en una tabla de base de datos pueden ser modificados mediante el
comando UPDATE.
Ej. 4
Este ejemplo nos muestra cmo modificar un registro de la tabla usuarios, cambiando el valor
del campo clave solamente para aquel que cumpla con la condicin (WHERE) de que el
nombre de usuario username sea igual al de la variable m.username.
Obviamente, tambin podremos eliminar uno o ms registros que cumplan con una condicin
dada. El comando para esto es DELETE.
m.hndl = SQLEXEC(m.cnx, DELETE FROM usuarios ;
WHERE username = ?m.username)
Ej. 5
Para finalizar una conexin con la base de datos, debemos cerrar la que est actualmente
activa. Esto se realiza con el comando SQLDISCONNECT.
m.hndl = SQLDISCONNECT(m.cnx)
Ej. 6
Si colocamos como parmetro el nmero 0, cerrar todas las conexiones activas. Por ej.:
m.hndl = SQLDISCONNECT(0)
Existen otros comandos relacionados con las propiedades de la conexin que pueden ser
modificados, pero slo los mencionar ya que dependen de cada instalacin para hacer el
ajuste fino.
La ayuda de Visual Fox, es muy clara en cuanto a estos comandos y otros ms relacionados
con las operaciones C/S. Lo que falta es verlo en forma efectiva en ejemplos.
Para ello, adjunto un ejemplo para ver como aplicar lo visto en estas pginas.
Alejandro Beorlegui
abeorlegui@sinectis.com.ar