2013-03-18 33 views
8

Ho un database di Access 2010 A.mdb con una lista di tabelle, una delle quali è una tabella collegata, collegata da un altro database di Access B.mdb sulla stesso server. Questi database sono su una macchina di sviluppo xxx.xxx.xxx.xxx, che è mappata sul mio computer come R:// e successivamente sono pubblicati online su un server yyy.yyy.yyy.yyy.Aggiornare un Access tabella collegata ad utilizzare un percorso UNC

Se voglio lavorare localmente sul database, ho bisogno di cambiare il link alla tabella. Ma se lo cambio via filesystem (usando "Linked Table Manager"), il collegamento diventa R://.... e quando guardo la pagina ASP che richiede quei dati, è rotto perché il percorso è sbagliato. Inoltre, se cambio il link localmente, non funzionerà sul server online.

C'è un modo per modificare il collegamento "a livello di codice"? Cioè, senza usare il gestore di tabelle collegate?

Ho cercato una risposta, ma non sono così esperto, ho appena capito che devo scrivere un "Modulo"? "Macro"?

risposta

15

I collegamenti alle tabelle possono essere percorsi UNC. Ad esempio, supponiamo di avere una tabella collegata che punta a un database su \\192.168.1.2\Public\ che è mappato sull'unità P:. Se io lancio l'editor VBA (Alt +F11), aprire la finestra immediata (Ctrl +G) e il tipo ...

?CurrentDB.TableDefs("remoteTable").Connect

... tornerà. ..

;DATABASE=P:\B.accdb

... perché ho fatto guidare P: quando ho creato il collegamento.

Ora, se io creare ed eseguire la funzione VBA ...

Function linkToUnc() 
Dim cdb As DAO.Database 
Set cdb = CurrentDb 
cdb.TableDefs("remoteTable").Connect = ";DATABASE=\\192.168.1.2\Public\B.accdb" 
cdb.TableDefs("remoteTable").RefreshLink 
Set cdb = Nothing 
End Function 

... il link è ora un percorso UNC.

A proposito, è possibile creare collegamenti UNC in Gestione tabelle collegate se si seleziona "Rete", "nome computer", "nome condivisione", ma questo darà il nome del computer (nel mio caso \\PICO\Public\B.accdb) .

+0

Grazie mille !! Solo una domanda (novizio qui): come posso creare la funzione VBA? Macro? Modulo? Macro collegata a un modulo? Boh! Per quanto riguarda "Sfoglia per rete, nome della macchina, ..." in realtà non posso farlo, perché per qualche motivo mi arrendo a capire che non riesco a vedere la macchina da Newtwork (sono in una grande ed enorme organizzazione, quindi gli accessi sono limitati e strani!) –

+1

Crea un nuovo modulo, quindi incolla il codice e modificalo. Puoi eseguire la funzione cliccando sulla prima riga e premendo '[F5]' (o scegli "Esegui" dalla barra dei menu), e puoi anche creare una Macro per eseguirla (tramite l'azione 'RunCode'). –

+0

Grazie, ho provato ma dice "Errore di compilazione: tipo definito dall'utente non definito" ... –

0

è possibile fare clic con il pulsante destro del mouse su una tabella collegata e selezionare Manager tabella collegata. Seleziona la tabella collegata su cui vuoi lavorare e tic la casella di controllo sotto la finestra che dice Chiedi sempre la nuova posizione e fai clic sul pulsante OK.

Verrà richiesta la nuova posizione. Sfoglia e seleziona il file e clicca OK.

+0

Ciao Tera, grazie per la risposta, ma questo è esattamente quello che non voglio fare. Ho modificato la mia domanda perché forse non è così chiaro. –

0

Mi piace impostare un DSN su file su una cartella condivisa accessibile con accesso in lettura all'intera rete e quindi utilizzare un gestore tabelle collegato al percorso UNC. Per fare ciò, utilizzo il gestore di tabelle collegate e configuro un file DSN sul mio desktop. Quindi copio e sposta il file DSN nella directory UNC condivisa. Quindi, vado in Access e cancelli la tabella collegata e ricrea la tabella collegata.Per fare questo, dopo la cancellazione della tabella collegata, faccio la seguente:

  1. clicco su database ODBC -> Link alla fonte dati creando una tabella collegata -> OK.
  2. Fare clic sulla scheda Origine dati file nella finestra Seleziona origine dati. Nella parte inferiore della finestra di dialogo, vedrai "Nome DSN:" seguito da una casella di testo e da un pulsante Nuovo. Immetterai l'intero percorso AND nome file UNC in quella casella di testo (quindi questo sta puntando al file che hai copiato nel percorso UNC). Ad esempio, inserisco \ ATD-SERVER1 \ AccessShare \ ContactsApp.accdb.dsn. Quindi fare clic su OK.

Supponendo di disporre delle autorizzazioni di accesso al server a cui si sta collegando, verrà visualizzata la finestra di dialogo Tabelle collegamento e sarà quindi possibile selezionare le tabelle collegate da lì! Microsoft non potrebbe rendere questo meno intuitivo se ci provassero.

Problemi correlati