Access - problema definición path por defecto

 
Vista:

problema definición path por defecto

Publicado por Alvaro (8 intervenciones) el 03/05/2010 11:58:59
No consigo llegar a saber cómo puedo poner un path por defecto (no todo el path sino que acceda al mdb de base de datos en el mismo directorio donde tenga el mdb de programas) . Tengo una aplicación en Access 2003 con VBA, con un mdb para Programas y otro mdb para la B.Datos. Todo lo que quiero es que, cuando paso ambos a otro PC (los dos mdb en el mismo directorio) el mdb de Programas acceda al mdb de B.Datos sin tener que,cada vez, vincularla.
Ya sé que apppath no funciona en esta versión (es CurrentProject.Path, CurrentProject.Name, ...fullname y CurrentDb.Name, para conocer la información de base). Pero ¿qué debo hacer ahora? También me he definido un módulo "inicial" que accedo desde el programa "inicial" pero no consigo poner el código correcto.
¿alguien puede ayudarme?
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:problema definición path por defecto

Publicado por jose luis (136 intervenciones) el 03/05/2010 15:02:36
Mira la respuesta de kk_pp de 23/04/2010 a la pregunta VINCULAR TABLAS yo lo solucione modificando ese codigo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema definición path por defecto

Publicado por Alvaro (8 intervenciones) el 04/05/2010 12:34:28
Vaya! ya he visto tu lucha. Supongo que, al final, lo has solucionado. Voy a empezar a hacer tus mismos pasos. A ver qué pasa!
Gracias,
Álvaro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema definición path por defecto

Publicado por jose luis (136 intervenciones) el 04/05/2010 14:51:56
si no lo consigues dimelo y te mando mi solucion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema definición path por defecto

Publicado por JOSE LUIS (136 intervenciones) el 04/05/2010 15:00:35
Necesitas un form de inicio que no cargue ninguna tabla, yo uso uno de presentacion del programa que con un timer lo quito a los 5 seg. en el evento open tengo el siguiente codigo:

On Error GoTo ErrorOpen
Dim campo As String
Call OcultaBotonesDatabase
Call OcultaTodasLasBarrasDeHerramientas
Call OcultaWINDOWSDatabase
Me.RecordSource = "Inicio" 'Una de mis tablas
ErrorOpen:
If Err = 3024 Or Err = 3043 Or Err = 3044 Then
campo = VTACCESS()
End If
Resume Next

y luego en un modulo

Function VTACCESS() As Boolean
Dim ActualDB As Database
Dim ETabla As TableDef
Dim ModuloServidorFile As String
Dim Contador As Integer
ModuloServidorFile = Application.CurrentProject.Path & "\GNE_Datos.mdb"
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, 13) = "GNE_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

Si necesitas los codigos para cerrar la ventana de base de datos y quitar la barra de herramientas dimelo.

Un saludo desde Albacete.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema definición path por defecto

Publicado por Alvaro (8 intervenciones) el 04/05/2010 19:06:30
Gracias José Luis, empecé por lo que te dijeron a tí y, bueno, hay cosillas que me estaban parando, ej mis códigos de err son 2580, 0 y 20 en vez de 3024, 3043 y 3044, luego en "Dim of As OPENFILENAME" ‘ me sale “no se ha definido el tipo definido por el usuario”. Antes de seguir por ahí voy a "calcar" tu código y ver que pasa. Te cuento algo.

Muchas gracias por tu interés; estoy seguro que, al final, lo conseguiré[mos]
Álvaro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema definición path por defecto

Publicado por Alvaro (8 intervenciones) el 04/05/2010 20:14:16
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
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
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema definición path por defecto

Publicado por Alvaro (8 intervenciones) el 04/05/2010 20:39:01
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
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema definición path por defecto

Publicado por JOSE LUIS (136 intervenciones) el 04/05/2010 20:57:56
Vamos a ver el form Inicio no tienes origen de datos ninguna tabla y ademas lo tienes en opciones de inicio como el de arranque?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema definición path por defecto

Publicado por Alvaro (8 intervenciones) el 06/05/2010 11:04:14
Sí, ese form INICIO lo tengo como el de arranque y no tiene ninguna tabla. Como el tuyo (supongo) es una ventana para el acceso inicial. Solo tiene -de momento- un botón para, una que se haya ejecutado el Open Form y el módulo, pulsar ese botón para ejecutar el "Menú Principal" (que ya accede a alguna tabla).
Todo aparenta ir bien pero, cuando pulso ese botón, me dice que no encuentra la tabla (no ha conectado con el mdb de B.Datos).

Álvaro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema definición path por defecto

Publicado por jose luis (136 intervenciones) el 06/05/2010 15:41:32
A mi me funciona correctamente, te vuelvo a copiar mi código por si acaso.
En el evento OpenForm del formulario de Inicio

Private Sub Form_Open(Cancel As Integer)
On Error GoTo ErrorOpen
Dim campo As String
Me.RecordSource = "Inicio"
ErrorOpen:
If Err = 3024 Or Err = 3043 Or Err = 3044 Then
campo = VTACCESS()
End If
Resume Next
End Sub

En el modulo:

Function VTACCESS() As Boolean
Dim ActualDB As Database
Dim ETabla As TableDef
Dim ModuloServidorFile As String
Dim Contador As Integer
ModuloServidorFile = Application.CurrentProject.Path & "\GNE_Datos.mdb"
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, 13) = "GNE_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

no te puedo decir mas yo lo copie, lo retoque y me funciona.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema definición path por defecto

Publicado por Alvaro (8 intervenciones) el 06/05/2010 20:16:46
Hola José Luis,

Ya lo he comprobado y está igual.
Yo creo que no estoy conectando con la mdb de B.Datos, en ningún momento porque:
1.- El Err que me da cuando no encuentra la primera tabla (en el Form_Open) es el 2580 (y no alguno de Err = 3024 Or Err = 3043 Or Err = 3044). No sé si estosinifica algo.

2.- En el módulo, el "Contador" me da 5 y si creo una nueva tabla en el mdb de Formularios (no el de B.Datos) me pone 6. Además el ETabla.Connnect sale siempre vacío.

Solo una cosa, ¿me podrías decir qué versión de Access y VBA estás usando? No sé si tendrá relación, pero no se me ocurre otra cosa.

Gracias por todo, ya estoy más cerca.

Álvaro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema definición path por defecto

Publicado por jose luis (136 intervenciones) el 06/05/2010 21:52:25
Buenas
la version de Access es 2003-SP3
la de Visual Basic 6.3

que tengas suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema definición path por defecto

Publicado por jose luis (136 intervenciones) el 06/05/2010 21:57:55
dame tu e-mail y te mando el ejemplo que me mando 2pl que lo he encontrado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema definición path por defecto

Publicado por Alvaro (8 intervenciones) el 07/05/2010 11:24:07
Ok, mi mail es acvttemp arroba terra.es
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema definición path por defecto

Publicado por Jefferson (135 intervenciones) el 07/05/2010 22:12:02
Hola Alvaro

Porque no pruebas asi

http://sites.google.com/site/jjjt1973/Home/re-vincular-las-bases-de-datos-back-end-y-front-end

Desde Venezuela
Jefferson
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar