Newsgroup: it.comp.appl.access
Titolo: percorsi relativi per le tabelle collegate

salve a tutti.
vi vorrei esporre il mio problema, forse banale ...
ho utilizzato la comodissima divisine in BE e FE del DB.
quindi ho molte tabelle che sono delle tabelle collegate e il
collegamente punta a file eseterno.
il problema mi nasce dal fatto che access memorizza il percorso
assoluto delle tabelle collegate.
in questo modo se sposto il database su un altro pc con differenti
partizioni e directory o ricredo lo stesso percorso del pc sul quale
sviluppo il DB o cambio a mano tutti i link alle tabelle.
dal momento che le tabelle si trovano in files che risiedono tutti
nella stessa directory del FE mi chiedevo se fosse possibile speficare
il percorso della tabella da linkare non in modo asssoluto,
C:\Documenti\DataBase\nomefile.mdb , ma in modo relatavo,
.\nomefile.mdb.
Grazie a tutti

 ha scritto nel messaggio
news:t33rpvc51086f65ee...@4ax.com...

No, ma puoi ricavare la Path del FE e comporre il Link completo.
La path del FE la ricavi da CurrentDb.Name eliminando il nome
del FE, quindi aggiungi il BE....  e LINKI....!!!!
@Alex.

 ha scritto nel messaggio
news:t33rpvc51086f65ee...@4ax.com...

Io ho impostato la cosa in questo modo: ho creato una tabella nella quale
inserisco i diversi percorsi completi (in questo modo posso usare lo stesso
FE per aprire diversi BE, a seconda delle esigenze. Ovviamente i BE hanno lo
stesso numero di tabelle, nonchè la stessa struttura). Da una maschera che
ho chiamato caricaTab, mediante una combobox (TendinaPercorso) richiamo il
percorso delle tabelle da caricare, quindi cliccando sul pulsante Comando0
faccio eseguire il seguente codice:
=========================================
Private Sub Comando0_Click()
Dim tmp As Integer
Dim Tabelle
Dim msg, Directory, File As String
Dim miascheda As Form
Set miascheda = Forms!caricaTab
On Error GoTo errore
GoTo sotto:
errore:
MsgBox "ERRORE!!!"
Echo True
Exit Sub
sotto:
Tabelle = Array("(2002)Registro", "20021", "2002PunzoniStep", "202MT",
"202PT", "202Rappr", "202Rif", _
"202RT", "202UT", "202VI", "accettate allo stato", "Assegnazioni",
"AssegnazioniR1", "Assiemi", "Avanzamenti", _
"Cianfrini", "Circuiti", "Classi piping", "Codifica Controlli", "Commesse",
"ControlliCND", "dati linea", _
"dati lineax", "DatiSpediti", "diametri", "diametri1", "elencoQualifiche",
"ingresso", "linee", _
"lineeECircuiti", "lineeSpedite", "Lineex", "materiali",
"MetodiDiControllo", "Moltiplicatori", "nonSaldate", "OperatoriCND", _
"Punzoni", "PunzoniStep", "PunzoniStepDoppi", "qualificheOld", "Rapporti Di
Riparazione", "saldatori", "saldatori1", _
"SaldatoriR1", "saldature Tagliate", "SaldatureDaStampare",
"SaldatureEseguiteDaControllare", "SaldatureOK", "SelezioneStampa", _
"SpecificaDeposito", "Sub Assiemi", "Tipo di Controlli", "TipoGiunti",
"Verifiche", "WPSCommessa", "NCR", "Trattamenti termici",
"VisivinonAccettati")
File = Me.TendinaPercorso
If Dir(File) = "" Then
 Call MsgBox("Attenzione installazione fallita, errore nell'apertura del
file: " & File, vbCritical)
 Exit Sub
End If
For tmp = 0 To 58 'numero di tabelle -1
 DoCmd.DeleteObject acTable, Tabelle(tmp)
 DoCmd.TransferDatabase acLink, "Microsoft Access", File, acTable,
Tabelle(tmp), Tabelle(tmp), False
Next tmp
Call MsgBox("Collegamento avvenuto con successo!", vbInformation)
End Sub
=================================
Ho lasciato i nomi delle tabelle del mio BE, per pigrizia.
Dovresti sostituirci i nomi delle tue tabelle e cambiare il numero dei cicli
da effettuare; nel mio caso tmp va da 0 a 58 perchè le tabelle sono 59.
Ciao
Salvatore