Access - Vinculos

 
Vista:

Vinculos

Publicado por Manuel (268 intervenciones) el 16/06/2005 18:25:56
Saludios a todo el Foro.

Mi pregunta es si existe forma de omitir el error que arroja access al no estar las tablas vinculadas, me explico, tengo un bd con tablas vinculadas a otra bd, en el caso de que la bd principal se cambie de posicion, nombre, o se borre, access arroja un error donde dice que no se encuentra el archivo. He realisado una funcion para verificar si los vinculos estan bien, pero la he colocado en el formulario de inicio en el evento al abrir y no la ejecuta ya que access al parecer realiza primero la comprobacion. Trate de eliminar las advertencias primero, pero no ejecuta los eventos del form, primero verifica el origen de datos.

Espero haberme explicado y que me puedan ayudar.

Saludos
Manuel
Venezuela
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:Vinculos

Publicado por 2pl (773 intervenciones) el 16/06/2005 19:01:24
en el evento al abrir del formulario principal que tengas pon:
Private Sub Form_Open(Cancel As Integer)
On Error GoTo ErrorOpen
Exit Sub

ErrorOpen:
If Err = 3024 Or Err = 3044 Then
If ConectarServidor() Then
Resume
End If
Else
MsgBox Err & " | " & Error, vbCritical + vbOKOnly, "Conexión con el Servidor"
End If
Resume Next

End Sub

COPIATE LAS DOS FUNCIONES SIGUIENTES EN UN MODULO GENERAL Y CAMBIA EN LA SEGUNDA COB dta POR EL NOMBRE DE TU BD

Function ConectarServidor() As Boolean

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

ModuloServidorFile = OpenFile()

If ModuloServidorFile <> "" Then
ConectarServidor = True
Set ActualDB = CurrentDb()
For Contador = 0 To ActualDB.TableDefs.Count - 1
Set EnlazarTabla = ActualDB.TableDefs(Contador)
If EnlazarTabla.Connect <> "" Then
EnlazarTabla.Connect = ";DATABASE=" & ModuloServidorFile
Err = 0
EnlazarTabla.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 '" & EnlazarTabla.SourceTableName & "' requerida por la aplicación.", vbCritical + vbOKOnly, "Conexión con el Servidor"
ConectarServidor = 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"
ConectarServidor = False
End If

End Function

***** CAMBIA COB dta POR TU BASE DE DATOS

Private Function OpenFile() 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 = "COB Dta" & vbNullChar & "*.mde" & vbNullChar & vbNullChar
of.nFilterIndex = 1
of.lpstrFile = Left$("COB Dta.mde" & String$(512, 0), 512)
of.nMaxFile = 511
of.lpstrFileTitle = String$(512, 0)
of.nMaxFileTitle = 511
of.lpstrTitle = "Conectar servidor"
of.lpstrInitialDir = "C:\COB"
of.lpstrDefExt = ""
of.flags = OFN_EXPLORER + OFN_FILEMUSTEXIST + OFN_NOCHANGEDIR + OFN_PATHMUSTEXIST + OFN_HIDEREADONLY
of.lStructSize = Len(of)

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

End Function

Saludos desde Cádiz
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

para 2pl

Publicado por Manuel (268 intervenciones) el 17/06/2005 18:15:21
Tengo problemas con la declaracion del of as openfilename, me falta la referencia, tienes idea de cual es.

Por otro lado en la funcion openfile, coloco el nombre de la base de datos que contiene las tablas?

Saludos
Manuel
Venezuela
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:para 2pl

Publicado por 2pl (773 intervenciones) el 17/06/2005 19:36:24
Perdona Manuel, se me habia olvidado enviarte lo siguiente, que debes meter en ese modulo

Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Boolean

Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As Long
nMaxCustrFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustrData As Long
lpfnHook As Long
lpTemplateName As Long
End Type
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

No funciona

Publicado por Manuel (268 intervenciones) el 17/06/2005 19:55:01
La funcion corre, ya no tengo problemas de definicion de tipo, pero lo que quiero es que al abrir el form principal ejecute esa funcion antes de arrojarme un error. Me sigue dando el error de access, se que la funcion esta correcta, el problema es que al parecer antes de ejecutar el evento al abrir busca el origen de las tablas.

Estoy trabajando en access 2003.

saludos
Manuel
venezuela
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:No funciona

Publicado por 2pl (773 intervenciones) el 17/06/2005 22:07:16
La función solo daria el error cuando no encontrase las tablas, supongo que habras puesto en el evento al abrir del formulario lo que te dije.
Saludos
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:No funciona

Publicado por Manuel (268 intervenciones) el 20/06/2005 19:42:14
Si puse lo que me mandaste, pero no ejecuta la funcion, primero da el error.
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:No funciona

Publicado por 2pl (773 intervenciones) el 21/06/2005 16:09:07
Lo unico que puedo hcer por ti, es que me mandes la BD y veré qu es lo que pasa.
Si la envias, mandala a [email protected]
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:Vinculos

Publicado por manuela (2 intervenciones) el 07/10/2005 14:03:57
Buenos días, tengo un grave problema en access, he pasado una base de datos a otro ordenador y cuando voy a pedir los listados me aparece el mensaje 3044 ó otro no se qué número es pero me indica que la ruta de acceso no es valida, qué puedo hacer.
MUCHAS 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