Access - Access 2010 division de BD

 
Vista:

Access 2010 division de BD

Publicado por Elias G. Linderman G. (2 intervenciones) el 14/07/2011 17:44:11
Muy buen dia amigos.

Solicito su ayuda por que la verdad, despues de 3 semanas de busqueda no doy con la solucion.
Les comento mi problema:
Tengo una BD en access que dividí (una parte tablas y otra formularios, reportes, querys) para poder replicarla en 4 equipos, pero resulta que al querer abrir la parte de los formularios, reportes y querys en alguno de los otros 3 equipos me marca el error de base no encontrada en c:\mis documentos\, y es logico, pues los datos estan en otro equipo, pero no encuentro como modificar esa informacion en la parte que contiene solo los formularios, reportes y querys.

Agradezco de antemano su valiosa ayuda y su pronta respuesta a este problema.
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

Access 2010 division de BD

Publicado por 2pl (53 intervenciones) el 14/07/2011 19:36:02
Como lo hago yo:

Private Sub Form_Open(Cancel As Integer)
Dim CAMPO As String
CAMPO = VTACCESS() ' llamo a la funcion
DoCmd.Close

End Sub

Pega esta función en un modulo ---------------------------------------------------------------------

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)
' -------------------------------------------------------------------- 13---- AQUI TIENES QUE PONER LA LONGITUD DEL NOMBRE DE TU TABLA (POR EJEMPLO (TRABAJO.MDE tiene 11)
If ETabla.Connect <> "" And Right(ETabla.Connect, 13) = "TU_BD_DE_TABLAS.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 = "TU_BD_DE_TABLAS" & vbNullChar & "*.mde" & vbNullChar & vbNullChar
of.nFilterIndex = 1
of.lpstrFile = Left$("TU_BD_DE_TABLAS.MDE" & String$(512, 0), 512)
of.nMaxFile = 511
of.lpstrFileTitle = String$(512, 0)
of.nMaxFileTitle = 511
of.lpstrTitle = "Vincular B.D."
of.lpstrInitialDir = "C\TRABAJO\" ' AQUI PONES LO QUE QUIERAS
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

En cada equipo ejecutas este codigo y te saldra un cuadro de dialogo para que busques la ubicacion de la BD de tablas y te quedarán vinculadas para siempre.
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

Access 2010 division de BD

Publicado por Elias G. Linderman G. (2 intervenciones) el 14/07/2011 21:32:14
Muchisisisimas gracias, muy util y suficiente para el problema que tenia.
Quedo en deuda contigo 2pl.
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