Newsgroup: it.comp.appl.access
Titolo: Collegamento a tabelle su altro DB Access

Salve a tutti, scusate il disturbo.
Ripropongo il questito che avevo postato un paio di settimane fa in quanto
non sono riuscito ancora a risolvere il problema, malgrado il suggerimento
datomi da Carlo Costarella.
 Le tabelle di cui ho bisogno si trovano in un altro DB ( Dati.mdb) che si
trova in  rete.
 Ho bisogno di fare si che il mio DB, all'apertura legga su un file INI il
percorso in cui si trova Dati.mdb e usi le sue tabelle.
 Se per leggere il file INI e avere una variabile Stringa col percorso non
ho nessun problema, non so poi come andare avanti per collegarmi.
 In poche parole nel caso non sia stato chiaro, quello che voglio fare è
quello che si ottiene nella finestra Database cliccando su Nuovo, poi su
Collega Tabella, poi mettere il percorso e il nome del DB (che ho
recuperato dal file INI) e nella finestra Collega tabelle cliccare su
Seleziona tutto.
Ho provato anche a guardare il file Riallega.zip sul sito comune (è per
Access 97) ma non mi funziona nemmeno l'esempio dopo essere stato convertito
all'apertura (da' errori di conversione).
Penso che il problema + grande sia la mia poca conoscenza di Access..
Un grazie anticipato a chi vorrà aiutarmi.
Roberto

 ha scritto nel messaggio
news:Vb8Aa.31812$Ny5.9...@twister2.libero.it...

Non sò che versione di Access usi, ma se >97 allora devi prima di tutto
impostare
i riferimenti alle librerie DAO.
Ora non ti resta che ciclare tra le Tabelle e modificarne la Proprietà
Connection.
Ti allego una Funzione che però ho modificato senza provarla in quanto era
fatta
per tabelle con origine dati ODBC.....!
Da quello che ho capito però il tuo DB è sempre ACCESS....?????????
Public Function RlnkTbl(StrConnection as string) As Boolean
   On Error GoTo Err_RlnkTbl
   Dim tdf As TableDef
   Dim rs As Recordset
   Dim s As String
   Dim strSql As String
   RlnkTbl = False
   strSql = "SELECT MsysObjects.Name FROM MsysObjects " & _
          "WHERE ((Left$([Name], 4) <> 'Msys') And (MsysObjects.Type = 4))"
   Set rs = CurrentDb.OpenRecordset(strSql)
   rs.MoveLast
   rs.MoveFirst
   Do Until rs.EOF
      s = rs.Fields(0).Value
      Set tdf = CurrentDb.TableDefs(s)
      tdf.Connect = StrConnection
      tdf.RefreshLink
      rs.MoveNext
   Loop
   RlnkTbl = True
Exit_Here:
   rs.Close
   Set tdf = Nothing
   Exit Function
Err_RlnkTbl:
   RlnkTbl = False
   Resume Exit_Here
End Function
@Alex.

 ha scritto nel messaggio
news:Vb8Aa.31812$Ny5.9...@twister2.libero.it...

Globalmente non ho idea di come poter fare, "colpo-colpo" io utilizzo questo
metodo:
    Dim Dbs as Database
    set Dbs = CurrentDb
    Call CancellaTableDefSeEsiste(Dbs, "NOMETABELLA")
    Tabella = Trim(Me.TxtPercorso) & "\Archivi\DB_ORIGINE.MDB"
    DoCmd.TransferDatabase acLink, "Microsoft Access", Tabella, acTable,
"NOMETABELLA", _
                                    "NOMETABELLA"
'Da Inserire nei MODULI
Public Sub CancellaTableDefSeEsiste(db As Database, wtabdef As String)
'Se esiste la definizione della tabella la elimina dall'mdb
'(per tabelle temporanee)
On Error GoTo err_CancellaTableDefSeEsiste
   db.TableDefs.Delete wtabdef
Exit_CancellaTableDefSeEsiste:
   Exit Sub
err_CancellaTableDefSeEsiste:
   'Err.no = 3265 significa che la tabella gia' non esiste
   If Not Err.Number = 3265 Then
      MsgBox Err.Description
   End If
   Resume Exit_CancellaTableDefSeEsiste:
End Sub