Mostrando entradas con la etiqueta oledb. Mostrar todas las entradas
Mostrando entradas con la etiqueta oledb. Mostrar todas las entradas

domingo, 11 de septiembre de 2011

Conectar una base de datos de Access con Visual Basic.Net

Por: Víctor M. Saldaña Núñez
Sugiero que para las acciones de conexión a una base de datos siempre se realicen mediante una función, ya que de esta manera solo se ejerce la conexión, se efectúa el acceso y se lleva a cabo la solicitud deseada, se realiza en ese momento el proceso y después se cierra la conexión. Si es una consulta la información traída será guardada en una tabla o un DataSet que permitirá ser entregado como resultado de salida para después poder trabajar con la información contenida en cualquier otro evento que así se indique o se necesite, veamos el siguiente ejemplo:
En declaraciones generales poner:
 Imports System
 Imports System.Data
 Imports System.Data.OleDb
 Imports System.Windows.Forms

Después crear la siguiente función que permitirá traer un conjunto de registros:

Function clsLlenaCombo(ByVal pstrTipo As String, ByVal pstrSql As String, ByVal pNomTabla As String) As DataSet
        Dim oCnn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\Sicso\DbSicso\practica.mdb;Jet OLEDB:Database Password=IS345ABV;")
        Dim dsDatos As New DataSet

        Try
            oCnn.Open()
            If pstrTipo = "CargaDatos" Then
                Dim oCmd As New OleDbDataAdapter(pstrSql, oCnn)
                oCmd.Fill(dsDatos, pNomTabla)
            End If

        Catch ex As Exception
            Throw New Exception(ex.Message)
        Finally
            oCnn.Close()
            oCnn.Dispose()
            oCnn = Nothing
        End Try

        clsLlenaCombo = dsDatos

End Function
Y cargar los datos en un evento en el que podría encontrarse el siguiente código:
Dim dsEnt As DataSet
      Dim strSql As String

'*** Carga combo de Entidad
        strSql = "Select vEnt_Cve, vEnt_NombreEnt from sicso_Entidad"
        dsEnt = clsPrin.clsLlenaCombo("CargaDatos", strSql, "Entidad")
        cboEnt.DataSource = dsEnt.Tables("Entidad")
        cboEnt.DisplayMember = dsEnt.Tables("Entidad").Columns(1).ToString
        cboEnt.ValueMember = dsEnt.Tables("Entidad").Columns(0).ToString

o en su defecto si se desea traer solo los datos de un registro o un en su defecto un dato en especial podrá efectuarlo de la siguiente manera:
Function vsBuscador(ByVal pstrCadena As String, ByVal pstrClave As String) As Boolean
        Dim Ocnn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Sicso\DbSicso\practica.mdb;Jet OLEDB:Database Password= IS345ABV;")
        Dim Ocmd As New OleDbCommand
        Dim strCad As String
        Dim blnResultado As Boolean
        Try
            strCad = pstrCadena & pstrClave & "'"
            Ocmd = New OleDbCommand(strCad, Ocnn)
            Ocnn.Open()
            blnResultado = Ocmd.ExecuteScalar
            Return blnResultado

        Catch ex As Exception
            Throw New Exception(ex.Message)

        End Try
Y cargar los datos en un evento en el que podría encontrarse el siguiente código:
Public Function vsVerificaDatos(ByVal pOpcion As String, ByVal pstrUsuario As String, ByVal pstrContrasena As String) As String

Dim oCmd As New OleDbCommand
Dim strVerifica As String
Dim strSql As String

If pOpcion = "TraeUsuario" Then
strSql = "Select vUsua_NomEmp From Sicso_Usuario "
strSql = strSql & "Where vUsua_Nombre ='" & pstrUsuario & "' and "
strSql = strSql & "vUsua_Contrasena = '" & pstrContrasena & "'"
oCmd = New OleDbCommand(strSql, oCnn)
Else
            strVerifica = ""
End If
oCnn.Open()
strVerifica = oCmd.ExecuteScalar
vsVerificaDatos = strVerifica
End Function


Conectar una base de datos de Access con Visual Basic 6.0.

Escrito por: Víctor M. Saldaña Núñez
La forma de poder hacer conexión a una base de datos de Access con Visual basic es utilizando su motor de ADO de la siguiente manera:
Cuando estamos trabajando con Visual Basic ver. 6.0 , es importante hacer referencia a:
Microsoft ActiveX Data Objects 2.1 Library o en su defecto a  Microsoft ActiveX Data Objects 2.5 Library o en su defecto a Microsoft ActiveX Data Objects 2.6 Library.
Para esto seleccionaremos en el menú principal del lenguaje en la opción “Proyecto”, aparecerá el submenú y seleccionará la opción “Referencias”, les presentará una ventana donde se encontraran con las referencias que ya están seleccionadas mostrándose con una paloma en un cuadrito al principio y después las referencias que no están seleccionadas se mostraran con un cuadrito en blanco.
Una vez que se ha activado el acceso a esta referencia entonces ya se puede efectuar la creación de las variables que formaran parte en el proceso de conexión como son:
En el área de generales, poner abajo del option explicit lo siguiente:
Dim oCnn as new Adodb.Connection
Dim oRs as new Adodb.Recordset

Puedes realizarlo creando una función o un procedimiento de conexión exclusivamente, el siguiente ejemplo que indicare se efectuará en base a un procedimiento el cual cada vez que se desee crear la conexión solo se le llamará a este procedimiento. Para esto, deberá contener las siguientes instrucciones:
Sub sConecta()
strConex = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Textra\DbTextra\Hextras.mdb;Jet OLEDB:Database Password=heper2008"
    On Error GoTo Cierra_Conex
    With cnnConec
        .ConnectionString = strConex
        .ConnectionTimeout = 300
        .Open
        strMensaje = "Conectado"
        strRespuesta = MsgBox(strMensaje)
        Exit Sub
    End With
   
Cierra_Conex:
    Set cnnConec = Nothing
End Sub

El procedimiento “sConecta”, toma los datos del proveedor que se va a utilizar para abrir la conexión que en este caso es Microsoft.Jet.OLEDB.4.0; este permitirá abrir los archivos de Access 2000, 2003. El Proveedor Microsoft.Jet.OLEDB.3.5 permitirá abrir los archivos de Access 95 y 97, esto se dio de esta forma ya que según se fue avanzando y mejorando, Microsoft fue actualizando su proveedor de conexión para este tipo de archivo. Actualmente para hacer conexión a un archivo Access 2007 se utiliza con el siguiente Proveedor “Microsoft.ACE.OLEDB.12.0
Una vez que se tiene el procedimiento “sConecta”, puedes efectuar el acceso a una tabla dada de la base de datos conectada, efectuando por ejemplo una consulta, como se muestra en el siguiente ejemplo.

Private Sub cmdConsulta_Click()
   Call sConecta
    strSql = "Select * from hext_catper order by cper_nombrec"
    rsDato.Open strSql, cnnConec, adOpenDynamic, adLockOptimistic
    With rsDato
        .MoveFirst
        intNum = 0
        cboDatos.Clear
        cboDatos.AddItem ""
        cboDatos.ItemData(cboDatos.NewIndex) = intNum
        Do Until .EOF
            intNum = intNum + 1
            cboDatos.AddItem .Fields("cper_NombreC") & Space(10) & "|" & .Fields("cper_clave")
            cboDatos.ItemData(cboDatos.NewIndex) = intNum
            If .EOF Then
                Exit Do
            Else
                .MoveNext
            End If
        Loop
        rsDato.Close
        Set rsDato = Nothing
        Exit Sub
    End With
End Sub