none
Como puedo hacer que mi programa en VB pueda correr en otra pc utilizando una BD en Access RRS feed

  • Pregunta

  • buenas a todos,

    disculpen tengo una duda, que se necesita o como se le hace para que mi programa de VB y mi BD puedan funcionar en otra pc que no sea la mia

    estuve leyendo y creoq ue se necesita que solo este el access instalado en la otra pc para que funcione el ejetutable

    apenas la voy empezar a hacer pero queiro hacer las cosas bien desde un principio

    domingo, 2 de septiembre de 2018 19:00

Todas las respuestas

  • Hola Jesús:

    No es necesario que Access esté instalado en tu cliente. Para ello existen los componentes redistribuibles que proporciona Microsoft. Simplemente instalando el componente según la versión que tengas del sistema operativo ya estaría.

    https://www.microsoft.com/es-es/download/details.aspx?id=13255

    Ahora bien, es posible que en caso de que tu usuario tenga instalado Access, tu versión no se corresponda con la del usuario, por ello, hay varios componentes redistribuibles para solucionarlo.

    Te pongo un ejemplo de los componentes que te puede solicitar tu instalación en el usuario.

     Private Shared Sub VersionAInstalarDeAccess()
    
            ' Obtener la versión del motor de Access que hay que instalar.
            Dim versionAccess As VersionProveedorACE = MicrosoftAceHelper.VersionAccessParaInstalar()
    
            ' Si la versión es distinta de VersionProveedorACE.None, procedemos a su instalación.
            If (versionAccess <> VersionProveedorACE.None) Then
    
                Dim CrLf As String = Environment.NewLine
                Dim msg As String = String.Empty
                Dim respuesta As DialogResult
    
                If (versionAccess = VersionProveedorACE.Access2007x32) Then
                    msg = "Se requiere que se encuentre instalado el Componente redistribuible del " &
                          "motor de base de datos correspondiente a Microsoft Access 2007 de 32 bits."
    
                ElseIf (versionAccess = VersionProveedorACE.Access2010x32) Then
                    msg = "Se requiere que se encuentre instalado el Componente redistribuible del " &
                          "motor de base de datos correspondiente a Microsoft Access 2010 o superior " &
                          "de 32 bits."
    
                ElseIf (versionAccess = VersionProveedorACE.Access2010x64) Then
                    msg = "Se requiere que se encuentre instalado el Componente redistribuible del " &
                          "motor de base de datos correspondiente a Microsoft Access 2010 o superior " &
                          "de 64 bits."
                End If
    
                respuesta = MessageBox.Show(msg & CrLf & CrLf & "¿Quiere proceder a su instalación?",
                                            "Financial System", MessageBoxButtons.OKCancel, MessageBoxIcon.Information)
    
                If (respuesta = DialogResult.OK) Then
                    Try
                        Dim exited As Boolean = InstallAccessDatabaseEngine(versionAccess)
                        If (exited) Then
                            msg = "El proceso de instalación del motor de Access finalizó correctamente." & CrLf &
                                  "Pulse para continuar."
                        End If
    
                    Catch ex As Exception
                        msg = "Error en instalación del motor Access Database.'" & CrLf & ex.Message & CrLf &
                              "Acepte para continuar."
                    End Try
    
                    MessageBox.Show(msg, "Tu programa", MessageBoxButtons.OK, MessageBoxIcon.Information)
    
                End If
    
            End If
    
        End Sub

    Con ello detectas la versión del componente a instalar. Por otro lado, queda muy bien ante tu cliente que sepa de donde o como descargar el mismo, yo para ello, utilizo una carpeta en que tengo los instaladores de Access alojada en mi servidor, cambia lo que necesites y con eso ya tienes la idea de como hacerlo.

     Private Shared Function InstallAccessDatabaseEngine(version As VersionProveedorACE) As Boolean
    
            ' El método se encargará de instalar la versión redistribuible de los Componentes del
            ' motor de base de datos de Access que se corresponda con la versión especificada.
            '
            Dim rutaEjecutable As String = Application.StartupPath
    
            If (version = VersionProveedorACE.Access2007x32) Then
                ' rutaEjecutable = IO.Path.Combine(rutaEjecutable, "http://www.xxxxxxxx.es/Instaladores/InstalacionMotorAccess/AccessDatabaseEngine07.exe")
                rutaEjecutable = IO.Path.Combine(rutaEjecutable, "InstalacionMotorAccess\AccessDatabaseEngine07.exe")
    
            ElseIf (version = VersionProveedorACE.Access2010x32) Then
                'rutaEjecutable = IO.Path.Combine(rutaEjecutable, "http://www.xxxxxxxxx.es/Instaladores/InstalacionMotorAccess/AccessDatabaseEngine.exe")
                rutaEjecutable = IO.Path.Combine(rutaEjecutable, "InstalacionMotorAccess\AccessDatabaseEngine.exe")
    
            ElseIf (version = VersionProveedorACE.Access2010x64) Then
                'rutaEjecutable = IO.Path.Combine(rutaEjecutable, "http://www.xxxxxxxxxx.es/Instaladores/InstalacionMotorAccess/AccessDatabaseEngine_X64.exe”)
                rutaEjecutable = IO.Path.Combine(rutaEjecutable, "InstalacionMotorAccess\AccessDatabaseEngine_X64.exe”)
    
            End If
    
            Dim exited As Boolean
    
            Using proces As New Process()
                proces.StartInfo.FileName = rutaEjecutable
                proces.Start()
                proces.WaitForExit()
                exited = proces.HasExited
            End Using
    
            Return exited
    
        End Function

    Bueno, con eso creo que solucionas tu problema del Access.

    Un saludo.

    Gemma



    lunes, 3 de septiembre de 2018 6:05
  • No hace falta tener el Access instalado en la máquina de destino. Es suficiente con tener instalado el driver de OleDb para Access, que es una descarga gratuita (a diferencia del Access, que es de pago). Hay dos drivers distintos: el JET Engine (que solo funciona con archivos .mdb y en 32 bits) y el ACE (que funciona con .mdb y .accdb y lo hay en 32 y 64 bits). Ojo con los bits, tienen que concordar con tu programa, es decir, si tu programa se ejecuta en 64 bits hace falta instalar el ACE de 64 bits, mientras que si tu programa se ejecuta en 32 bits hay que instalar el driver de 32 bits.
    lunes, 3 de septiembre de 2018 6:10