Access - VINCULAR TABLAS

 
Vista:

VINCULAR TABLAS

Publicado por jose luis (136 intervenciones) el 23/04/2010 19:39:37
Saludos.
tengo una aplicacion (monousuario) con dos archivos XXX.mde y XXX_Datos.mdb, quisiera saber como hacer para que si cambio la aplicacion de directorio o de unidad no me de el error que no encuentra las tablas y tenga que volver a vincularlas, el programa irá siempre junto con los datos.
Hay alguna manera de vincular las tablas en el mismo directorio que está la aplicación.
He buscado por la red y no encuentro nada.
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:VINCULAR TABLAS

Publicado por kk_PP (11 intervenciones) el 23/04/2010 20:49:22
Te cuento como lo hago yo.... supongo que habrá otras formas
dim CAMPO as string ' para la llamada a la función VTACCESS()

Private Sub Form_Open(Cancel As Integer)
On Error GoTo ErrorOpen
Me.RecordSource = "GAD GPFIC01" 'una de mis tablas que si no la encuentra te sale un cuadro de dialogo para que la busques donde proceda y mientra no cambies de sitio la aplicación, no te saldrá el cuadro de dialogo.
ErrorOpen:
If Err = 3024 Or Err = 3043 Or Err = 3044 Then
CAMPO = VTACCESS()
End If
Resume Next
End Sub

En un módulo tengo estas dos funciones

Function VTACCESS() As Boolean

Dim ActualDB As Database
Dim ETabla As TableDef
Dim ModuloServidorFile As String
Dim Contador As Integer

ModuloServidorFile = OpenFileAccesos()

If ModuloServidorFile <> "" Then
VTACCESS = True
Set ActualDB = CurrentDb()
For Contador = 0 To ActualDB.TableDefs.Count - 1
Set ETabla = ActualDB.TableDefs(Contador)
If ETabla.Connect <> "" And Right(ETabla.Connect, 12) = "GESPERBD.MDE" 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

Private Function OpenFileAccesos() As String

Dim of As OPENFILENAME

of.hwndOwner = Application.hWndAccessApp
of.hInstance = 0
of.lpstrCustomFilter = 0
of.nMaxCustrFilter = 0
of.lpfnHook = 0
of.lpTemplateName = 0
of.lCustrData = 0
of.lpstrFilter = "GESPERBD" & vbNullChar & "*.mde" & vbNullChar & vbNullChar
of.nFilterIndex = 1
of.lpstrFile = Left$("GESPERBD.MDE" & String$(512, 0), 512) ' La tuya
of.nMaxFile = 511
of.lpstrFileTitle = String$(512, 0)
of.nMaxFileTitle = 511
of.lpstrTitle = "Vincular B.D."
of.lpstrInitialDir = "F:\PROGRAM\ACCESS 2002\" ' Cambialo a tu gusto
of.lpstrDefExt = ""
of.flags = OFN_EXPLORER + OFN_FILEMUSTEXIST + OFN_NOCHANGEDIR + OFN_PATHMUSTEXIST + OFN_HIDEREADONLY
of.lStructSize = Len(of)

If GetOpenFileName(of) Then
OpenFileAccesos = Trim(Left$(of.lpstrFile, InStr(of.lpstrFile, vbNullChar) - 1))
Else
OpenFileAccesos = ""
End If

End Function
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:VINCULAR TABLAS

Publicado por Jefferson (9 intervenciones) el 24/04/2010 02:43:27
Hola Jose Luis

Mira esta Pagina

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

RE:VINCULAR TABLAS

Publicado por Jose Luis (136 intervenciones) el 24/04/2010 10:09:00
Garcias kk_PP y Jefferson.

Las soluciones que me aportais las veo muy complicadas, resulta que deje este tema para el final porque pense que era algo muy sencillo y veo que se esta complicando la cosa. No se si me explique bien.

