Ricollegamento tabelle con BE protetto

di il
2 risposte

Ricollegamento tabelle con BE protetto

Ciao e grazie in anticipo a chi vorrà rispondere.

Ho la necessità di ri-collegamento delle tabelle in una configurazione front-end (FE) back-end (BE) in cui quest'ultimo DB è protetto da password.
L'apertura del BE avviene regolarmente utilizzando la seguente funzione
=========
Dim db As Database
Set db = OpenDatabase(PERCORSODB, False, False, "; pwd=" & PROTEPSW)
=========
fornendo opportunamente i parametri PERCORSODB e PROTEPSW !
Il problema di presenta quando debbo ricollegare le tabelle del BE (protetto) al FE

===============
Function RICOLLEGA_LOC(PAT As String)
'Riconnette le tabelle da db locale Access dopo averle cancellate
On Error GoTo Erro

Dim db As Database
Dim rs As Recordset
Dim TBLname As String
Dim SEPARATORE As Integer
Dim PROTE As Boolean
Dim PROTEPSW As String

PROTE = DLookup("Protezione_DB", "PARAMETRI")
PROTEPSW = DLookup("PSW_DB", "PARAMETRI")

DoCmd.SetWarnings False
DoCmd.Hourglass True
If PROTE = -1 Then 'Controlla se il Db da collegare e protetto e lo apre senza ricollegare
Set db = OpenDatabase(PAT, False, False, "; pwd=" & PROTEPSW)
End If
Set rs = CurrentDb.OpenRecordset("TABELLE_COLLEGATE")
rs.MoveFirst
While Not rs.EOF
CurrentDb.TableDefs.Delete rs!Name
DoCmd.TransferDatabase acLink, "Microsoft Access", PAT, acTable, rs!Name, rs!Name, False, True
rs.MoveNext
Wend

ESCI:
rs.Close
DoCmd.SetWarnings True
DoCmd.Hourglass False
DoCmd.SelectObject acTable, , True
DoCmd.RunCommand acCmdWindowHide

Esci2:
DoCmd.SetWarnings True
DoCmd.Hourglass False
Exit Function

Erro:
MsgBox Err.Description
Resume Esci2
End Function
============================
A questo punto riesco a sbloccare il db con
Set db = OpenDatabase(PAT, False, False, "; pwd=" & PROTEPSW)
ma poi non riesco a proseguire per errori vari nelle espressioni successive quale
Set rs = CurrentDb.OpenRecordset("TABELLE_COLLEGATE")
dove mi da errore run time 3734 (il database è stato messo... in uno stato che non consente di aprirlo o sbloccarlo
Se modifico l'espressione in
Set rs = db.OpenRecordset("TABELLE_COLLEGATE")
da errore run time 3078 (impossibile trovare la tabella "TABELLE_COLLEGATE", che invece è disponibile!

Dove sbaglio?

Grazie di nuovo a chi vuole aiutarmi

Ciao
Giulio

2 Risposte

  • Re: Ricollegamento tabelle con BE protetto

    Se vuoi leggere questo:
    "masterdrive.it/microsoft-access-79/msaccess-gestione-relink-table-101119/"
  • Re: Ricollegamento tabelle con BE protetto

    Ri-eccomi ho capito dov'era l'errore e come risolverlo
    In breve, occorre lavorare su due db: il BE protetto e il FE, mentre io nel codice confondevo i due.
    Per conoscenza, pubblico il codice corretto:
    ==============
    Function RICOLLEGA_LOC(PAT As String)
    'Riconnette le tabelle da db locale Access dopo averle cancellate
    On Error GoTo Erro

    Dim db As Database ' è il database BE
    Dim DBlocal As Database ' è il database del FE
    Dim rs As Recordset
    Dim TBLname As String
    Dim SEPARATORE As Integer
    Dim PROTE As Boolean
    Dim PROTEPSW As String

    PROTE = DLookup("Protezione_DB", "PARAMETRI") 'carica variabile che indica se Be è protetto
    PROTEPSW = DLookup("PSW_DB", "PARAMETRI") ' carica password del BE

    Set DBlocal = CurrentDb
    If PROTE = -1 Then 'Controlla se il Db da collegare è protetto e lo apre senza ricollegare
    Set db = OpenDatabase(PAT, False, False, "; pwd=" & PROTEPSW)
    End If
    Set rs = DBlocal.OpenRecordset("TABELLE_COLLEGATE") 'apre l'elenco delle tabelle
    rs.MoveFirst
    While Not rs.EOF
    DBlocal.Execute "Drop Table [" & rs!Name & "];" 'cancella vecchio collegamento
    DoCmd.TransferDatabase acLink, "Microsoft Access", PAT, acTable, rs!Name, rs!Name 'assegna nuovo collegamento
    rs.MoveNext
    Wend

    ESCI:
    DoCmd.SelectObject acTable, , True
    DoCmd.RunCommand acCmdWindowHide

    Esci2:
    rs.Close
    db.Close
    DBlocal.Close
    Exit Function

    Erro:
    MsgBox Err.Description
    Resume Esci2
    End Function
Devi accedere o registrarti per scrivere nel forum
2 risposte