Newsgroup: it.comp.appl.access
Titolo: path corrente con fe/be

ciao a tutti!
prima di dividere il database in fe/be usavo il seguente codice (preso dal
sito di Karl) che mi torna molto utile in più situazioni:
Public Function PathCorrente() As String
   'Restituisce: il percorso completo del database corrente
   PathCorrente = left(CurrentDb.Name, Len(CurrentDb.Name) -
Len(Dir(CurrentDb.Name)))
End Function
dopo la divisione del database in back-end e front-end, però, questo non
funziona più perchè mi restituisce il path del fe, mentre a me faceva comodo
fare riferimento al percorso di ciò che è diventato ora il back-end (per
fare riferimento a files contenuti in sottocartelle).
come posso risolvere questa situazione, senza usare riferimenti assoluti?
grazie per l'aiuto,
em.an

 wrote in message
news:eoAlf.73410$
65.21...@twister1.libero.it

La cosa è un pò da pensare.
Se esporti il tuo applicativo da altri devi eseguire un Relink
delle tabelle collegate.
Questo è un limite, che solitamente si risolve con il pacchetto
d'installazione, magari scrivendo il percorso del BE in un registro,
io in realtà faccio scrivere all'installer direttamente in una
tabella nel FE(ma è solo una mia comodità).
Questo dato poi è il riferimento sia per il RELINK che per
altre cose.
Se invece vuoi recuperare il percorso del BE al di là del mio
discorso, leggi la proprietà Connect di una Linked Table
e vedi cosa contiene.....!
Debug.Print CurrentDb.Tabledefs8"NomeTabellaCollegata").Connect
Ciao
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:0f7e0f599d9053d265...@mygate.mailgate.org...

ciao @Alex,
grazie per i tuoi consigli preziosi, adesso mi ci metto.
a risentirci,
em.an

 ha scritto nel messaggio
news:0f7e0f599d9053d265...@mygate.mailgate.org...

rieccomi @Alex..
la riga di codice che mi hai dato:
Debug.Print CurrentDb.Tabledefs("NomeTabellaCollegata").Connect
mi ha restituito il percorso previsto per il mio BackEnd, vale a dire:
;DATABASE=Z:\MioDB_be.mdb
fin qui tutto bene. ora vorrei, se possibile, poter utilizzare questa
stringa nella Function che ho postato nel mio primo messaggio, per ottenere
la cartella ove il BE risiede (Z:). a questo proposito ho modificato la
Function in questo modo (sicuramente scorretto):
Public Function PathCorrente() As String
    Dim tab_az As String
    Set tab_az = CurrentDb.TableDefs("az").Connect
    PathCorrente = Mid(tab_az, 10, Len(tab_az) - Len(Dir(tab_az)))
End Function
l'errore che mi viene restituito è:
errore di compilazione. necessario oggetto.
dove sbaglio?
(ho modificato PathCorrente da Left a Mid perchè la stringa restituita
";DATABASE=Z:\MioDB_be.mdb" contiene 10 caratteri prima della lettera
dell'unità Z).
scusa per l'accrocchio di codice, cerco di fare del mio meglio..
em.an

 em.an
L'errore è quì:
Len(Dir(tab_az))
Non è possibile applicare la Funzione DIR alla stringa comprensiva
di DATABASE....!!!!
Prova questa:
PathCorrente = Mid(tab_az, 10, Len(tab_az) - 10))



ciao @Alex
ho modificato come suggerisci, ma purtroppo l'errore non cambia (errore di
compilazione. necessario oggetto.) e mi punta alla riga:
Set tab_az = CurrentDb.TableDefs("az").Connect
evidenziando "tab_az ="
Public Function PathCorrente() As String
    Dim tab_az As String
    Set tab_az = CurrentDb.TableDefs("az").Connect
    PathCorrente = Mid(tab_az, 10, Len(tab_az) - 10)
    Set tab_az = Nothing
End Function
em.an

 ha scritto nel messaggio 
news:vADlf.73786$65.21...@twister1.libero.it...

Togli SET
Ciao, Carlo 


Ovviamente anche
Set tab_az = Nothing
...si tratta di una variabile di tipo stringa non oggetto.
Ciao, Carlo 

 Ciao, Carlo
Mi era scappato...!
Ottima vista.



ragazzi, alla fine ho risolto con poche righe di codice che seguono:
Public Function PathCorrente() As String
    'Restituisce: il percorso completo del database corrente (BE-FE)
    Dim tab_az As String
    tab_az = CurrentDb.TableDefs("az").Connect
    PathCorrente = Mid(tab_az, 11, Len(tab_az) - 23)
End Function
poi richiamo PathCorrente da qualsiasi posizione del db, aggiungendo
eventuali sottocartelle e/o files in esse contenute.
perfetto! :D
1 sola cosa mi sfugge: perchè il 2° parametro di Mid debba essere 11,
anzichè 10.. ( gli spazi iniziali da trimmare in
";DATABASE=Z:\MioDB_be.mdb" sono 10 dal ";" al "=" ): forse c'e' 1 spazio
iniziale nella stringa restituita da tab_az.. boh.
comunque sia grazie di cuore!
alla prossima,
em.an

 em.an
E' giusto il 10° carattere è "=" e dato che il parametro in questione
è la posizione di partenza deve essere quello successivo.
Ciao
