RE:problema definición path por defecto
Hola de nuevo,
he pegado tu código. Reconoce el path pero al final no conecta con la B.Datos. Desde luego tu código es mucho más sencillo que el que te dieron originalmente.
Lo que he hecho es:
En el formulario de inicio:
Private Sub Form_Open(Cancel As Integer)
On Error GoTo ErrorOpen
Dim campo As String
'Call OcultaBotonesDatabase
'Call OcultaTodasLasBarrasDeHerramientas
'Call OcultaWINDOWSDatabase
Me.RecordSource = "TABLA_INICIAL" 'Una de mis tablas
ErrorOpen:
Msgbox err
‘esto es para saber que primero me da err 2580, ejecuta VTACCESS, vuelve,
‘me da err 0 y luego err 20 –supongo que este quiere decir que no he conectado
‘ porque desde un botón abro un formulario de la aplicación que accede a una
'tabla que no encuentra-
If Err = 3024 Or Err = 3043 Or Err = 3044 Or Err = 2580 Then
campo = VTACCESS()
End If
Resume Next
End Sub
En módulo:
Function VTACCESS() As Boolean
MsgBox "comienza función VTACCESS"
Dim ActualDB As Database
Dim ETabla As TableDef
Dim ModuloServidorFile As String
Dim Contador As Integer
ModuloServidorFile = Application.CurrentProject.Path & "\Base_Datos.mdb"
MsgBox ModuloServidorFile 'aquí he comprobado que sale ok
If ModuloServidorFile <> "" Then
VTACCESS = True
Set ActualDB = CurrentDb()
For Contador = 0 To ActualDB.TableDefs.Count - 1
Set ETabla = ActualDB.TableDefs(Contador)
'----------------------------------------------------------------------------
' Aqui tienes que poner la longitud y nombre completo de tu BD
'----------------------------------------------------------------------------
If ETabla.Connect <> "" And Right(ETabla.Connect, 14) = "Base_Datos.mdb" Then
ETabla.Connect = ";DATABASE=" & ModuloServidorFile
Err = 0
ETabla.RefreshLink
If Err <> 0 Then
MsgBox "La conexión con el Módulo Servidor ha sido insatisfactoria." & _
Chr(13) & Chr(10) & Chr(13) & Chr(10) & "'" & ModuloServidorFile & _
"' no contiene la tabla '" & ETabla.SourceTableName & "' requerida por la aplicación.", _
vbCritical + vbOKOnly, "Conexión con el Servidor"
VTACCESS = False
Exit For
End If
End If
Next Contador
Else
MsgBox "La conexión con el Módulo Servidor ha sido cancelada.", vbCritical + vbOKOnly, "Conexión con el Servidor"
VTACCESS = False
End If
End Function
---> además, no saltan los mensajes de "conexión insatisfactoria ... ni ... cancelada"
¿se te ocurre porqué no conecta? En teoría, si todo va bien, durante toda la sesión tengo la B.Datos accesible? Desde ese formulario INICIO pulso un botón para llamar (openform) al menú principal, que ya accede a varias tablas (bueno, "debería acceder", pero no la encuentra).
Saludos,
Álvaro