Esta vez abordaremos la forma de crear una conexion a MS Sql Server, para ello contruiremos una clase que nos permita hacer eso. Con lo que pondremos en practica la forma de crear clases en Visual Foxpro asi como tambien como hacer una conexion a un Motor de Bases de datos Sql Server. Esta clase podria ser el punto de partida para tener una plantilla de codigo que en el futuro nos permita conectarnos a diversos motores de base de datos Sql Server(FireBird, Postgre, o el popular Mysql).
Lo primero que debemos de hacer es crear una biblioteca de clase, para hacer esto hacemos clic en la pestaña de clases en el administrador de proyecto.
Hacemos clic en new(nuevo) para crear una nueva biblioteca de clases, en el cuadro class name establecemos el nombre de la clase. En la parte donde dice Based On seleccionamos la lista y hacemos clic en personalizado (Custom) ver figura # 1.
Figura #1. Cuadro de Dialogo New Class.
Como siguiente paso crearemos la biblioteca de clases donde guardaremos nuestra clase personalizada, hacemos clic en el botón de tres puntos que se encuentra junto al rectángulo Store in vea figura #2.

dialogo newclass
Figura #2. Cuadro de Dialogo New Class Donde se Muestra el Boton de tres puntos para activar el cuadro de dialogo Guardar Como.
Cuando nos aparezca el cuadro de dialogo guardar como, escribimos el nombre de la biblioteca y hacemos clic en guardar ver figura # 3.
Figura #3. Cuadro de Dialogo Guardar Como. Aqui es donde Ponemos el Nombre de la biblioteca de clases (datamanage).
Una vez creada la biblioteca de clase procederemos a crear el código de la clase que nos va a permitir la conexión a Sql Server y que podría servirnos en el futuro para tener conectividad a distintos motores de bases de datos. Para que eso sea posible tendríamos que agregar las opciones que nos permitan conectarnos a otros Motores Sql Server: entre ellos tenemos FireBird Sql Server o Mysql Server.
Cuando guardamos la biblioteca de clases, posteriormente nos aparece el diseñador de clases, esta ventana es donde se puede crear el código que se va a encapsular en la clase, ver figura #4
Figura #4. Ventana del diseñador de clases
Seleccionamos el objeto datamanage, este nombre fue el que se le estableció cuando creamos la clase.
Para crear un método para la clase, hacemos clic en el menú Class, y en New Method, en la ventana New Method establecemos el nombre de método a create_connect, este método se va a utilizar para crear una cadena de conexión y a la vez establecer una conexión a Sql Server, al crear el método este se lista como uno mas de la lista de propiedades de la clase. Hagamos clic con el botón derecho en el objeto datamanage y seleccionemos propiedades en la pestaña de Métodos busquemos el metodo create_connect y hagamos doble clic en el para abrir la ventana de código, una vez echo esto copiemos el siguiente código en la ventana de código del objeto datamanage para el método citado (create_connect)
1. camino = FULLPATH('conexion.txt')
2. IF FILE(camino) && verificar si el archivo existe?
3. gnErrFile = FOPEN(camino,12)&&si es así,abrir para leer y escribir
4. sserver = FGETS(gnErrFile)
5. sdatabase = FGETS(gnErrFile)
6.sconnexion="Driver={SQLServer};Server=";
+sserver+";Database="+sdatabase+";Uid=sa;Pwd=sa;"
7. lcString = Sqlstringconnect(sconnexion,.T.)
8. this.handle_conn = lcString
ENDIF
Veamos la figura #5, la cual contiene el código descrito anteriormente.

metodo Create_connect
Figura#5. Ventana de Codigo del metodo create_connect
Explicación de las Instrucciones del método create_connect
En la instrucción 1, se devuelve la ruta completa del archivo conexión.txt en el directorio actual, si el archivo se encuentra se abre para lectura o escritura, esto se hace en las instrucciones 2 y 3.
Las instrucciones 4 y 5 leen la primera y segunda línea de texto del archivo conexión.txt y los guardan en la variables respectivas que se corresponden con el nombre del servidor y la base de datos a la cual queremos conectarnos.
La instrucción 6 crea una cadena de conexión al motor Sql Server, tomando como parámetros el nombre del servidor, el cual esta en la variable sserver, el nombre de la base de datos, que se encuentra en la variable sdatabase.
En la instrucción 7, mandamos a ejecutar la conexión a una fuente de datos utilizando la cadena de conexión, si la conexión se establece se retorna un valor entero positivo, de lo contrario se retorna -1
Por ultimo hacemos que el manejador de conexión que obtenemos al ejecutar la instrucción 7, lo asignamos a la propiedad handle_conn, en el párrafo siguiente explicamos como se crea esta propiedad.
Ahora vamos a crear una propiedad para la clase la cual deberíamos haber hecho antes de crear el método, para hacer esto regresamos al menú class y hacemos clic en New Property establecemos su nombre a handle_conn, también establecemos las propiedades Acces_Method y Assign_Method, en default inicial value establecemos el valor 0.
Utilización de la Clase en un formulario
Para ello creamos un formulario.
Agregamos un Botón de comando y escribimos las siguientes instrucciones:
- SET CLASSLIB TO datamanage ADDITIVE
- oconn = CREATEOBJECT("Datamanage")
- oconn.create_connect
- ssql = "SELECT num_cuota,num_credito FROM pr.pr_plan_pagos "
- ssql = ssql + " WHERE num_credito = 1 ;"
- SQLEXEC(oconn.handle_conn,ssql,'pla_pagos')
- SELECT plan_pagos.* FROM plan_pagos
Explicación de las instrucciones anteriores
La primera instrucción abre una biblioteca de clases sin cerrar ninguna biblioteca que se encuentre abierta actualmente.
La segunda crea un objeto del tipo de la clase, este objeto nos permite utilizar los métodos y propiedades contenidos en la clase. En conceptos de programación orientada a Objetos la instrucción numero 2 lo que hace es una instancia de la clase Datamanage.
La tercera instrucción manda a ejecutar el metodo str_conexion el cual crea la conexión a Sql Server.
En la sexta instrucción se utiliza la propiedad handle_conn la cual contiene el manejador de conexión que se crea al ejecutar la instrucción 3.
Las instrucciones 4 y 5 crean una cadena de consulta que se va a mandar a ejecutar con la instrucción 6. En la instrucción 6, el procedimiento SQLEXEC toma tres parámetros, el primero de ellos es el manejador que se creo cuando se ejecuto la instrucción 3, el segundo parámetro es la cadena de consulta que se va a ejecutar, y el tercer parámetro es el nombre del conjunto de resultados, es ago similar a un cursor que puede ser manejado con instrucciones propias de Visual FoxPro.
Bueno eso seria todo por hoy les queda como tarea crear un método que nos permita cerrar la conexión y en el metodo create_connect una instrucción que cierre el archivo conexión.txt.