Percorso Database diviso

di il
18 risposte

18 Risposte - Pagina 2

  • Re: Percorso Database diviso

    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
  • Re: Percorso Database diviso

    Ciao a tutti, rispolvero questo vecchio thread in quanto ho appena utilizzato il codice suggerito da @Alex
    Function Relink()
    Dim tdf As DAO.Tabledef
    Dim strPATH As String
    
    strPATH=CurrentProject.PAth & "\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
    End Function
    E funziona alla grande. Ho solo un problema: ho l'esigenza di proteggere il backend con una password, ma ovviamente in questo caso il codice va in errore e mi riporta il messaggio: Errore di run-time 3031: Password non valida.

    Cliccando su Debug mi evidenza la seguente riga:
    tdf.RefreshLink
    C'è un modo per risolvere adattando il codice ad un backend con password? Avevo pensato di inserire la password in una tabella presente sul frontend, che anch'esso è bloccato da password, ma come posso fare a farla leggere al codice?

    Grazie
  • Re: Percorso Database diviso

    La prossima volta non riaprire un 3d così vecchio, aprire uno nuovo inserendo il Link al vecchio.

    Devi costruire la stringa di connessione da passare alla Proprietà Connect in modo da passare la PWD...
  • Re: Percorso Database diviso

    Scusami, ok la prossima volta aprirò un nuovo 3d.
    In merito al tuo link, ho letto tutto, ma purtroppo la mia scarsa conoscenza di VBA mi ha reso incomprensibili diversi passaggi. Esiste la possibilità di adattare il codice che hai suggerito all'inizio inserendo semplicemente un: DLookup("Password", "Tb_PswBe") che vada a pescare la psw da passare per leggere le tabelle protette sul be?
Devi accedere o registrarti per scrivere nel forum
18 risposte