Tengo una aplicación casi terminada se llama GNE.mdb, como quiero distribuirla y por si hago alguna actualización no quiero que los clientes pierdan los datos dividí la aplicación en programa, forms, consultas, informes, etc en GNE.mde y los datos en GNE_Datos.mdb, cuando un cliente la instale en su PC, unos la colocarán en (por ejemplo C:\Mis Documentos\GNE\, otros en D:\GNE\, o donde cada uno quiera) desearia que el programa siempre cogiera los datos de GNE_Datos.mdb de la ubicación donde este GNE.mde y no tengan que indicarle al programa donde se encuentra.

La aplicación no llevará programa de instalación, simplemente se copiaran los archivos a la carpeta que cada cliente desee.

Desde ya muchisimas gracias.

Desde Albacete-España
Jose Luis
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:VINCULAR TABLAS

Publicado por 2pl (1 intervención) el 24/04/2010 17:29:04
Jose Luis, esta es la configuración que yo utilizo y que me funciona correctamente:
BD1.mdb con las tablas, que convierto a mde cuando distribuyo la aplicación.

BD2.mdb con los demas objetos (formularios,consultas,informes etc....) a la que vinculo los datos de BD1.mde (esta la BD de desarrollo que cuando la distribuyo la convierto a BD2.mde y asi no me podrán tocar los objetos.

Las posteriores modificaciones siempre las haré sobre BD2.mdb y volveré a convertir en BD2.mde para pasarla a los usuarios.

La BD1.mde solo se le pasa a los usuarios la primera vez, salvo que tengas que cambiar alguna configuración de las tablas, en cuyo caso tendrás que hacerlo sobre cada una de las BD de cada usuario, pues cada uno tendrá datos diferentes y estos hay que salvaguardarlos.

Suponte que tu tienes la aplicacion en C:\PERSONAL\BD1.mde y que has vinculados sus tablas desde esa dirección a BD2.mdb... con las funciones que te indique y adaptando los nombres a los de tu aplicación, no tendrás problema ya que cuando el usuario corra la aplicación (montada por ejemplo en F:\MI APLICACION ) por primera vez, le pedira que le diga donde esta la BD1.mde y a currar.

Lo que indica Jefferson, es más profesional pero algo más complicadillo.
Espero haberte ayudado. Un saludo
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:VINCULAR TABLAS

Publicado por jose luis (136 intervenciones) el 24/04/2010 19:18:41
Saludos 2PL.
Imagino que tu explicacion es la de kk_PP.
La estoy probando, he pegado todo como me dices, no me funciona pero es que tengo una duda con -Dim CAMPO as string- donde lo coloco, de momento estoy con mdb que hasta que no termine no creare mde, en F:PROGRAM\Acees 2002 he puesto la ruta de MSACCESS.EXE no se si lo hago bien.
Muchas gracias por tu interes.
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:VINCULAR TABLAS

Publicado por 2pl (11 intervenciones) el 24/04/2010 20:00:57
Private Sub Form_Open(Cancel As Integer)
On Error GoTo ErrorOpen
------- aqui mismo----- es una variable para la llamada a la función

CAMPO=VTACCESS()
Mi correo es antperlopARROBAono.com por si no lo consigues y quieres mandarme la BD , te lo miro yo.
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:VINCULAR TABLAS

Publicado por jose luis (136 intervenciones) el 24/04/2010 20:18:48
2pl no lo consigo, renombro el directorio y me sale el mensaje de ACCESS que la ruta original no es una ruta válida.
el codigo al evento open lo pongo en el formulario menu que es el que cargo cuando arranco la aplicacion.
alguna idea
Posdata. ¿Que coño hacemos programando un sábado?
Gracias
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:VINCULAR TABLAS

Publicado por 2pl (11 intervenciones) el 24/04/2010 20:30:09
Dime tu correo, que te mando un ejemplo
Esto es un vicio y ayudar, más todavia.
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:VINCULAR TABLAS

Publicado por 2PL (11 intervenciones) el 24/04/2010 22:26:57
El correo que me has dado, me rebota los mensajes.
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:VINCULAR TABLAS

Publicado por jose luis (136 intervenciones) el 24/04/2010 23:29:24
te envio un emilio a la direccion que me diste.
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