none
Error: No se pudo encontrar el archivo ISAM Instalable

    Question

  • Hola,  tengo el siguiente código:

    la he probado en otra PC, he actualizado el framework al 3.5 y el error continua; Es importante mencionar que esto trabajaba bien con Access 2000 pero al migrar a 2007 tengo este problema. Mi Pc es con Win Vista X64 y .Net 2008, mi proyecto le he compilado con X86 porque presentaba el Error "Problema de registro Microsoft.ACE.OLEDB.12.0"

    Public

     

    Function IngresoSistema(ByVal usuario As String, ByVal clave As String) As Boolean
      Dim
    resultado As Integer
      Try
          cmd.Connection = conn
          cmd.CommandText =
    "select * from usuarios where nombre='" & usuario & "' and clave='" & clave & "'"
         conn.Open()     
         resultado = cmd.ExecuteScalar
         conn.Close()
      Catch ex As Exception
          MessageBox.Show(ex.Message,
    "Agenda", MessageBoxButtons.OK, MessageBoxIcon.Error)
      Finally
          conn.Close()
      End Try

     

    If resultado = 1 Then Return True Else Return False
    End Function

    *******************
    El error se produce en al abrir la conexion:      conn.Open()
    mi código de conexion es:

     

    Private conexion As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\datos.accdb; persist security info=false;"
    Private conn As New OleDbConnection(conexion)
    Private cmd As New OleDbCommand

    Sunday, December 27, 2009 11:22 PM

Answers

  • Si esa es la cadena de conexión que estás utilizando, entiendo que su sintaxis es correcta, y no te debería de dar el error de "No se pudo encontrar el archivo ISAM Instalable", aunque en el equipo no se encuentre instalado el motor Microsoft ACE, que es el que nos permite trabajar con bases de datos Access 2007.

    Antes de abrir la conexión, inserta la siguiente sentencia, para comprobar que el valor de la cadena de conexión sigue siendo la misma que nos has indicado:

            MessageBox.Show(cnn.ConnectionString)

            cnn.Open()

    Aprovecho el mensaje para comentarte que la sentencia

           resultado = cmd.ExecuteScalar

    tarde o temprano acabará por darte problemas. Te funciona porque con toda seguridad tienes desactivada la instrucción Option Strict, lo que significa que pasarán desapercibidos los errores de conversión de datos.

    Lo correcto sería que activaras la instrucción Option Strict, pero si no lo deseas hacer, al menos convierte a Integer el tipo de dato Object devuelto por el método ExecuteScalar

           resultado = CInt(cmd.ExecuteScalar)

    ya que la variable resultado la tienes definida como Integer.

    Y en cuanto el error de ISAM no instalable que estás obtiendo, me cuesta trabajo pensar que se deba a la cadena de conexión que nos has indicado que utilizas, porque por más pruebas que he hecho con la misma, yo no obtengo dicho mensaje de error, con independencia que la compilación la hayas efectuado para x86, para x64 o para cualquier CPU.

    > la he probado en otra PC, he actualizado el framework al 3.5 y el error continua;

    ¿El error se produce en tu equipo o solamente en el otro PC donde has probado tu aplicación?





    Enrique Martínez [MS MVP - VB]
    • Marked as answer by CarlosCalin Thursday, December 31, 2009 11:30 PM
    Monday, December 28, 2009 6:24 AM

All replies

  • hola

    segun pude ver este error se puede estar generando por algun error en el escritura del connection string

    solo para descartat porque no pones una ruta fija en el connection string para ver si funciona en lugar de usar el Application.StartupPath

    Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccess2007file.accdb;Persist Security Info=False;

    tambien respeta los espacios en el connectionstring

    Connection strings for Access 2007



    - una consulta no has verificado si el Application.StartupPath  no coloca ya una \ al finald e la ruta ?

    usa para probar

    Dim pathaccess As String = Path.Combine(Application.StartupPath, "datos.accdb")


    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Sunday, December 27, 2009 11:47 PM
  • Si esa es la cadena de conexión que estás utilizando, entiendo que su sintaxis es correcta, y no te debería de dar el error de "No se pudo encontrar el archivo ISAM Instalable", aunque en el equipo no se encuentre instalado el motor Microsoft ACE, que es el que nos permite trabajar con bases de datos Access 2007.

    Antes de abrir la conexión, inserta la siguiente sentencia, para comprobar que el valor de la cadena de conexión sigue siendo la misma que nos has indicado:

            MessageBox.Show(cnn.ConnectionString)

            cnn.Open()

    Aprovecho el mensaje para comentarte que la sentencia

           resultado = cmd.ExecuteScalar

    tarde o temprano acabará por darte problemas. Te funciona porque con toda seguridad tienes desactivada la instrucción Option Strict, lo que significa que pasarán desapercibidos los errores de conversión de datos.

    Lo correcto sería que activaras la instrucción Option Strict, pero si no lo deseas hacer, al menos convierte a Integer el tipo de dato Object devuelto por el método ExecuteScalar

           resultado = CInt(cmd.ExecuteScalar)

    ya que la variable resultado la tienes definida como Integer.

    Y en cuanto el error de ISAM no instalable que estás obtiendo, me cuesta trabajo pensar que se deba a la cadena de conexión que nos has indicado que utilizas, porque por más pruebas que he hecho con la misma, yo no obtengo dicho mensaje de error, con independencia que la compilación la hayas efectuado para x86, para x64 o para cualquier CPU.

    > la he probado en otra PC, he actualizado el framework al 3.5 y el error continua;

    ¿El error se produce en tu equipo o solamente en el otro PC donde has probado tu aplicación?





    Enrique Martínez [MS MVP - VB]
    • Marked as answer by CarlosCalin Thursday, December 31, 2009 11:30 PM
    Monday, December 28, 2009 6:24 AM
  • Hola a todos.

    La presente es para agradecerles por la ayuda brindada, con sus aportes y recomendaciones solucione el problema. La verdad no se exactamente donde estuvo el problema porque volvi a rehacer las cadenas de conexion e instrucciones SQL y funcionó. un poco raro pero funcionó.

     

    Gracias nuevamente. hasta la próxima

    Thursday, December 31, 2009 11:36 PM
  • hola Q tal ...

    presente el mismo error de exeption Problema de registro Microsoft.ACE.OLEDB.12.0. trabajo con vista plataforma x64, visual studio 2008 framework 3.5. La solucion que encontre fue configurar la opcion de compilación en las propiedades de mi proyecto a x86 como cpu de destino y aparte viendo la cadena de conexion que Leandro propone le agregue a mi cadena lo que aparece en negrita y listo ...  

    Const CadenaDeConexion = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\BunburyPC\Documents\BS.ACCDB;"

    • Edited by TheVinesJet Friday, November 26, 2010 12:56 AM correccion
    Friday, November 26, 2010 12:47 AM
  • Fantastico tu comentario.

     

    He seguido este foro de cerca x q presentaba el mismo error. le agregue el Data  a la cadena de conexion y listo.

     

    muchas gracias.

    Monday, January 30, 2012 9:01 PM