Credo tu abbia troppe cose che non tornano nel complesso, e questo rende estremamente difficile interagire.
Allora, ti ho già detto che il COMPACTREPAIR NON LO DEVI USARE...! E' chiaro questo concetto...???
Bene, eliminalo...
Ora detto ciò, mi spieghi perchè ti aspetti che la funzione Relink debba e possa restituire un valore diverso da False...?
Una function restituisce un valore se, tu lo imposti, altrimenti Relink restituisce il valore che per Default assume una Variabile Boolean... che è ovviamente falso.
Function Relink(fdati As String) As Boolean
On Error Goto Err_Relink
Dim tdf As DAO.TableDef
Dim strPATH As String
' questo sotto è un esempio statico... tu dovrai scrivere:
' strPATH=CurrentProject.Path & "\NomeBE.mdb"
strPATH="C:\Percorso\NomeBE.mdb"
For Each tdf In DBEngine(0)(0).TableDefs
If Len(tdf.Connect) > 0 Then
tdf.Connect = ";DATABASE=" & strPATH
tdf.RefreshLink
End If
Next
Relink=True
Exit_Here:
Exit Function
Err_Relink:
MsgBox Err.Number & Err.Description
Relink=False ' Questa non serve(la variabile vale già FALSE, ma è per farti capire...)
End Function
Ora non so cosa fosse questa
tdf.Connect = fdati ' ";DATABASE ....."
ma di certo così non andrà mai...
Cerca di capire cosa stai facendo altrimenti perdiamo tempo inutilmente.
Questo sopra FUNZIONA senza altro codice, e senza pensare a cose assurde... devi solo sostituire la stringa del PATH con il tuo Percorso