Newsgroup: it.comp.appl.access
Titolo: inserire 'a mano' il percorso della tab. collegata

Provo a ripostare in maniera piů chiara un quesito sul riallineamento delle
tabelle collegate.
Mi chiedevo se fosse possibile far specificare all'utente, ad es. in una
casella di testo il percorso del DB che contiene delle tabelle allegate. Gli
esempi trovati nel sito comune sono molto interessanti, ma mi chiedevo se
non fosse possibile 'passare' ad access direttamente il percorso della tab.
collegata, semplicemente scrivendolo. Ritengo che i percorsi delle tab.
collegati siano registrati da qualche parte. E' possibile modificarli 'a
mano'?
Grazie a tutti.
Giancarlo

 registrati da qualche parte. E' possibile modificarli 'a mano'?
' Io di solito faccio cosi'
' Chiama Install ()
Public Type BROWSEINFO
    hOwner As Long
    pidlRoot As Long
    pszDisplayName As String
    lpszTitle As String
    ulFlags As Long
    lpfn As Long
    lParam As Long
    iImage As Long
End Type
Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias 
"SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As 
Long
Declare Function SHBrowseForFolder Lib "shell32.dll" Alias 
"SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
Public Function GetDirectory(Optional Msg) As String
    Dim bInfo As BROWSEINFO
    Dim path As String
    Dim r As Long, X As Long, pos As Integer
    bInfo.pidlRoot = 0&
    If IsMissing(Msg) Then
        bInfo.lpszTitle = "Select a folder."
    Else
        bInfo.lpszTitle = Msg
    End If
    bInfo.ulFlags = &H1
    X = SHBrowseForFolder(bInfo)
    path = Space$(512)
    r = SHGetPathFromIDList(ByVal X, ByVal path)
    If r Then
        pos = InStr(path, Chr$(0))
        GetDirectory = Left(path, pos - 1)
    Else
        GetDirectory = ""
    End If
'    Dim Msg As String
'    Msg = "Please select a location for the backup."
'    GetDirectory (Msg)
End Function
Function Install()
Dim tmp As Integer
Dim Tabelle
Dim Msg, Directory, File As String
Dim Response As Boolean
Response = True
While Response
 Msg = "Selezionare la directory degli Archivi."
 Directory = GetDirectory(Msg)
 If Trim(Directory) = "" Then
  If MsgBox("Non e stata selezionata alcuna direcory. Volete 
tralasciare l'installazione?", vbYesNo + vbCritical, "Errore durante 
l'installazione") = vbYes Then
   Exit Function
  Else
   Response = True
  End If
 Else
  Response = False
 End If
Wend
Tabelle = Array("Anagrafica", "Carichi", "Chiamate", "Conferimenti", 
"Contenitori", _
                "Noleggi", "Offerte", "Operatrici", "Posizionamenti", 
"Referenti", "ReferentiStabilimenti", _
                "Smaltimenti", "Sondaggi", "Stabilimenti", "Trasporti", 
"Vettori", "Tappe", "Percorsi")
If Right(Directory, 1) <> "\" Then
 Directory = Directory & "\"
End If
 
File = Directory & "Archivio.mdb"
If Dir(File) = "" Then
 Call MsgBox("Attenzione installazione fallita, errore nell'apertura 
del file: " & File, vbCritical)
 Exit Function
End If
For tmp = 0 To 17
 on error resume next
 DoCmd.DeleteObject acTable, Tabelle(tmp)
 on error goto 0
 DoCmd.TransferDatabase acLink, "Microsoft Access", File, acTable, 
Tabelle(tmp), Tabelle(tmp), False
Next tmp
 
Call MsgBox("Installazione avvenuta con successo!", vbInformation)
End Function

 ha scritto nel
messaggio

tdf as tabledef
set tdf=currentdb.tabledefs("TuaTabella")
tdf.connection="Tuo percorso"
tdf.refreshlink
D'altro canto, come aversti potuto notare osservando con attenzione il
codice sul sito comune, la funzione di apertura stile windows in realta' non
fa altro che restituire il nome di un file completo di percorso.
Sib

 mano'?
sono su msysobjects (comprensivi di password in chiaro se c'e') la tabella,
essendo di sistema, non e' modificabile
--
a.cara 
Togli qualcosa dall'email

 
a parte i nomi delle tabelle (ci sono trattati sui nomi degli  oggetti e 
alla fine diventa un pò una questione di abitudine/metodo/gusti :-)), ti 
conviene appoggiarti a una tabella locale piuttosto che a un array.
in questo modo, puoi modificare al volo l'elenco delle tabelle da 
ricollegare, nella tabella puoi mettere più campi (nome locale, nome 
remoto, stringa di connessione, etc...) che possono essere utili se oltre 
a tabelle in altri mdb, hai anche tabelle odbc.
in più, hai il vantaggio di avere un metodo che va bene per qualsiasi 
tipo di tabella, con già la possibilità di impostare tutti i dati che 
dovessero servirti per aggiornare connessioni, modifiche volanti, 
modifiche malefiche al be...
-- 
+-------
| Paolo opg
|
| janickg ( at ) hotmail ( dot ) com
+-------


Grazie in anticipo.
Giancarlo

 Non sono molto pratico. Potresti dirmi dove inserire questo codice, pls?
Dove ti pare, nell'evento che ritieni piu' opportuno per eseguire la
procedura: all'apertura di una maschera, alla pressione di un pulsante, ecc
ecc-
Sib