Buongiorno, mi scuso per il tempo che è passato, purtroppo ho avuto problemi di salute in famiglia e ho mollato tutto per un po'.
Ecco il codice originale che allega le tabelle:
Function AllegaTabelle() As Boolean
Const NOT_EXISTENT_TABLE As Integer = 3011, DATABASE_NOT_FOUND As Integer = 3024, DATABASE_READ_ONLY As Integer = 3027, TABLE_USE_EXCLUSIVE As Integer = 3045, ACCESS_DENIED As Integer = 3051, TABLE_ON_OTHER_DATABASE As Integer = 3078
Dim DB As Database, NumTabella As Integer, DatabaseFile As String, ValRestituito As Variant, Tabella As TableDef
On Error Resume Next
AllegaTabelle = False
Set DB = CurrentDb()
NumTabella = 1
DatabaseFile = CurrentProject.Path & "\" & Left(CurrentProject.Name, Len(CurrentProject.Name) - 4) & "_Dati" & Right(CurrentProject.Name, 4)
CreaRelazione (DatabaseFile)
ValRestituito = SysCmd(SYSCMD_INITMETER, "Si stanno allegando tutte le Tabelle", DB.TableDefs.Count)
For Each Tabella In DB.TableDefs
If Tabella.Connect <> "" Then
Tabella.Connect = ";DATABASE=" & DatabaseFile & ";TABLE=" & Tabella.SourceTableName
Err.Clear
Tabella.RefreshLink
If Err <> 0 Then
If Err = NOT_EXISTENT_TABLE Then
MsgBox "La Tabella """ & Tabella.SourceTableName & """ non è stata trovata nel Database.", vbCritical + vbOKOnly + vbMsgBoxSetForeground + vbApplicationModal, "Operazione interrotta"
ElseIf Err = DATABASE_NOT_FOUND Then
MsgBox "Il Database non è stato trovato.", vbCritical + vbOKOnly + vbMsgBoxSetForeground + vbApplicationModal, "Operazione interrotta"
ElseIf Err = DATABASE_READ_ONLY Then
MsgBox "Impossibile riallegare le Tabelle. Il Database è di sola lettura o si trova in una directory condivisa di sola lettura.", vbCritical + vbOKOnly + vbMsgBoxSetForeground + vbApplicationModal, "Operazione interrotta"
ElseIf Err = TABLE_USE_EXCLUSIVE Then
MsgBox "Impossibile riallegare le Tabelle. Il Database è già in uso per un'operazione di aggiornamento, riprovare più tardi.", vbCritical + vbOKOnly + vbMsgBoxSetForeground + vbApplicationModal, "Operazione interrotta"
GoTo Uscita
ElseIf Err = ACCESS_DENIED Then
MsgBox "Impossibile aprire: Accesso negato al Database.", vbCritical + vbOKOnly + vbMsgBoxSetForeground + vbApplicationModal, "Operazione interrotta"
ElseIf Err = TABLE_ON_OTHER_DATABASE Then
MsgBox "La Tabella """ & Tabella.Name & """ è da collegare con un altro Database.", vbCritical + vbOKOnly + vbMsgBoxSetForeground + vbApplicationModal, "Operazione interrotta"
ElseIf Err <> 0 Then
MsgBox "Impossibile collegarsi al Database, in quanto bloccato, danneggiato o inesistente.", vbCritical + vbOKOnly + vbMsgBoxSetForeground + vbApplicationModal, "Operazione interrotta"
End If
GoTo Uscita
End If
End If
Salta:
NumTabella = NumTabella + 1
ValRestituito = SysCmd(SYSCMD_UPDATEMETER, NumTabella)
Next Tabella
AllegaTabelle = True
Uscita:
ValRestituito = SysCmd(SYSCMD_REMOVEMETER)
Set Tabella = Nothing
Set DB = Nothing
If Not AllegaTabelle Then Chiudi ("Database")
DoCmd.Maximize
End Function
Inizialmente avevo sostituito CurrentProjectPath con E: in modo che leggesse i dati dall'usb, fin qui OK
Ma ora vorrei che controllasse E: se non lo trova che controllasse su C: