Newsgroup: it.comp.appl.access
Titolo: Impostare parametri di relink tabelle da file di testo

Ciao a tutti,
ho scaricato il seguente esmpio dal SC per fare il relink delle tabelle di 
un gestionale da me creato e che ho distribuito con il runtime di access 
2003:
Sub CollegaTabelle()
On Error GoTo Esci
  Dim Catalogo As New ADOX.Catalog
  Dim Tabella As ADOX.Table
  Dim Prop As ADOX.Property
  Dim Dir As String
  Dim Dir1 As String
  Catalogo.ActiveConnection = CurrentProject.Connection
  Dir = "\\Server\Programmi\Progetto\Progetto.BE.mdb"
  Dir = Replace(Dir, "Progetto.mdb", "Progetto_BE.mdb")
  Dir1 = "\\Olidata\Programmi\Progetto\ArchiviRM.mdb"
  Dir1 = Replace(Dir1, "Progetto.mdb", "ArchiviRM.mdb")
  Dir2 = "\\Olidata\Programmi\ProgettoStoricoRM.mdb"
  Dir2 = Replace(Dir2, "Progetto.mdb", "StoricoRM.mdb")
 For Each Tabella In Catalogo.Tables
     If Tabella.Name = "ArchivioSchede" Then
           Set Prop = Tabella.Properties("Jet OLEDB:Link Datasource")
      Prop.Value = Dir1
      ElseIf Tabella.Name = "ArchivioStorico" Then
           Set Prop = Tabella.Properties("Jet OLEDB:Link Datasource")
      Prop.Value = Dir2
      Else
      If Tabella.Type = "LINK" Then
      Set Prop = Tabella.Properties("Jet OLEDB:Link Datasource")
      Prop.Value = Dir
    End If
    End If
  Next Tabella
  Set Catalogo = Nothing
DoCmd.OpenForm "Link", acNormal
Exit Sub
Exit_Esci:
    Exit Sub
Esci:
    MsgBox Err.Description
    Resume Exit_Esci
End Sub
il tutto funziona perfettamente, ma il mio problema sta nel fatto che per 
motivi aziendali gli archivi a cui io mi collego periodicamente vengono 
spostati di server, quindi come ovvio il database non effettua più il 
relink. La domanda è: esiste la possibilità di impostare tramite un file di 
testo i percorsi di cui sopra nel caso cambia il server?
E se si come?
Ciao Tommy

 ha scritto nel messaggio
news:Gd2Ud.52401$lB4.1...@twister1.libero.it...

Stesso problema che ho io...!
Uso un File INI, e salvo varie Sezioni nelle quali scrivo e leggo il
percorso.
Questo scrive e legge da un file INI, metti tutto in un Modulo:
Option Compare Database
Option Explicit
' DLL declarations
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias
"GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal
lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As
String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias
"WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal
lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
'// Functions
Function GetFromINI(sSection As String, sKey As String, sDefault As String,
sIniFile As String)
    Dim sBuffer As String, lRet As Long
    ' Fill String with 255 spaces
    sBuffer = String$(255, 0)
    ' Call DLL
    lRet = GetPrivateProfileString(sSection, sKey, "", sBuffer,
Len(sBuffer), sIniFile)
    If lRet = 0 Then
        ' DLL failed, save default
        If sDefault <> "" Then AddToINI sSection, sKey, sDefault, sIniFile
        GetFromINI = sDefault
    Else
        ' DLL successful
        ' return string
        GetFromINI = Left(sBuffer, InStr(sBuffer, Chr(0)) - 1)
    End If
End Function
'// Returns True if successful. If section does not
'// exist it creates it.
Function AddToINI(sSection As String, sKey As String, sValue As String,
sIniFile As String) As Boolean
    Dim lRet As Long
    ' Call DLL
    lRet = WritePrivateProfileString(sSection, sKey, sValue, sIniFile)
    AddToINI = (lRet)
End Function
Ciao
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.mantuanet.it/alessandro.baraldi/
---------------------------------------------------------------------------

 ha scritto nel messaggio 
news:4220b446$0$6308$5fc...@news.tiscali.it...

Scusa ma non so come impostare il file .ini, considerando anche il fatto che 
come hai visto nel mio esempio i database a cui mi collego sono più di uno. 
Saresti così gentile da abbozzarmi un esempio?
Grazie 1000
Ciao Tommy 


Per impostarlo ti faccio un Esempio:
Metti tutto il codice che ti ho passato in un Modulo, quindi dalla Finestra
Immediata
CTRL+G digita:
?AddToINI("DATABASE","DB1","\\Server\Programmi\Progetto\Progetto.BE.mdb","C:
\Link.Ini")
Viene creato un file in C:\ che contiene la Chiave DB1 con il valore che hai
passato.
Una volta create le chiavi prova a leggerle.



e.. una parola...
ho provato ad eseguire il codice di cui sopra ed č tutto OK, mi sono creato 
tutti i link dei database, a questo punto ho il file .ini, che me ne faccio? 
come faccio a leggerlo, i miei dubbi  si sono moltiplicati N elevato 
all'infinito..
Facendo sempre riferimento al codice con cui io mi collego i database, 
l'unico modo trovato che mi funzioni con il runtime, a questo punto dove 
vado ad impostare la lettura del file .ini? devo cambiare il codice con cui 
collegavo Dir, Dir1 eccc? e se si come? la funzione "GetFromINI" dove la 
devo inserire?
Scusami per le molteplici domande, ma come avrai ormai capito sono un po OT 
con il codice, se vorrai darmi un'ennesima mano, te ne sarei veramente 
garto.
Ciao Tommy