none
Bases de datos de Access en Windows Vista RRS feed

  • Pregunta

  • Hola, buenas tardes a todos, bien, miren estoy desarrollando un programa en vb .NET 2005, estoy utilizando una base de datos de access con una tabla de 5 campos, estoy utilizando el control DataGridView y un boton.

    El código del botón no me marca ningun error, al ejecutarlo pulso el boton para que me muestre los datos de la base y no lo hace, me manda un mensaje que dice: El proveedor 'Microsoft.Jet.OLEDB.4.0' no está registrado en el equipo local.

    El código es el siguiente:

    Public Class Form1

     

         Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

     

              Me.PersonalTableAdapter.Fill(Me.EmpleadosDataSet.Personal)

     

         End Sub

     

         Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

     

              Dim Conjunto_de_Datos As DataSet1

              Conjunto_de_Datos =

    New dataset1()

     

              Me.OleDbConnection1.Open()                'En esta linea muestra el mensaje

     

              Me.OleDbDataAdapter1.Fill(Conjunto_de_Datos)

              DataSet11.Clear()

              DataSet11.Merge(Conjunto_de_Datos)

     

         End Sub

    End

     

    Class

    Durante el diseño hice una prueba de conexión y no tuve problemas, alguien podría ayudarme, el programa corre sin problemas en XP, pero en Vista es donde tengo el, problema.

    jueves, 17 de junio de 2010 18:25

Respuestas

  • ¿Es un Vista de 64 bits? Si es así, el problema es que no existe JET Engine de 64 bits, sino solo de 32. Por eso en XP te funciona, y por eso la prueba de conexión desde Visual Studio también te funciona (porque el Visual Studio es de 32 bits).

    El remedio es compilar el programa en modo "x86" en lugar de compilarlo para "Any CPU", que es el valor predeterminado.

     

    • Marcado como respuesta Anubis II viernes, 13 de agosto de 2010 0:07
    jueves, 17 de junio de 2010 19:59
  • hola

    es que falta el Close de la conexion al final, despues de usar el objeto

    Private Sub Button1_Click(ByVal  sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


        Dim Conjunto_de_Datos As New DataSet1

        Me.OleDbConnection1.Open()               

        Me.OleDbDataAdapter1.Fill(Conjunto_de_Datos)
        DataSet11.Clear()
        DataSet11.Merge(Conjunto_de_Datos)

        Me.OleDbConnection1.Close()

    End Sub

    es mas si usa el DataAdapter no necesitas abrir y cerrar la conexion, usando

    Private Sub Button1_Click(ByVal  sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim Conjunto_de_Datos As New DataSet1
                
        Me.OleDbDataAdapter1.Fill(Conjunto_de_Datos)
        DataSet11.Clear()
        DataSet11.Merge(Conjunto_de_Datos)

    End Sub

     

    tambien funciona porque internamente el OleDbDataAdapter1 abre y cierra la conexion

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta Anubis II viernes, 13 de agosto de 2010 0:07
    viernes, 18 de junio de 2010 3:09

Todas las respuestas

  • ¿Es un Vista de 64 bits? Si es así, el problema es que no existe JET Engine de 64 bits, sino solo de 32. Por eso en XP te funciona, y por eso la prueba de conexión desde Visual Studio también te funciona (porque el Visual Studio es de 32 bits).

    El remedio es compilar el programa en modo "x86" en lugar de compilarlo para "Any CPU", que es el valor predeterminado.

     

    • Marcado como respuesta Anubis II viernes, 13 de agosto de 2010 0:07
    jueves, 17 de junio de 2010 19:59
  • Gracias Alberto, buenas noches, mira ya compile como me sugeriste en modo "x86", pero ahora en la misma línea donde aparecía el error anterior me aparece otro mensaje que dice:

         Me.OleDbConnectio1.Open()           'La conexión no se cerró. El estado actual de la conexión es abierta.

    viernes, 18 de junio de 2010 2:23
  • hola

    es que falta el Close de la conexion al final, despues de usar el objeto

    Private Sub Button1_Click(ByVal  sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


        Dim Conjunto_de_Datos As New DataSet1

        Me.OleDbConnection1.Open()               

        Me.OleDbDataAdapter1.Fill(Conjunto_de_Datos)
        DataSet11.Clear()
        DataSet11.Merge(Conjunto_de_Datos)

        Me.OleDbConnection1.Close()

    End Sub

    es mas si usa el DataAdapter no necesitas abrir y cerrar la conexion, usando

    Private Sub Button1_Click(ByVal  sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim Conjunto_de_Datos As New DataSet1
                
        Me.OleDbDataAdapter1.Fill(Conjunto_de_Datos)
        DataSet11.Clear()
        DataSet11.Merge(Conjunto_de_Datos)

    End Sub

     

    tambien funciona porque internamente el OleDbDataAdapter1 abre y cierra la conexion

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta Anubis II viernes, 13 de agosto de 2010 0:07
    viernes, 18 de junio de 2010 3:09
  • mil gracias, y mil perdones, por una inperdonable omisión se me paso responder a tu comentario, mil gracias.

    no quisiera decir esto, pero, felicidades por su triunfo en el mundial sobre mi queridisimo pais "MEXICO" hasta la sigueinte

    • Marcado como respuesta Anubis II viernes, 13 de agosto de 2010 0:07
    • Desmarcado como respuesta Anubis II viernes, 13 de agosto de 2010 0:07
    jueves, 15 de julio de 2010 18:27