martes, 3 de junio de 2014

Conectar una base de datos Sql Server con ODBC

Hola, en este segmento te voy a mostrar como poder conectarte a una tabla de una base de datos que se encuentra en Sql Server, utilizando la forma de conexión por ODBC, para realizar una consulta.

Para poder conectar una base de datos que se encuentra en Sql Server, mediante ODBC utilizando el lenguaje de Visual Basic 6.0 debes de hacer lo siguiente:

Selecciona “Proyecto” en el menú principal de opciones del lenguaje de Visual Basic 6.0; después selecciona la opción denominada “Referencias”.

Te presenta una ventana el cual buscaras y seleccionaras la referencia denominada “Microsoft Remote Data Object 2.0” y la seleccionaras, en seguida presiona el botón de “Aceptar”.

Después posiciona tu cursor en medio de la ventana de formulario y entra a tu área de código, realizando doble click en el formulario que  ya tienes presente y listo para la creación de tu conexión ODBC con una base de datos ubicada en Sql Server.

Una vez que te encuentras en tu area de trabajo o área de código, ve al principio o inicio de tu área de de trabajo en donde se encuentran las declaraciones, ahí copia lo siguiente:

Option Explicit
Dim oEnn As rdoEnvironment
Dim oRnn As rdoConnection

Crea una variable oEnn para crear un objeto remoto que permitirá realizar una conexión remota.
Crea una variable oRnn para crear un objeto que permita hacer conexión remota con la base de datos a la cual te vas a conectar.

Después en tu formulario pero en el área de diseño de pantalla indica la etiqueta y una cuadricula utilizando el control MSFLEXGRID.

A tu etiqueta indícale el nombre de “Consulta de datos”, el grid proporciona el tamaño según los campos que indicarás, para este efecto lo ubico debajo de la etiqueta y le doy un ancho de izquierda a derecha de tal forma que pueda yo apreciar la información que se me presenta en cada columna.

El nombre del grid en este caso lo llamare “msgPers”

Después creó un botón de comando que me permita realizar la carga y presentación de la información en el grid, el cual lo llamare “Carga de Datos”.

Vuelve a entrar a tu área de trabajo y copia el siguiente código que  te indico:

En primera instancia crea una función, en este caso yo lo hice poniéndole el nombre de “vsCargaDatosOdbc”, después creo dos variables denominadas strConnect como un string y oRs como un recordset

Function vsCargaDatosOdbc() As Boolean
    Dim strConnect As String
    Dim oRs As rdoResultset
   
Indica una salida de error para cualquier eventualidad de fallo de conexión externo, que te ofrecerá una salida sin complicaciones, aún cuando no se haya efectuado la conexión.

    On Error GoTo vError
 
En seguida captura el string de conexion que te permitirá conectarte a la base de datos indicada.
En donde  “Driver={SQL Server}”, es el provider odbc que el lenguaje utiliza como motor de conexión o sea que medio estamos utilizando para conectarnos, de hecho si lo haces con otro tipo de motor esta parte cambia.

Server=SYSMEREDID, en esta parte se le indica a que servidor me estoy conectando y que es donde se encuentra mi Sql Server.

Database=Cafeterias, es el nombre de la base de datos a la que me voy a conectar y que se encuentra dentro de Sql Server.

Username=sa, capturar el nombre de usuario.

PWD= , si cuenta con una contraseña o password, es aquí donde se le debe indicar.

De tal forma que el string de conexión queda de la siguiente manera:
 
strConnect = "Driver={SQL Server}; server=SYSMEREDID;database=Cafeterias;Username=sa;PWD=;"
   
A continuación se crean los objetos oEnn, oRnn y el objeto oRs, además se ejecuta el objeto oRnn para indicar un tiempo límite en el que hará conexión para ello utilizamos la instrucción “Querytimeout = 600”.

    Set oEnn = rdoEngine.rdoEnvironments(0)
    Set oRnn = oEnn.OpenConnection(dsname:="", prompt:=rdDriverNoPrompt, ReadOnly:=False, _  Connect:=strConnect)
    oRnn.QueryTimeout = 600

La creación del objeto oRs es muy importante ya que es aquí donde se le indica que consulta se va a efectuar, es aquí donde le indicamos los campos, y la tabla a consultar, después le indicamos como traeremos o como se realizara dicha consulta.
   
    Set oRs = oRnn.OpenResultset(Name:="Select pers_usuario,pers_idusuario,pers_passw,pers_nombre,pers_appaterno,pers_apmaterno From caf_personal", _
        Type:=rdOpenForwardOnly, LockType:=rdConcurReadOnly, Options:=rdExecDirect)
       

Una vez que ya estamos conectados con la base de datos y ya efectuamos la consulta a una tabla en particular, preparamos nuestro grid con los campos que se solicitaron en la consulta a la tabla denominada “CAF_PERSONAL”.

    With msgPers
        .Clear
        .Rows = 2
        .FormatString = "Clave|Id. Usuario|Contraseña|Nombre|Ap. Paterno|Ap. Materno"
        .ColWidth(0) = 100
        .ColWidth(1) = 500
        .ColWidth(2) = 700
        .ColWidth(3) = 1200
        .ColWidth(4) = 1200
        .ColWidth(5) = 1200
    End With
   
    Después solo vaciamos el contenido de la información, resultado de la consulta realizada anteriormente en el grid “msgPers”, note como es cargado cada campo “oRs”, en cada celda del grid.

    Do While Not oRs.EOF
        msgPers.Col = 0
        msgPers.Text = oRs("pers_usuario")
        msgPers.Col = 1
        msgPers.Text = oRs("pers_idusuario")
        msgPers.Col = 2
        msgPers.Text = oRs("pers_passw")
        msgPers.Col = 3
        msgPers.Text = oRs("pers_nombre")
        msgPers.Col = 4
        msgPers.Text = oRs("pers_appaterno")
        msgPers.Col = 5
        msgPers.Text = oRs("pers_apmaterno")
        oRs.MoveNext
        If Not oRs.EOF Then
            msgPers.Rows = msgPers.Rows + 1
            msgPers.Row = msgPers.Row + 1
        End If
    Loop
   
Una vez que se ha cargado el grid, le indicamos que el ejercicio se realizo con exito por lo que le indicamos True o verdadero al nombre de la función ya que le regreso un dato booleano como indicación del resultado de dicho ejercicio; seguido del cierre de los objetos utilizados para tal efecto que son oRs, oRnn y oEnn, para después terminar la función con exit function.
  
    vsCargaDatosOdbc = True
    oRs.Close
    oRnn.Close
    oEnn.Close
   
    Exit Function
   
Esta es la parte donde el programa utilizará para absorber el error de falla de conexión, en donde le doy indicación de falso ya que no se efectuó la conexión y dando a la vez una salida que permita que el programa no falle, sino simplemente de una manera elegante presente un medio para indicar que la conexión no se realizo sin que truene o se corte la ejecución del programa.     

vError:
    vsCargaDatosOdbc = False
End Function


Nos vemos hasta la próxima, espero que este código de ejemplo les sea de utilidad.

No hay comentarios:

Publicar un comentario