2012-09-26 7 views
15

Sto lavorando su un progetto MS Access 2010 esistente che ha un collegamento tabella collegata al database Sql Server.Tabella collegata ms accesso 2010 change connection string

Quando il mouse sopra alla tabella collegata posso vedere una stringa di connessione 'ODBC;DRIVER=SQL Server;SERVER=10.0.0.1;UID=testdb;APP=Microsoft Office 2003;WSID=abc;TABLE=dbo.user'

Questo appare come un DSN tabella collegata.

Domanda

  1. Se la stringa di connessione a individuare? Come cambiarlo (nome del database di esempio)?

  2. Come posso creare una tabella simile dsn-less collegata? Ogni volta che creo una tabella collegata, Access 2010 mi obbliga sempre a scegliere \ creare un dsn (file o macchina).

+1

È possibile utilizzare il gestore tabelle collegato per modificare le connessioni. Usa dati esterni, ODBC per creare una tabella collegata. È possibile modificare le connessioni con VBA. Esempio: http://stackoverflow.com/questions/4928134/changing-linked-table-location-oprogramatically/4928209#4928209 – Fionnuala

+0

la stringa di connessione senza dns non può essere modificata nel gestore tabelle collegato. Inoltre ho cercato l'intero progetto (codice VBA) e non riesco a trovare la stringa di connessione che ho citato la connessione dsn-less. –

risposta

23

per stampare tutte le stringhe di connessione:

Dim tdf As TableDef 
Dim db As Database 

    Set db = CurrentDb 

    For Each tdf In CurrentDb.TableDefs 
     If tdf.Connect <> vbNullString Then 
      Debug.Print tdf.Name; " -- "; tdf.SourceTableName; " -- "; tdf.Connect 
     End If 
    Next 

Per creare una tabella collegata:

With CurrentDb 
    ''If the table does not have a unique index, you will need to create one 
    ''if you wish to update. 
    Set tdf = .CreateTableDef("LocalName") 
    tdf.Connect = "ODBC;DRIVER=SQL Server;SERVER=10.0.0.1;" _ 
     & "UID=testdb;APP=Microsoft Office 2003;WSID=abc;TABLE=dbo.user" 
    tdf.SourceTableName = "TABLE_NAME" 
    .TableDefs.Append tdf 
    .TableDefs.Refresh 
End With 

Per modificare un collegamento:

Set db = CurrentDB 
    Set tdf = db.TableDefs("MyTable") 
    tdf.Connect = "ODBC;DRIVER=SQL Server;SERVER=10.0.0.1;" _ 
     & "UID=testdb;APP=Microsoft Office 2003;WSID=abc;TABLE=dbo.user" 
    tdf.RefreshLink 
+3

In 'tdf.Refresh' ho ricevuto l'errore" L'oggetto non supporta questa proprietà o metodo "e invece ho dovuto usare' ResfreshLink'. –

+2

@MichalHosala Grazie per aver dedicato del tempo per segnalare l'errore. Ho corretto il codice. –

15

È possibile modificare la connessione stringa usando la seguente guida (Original Source).

In primo luogo, ottenere la stringa di connessione esistente.

  1. Aprire MS Access
  2. Cliccare col tasto destro su una tabella che consente di lavorare o si è sicuri non lavoro e scegliere “Visualizzazione Struttura”.
  3. Selezionare Sì nella schermata di avviso per continuare
  4. Se, sulla destra, non v'è alcuna finestra delle proprietà per la tabella, sulla barra multifunzione (Access 2010) clicca Finestra delle proprietà
  5. Questo rivela una proprietà Descrizione - copiare tutti che è in quella proprietà e lo incolla nel blocco note o da qualche parte per dopo.

In secondo luogo, aggiornare la stringa di connessione.

  1. Fare clic sulla dati esterni nella barra multifunzione e scegliere 'Gestione tabelle collegate'
    1. Fare clic sul Richiedi sempre una nuova casella di posizione di controllo - questo è un modo complicato per chiedere all'utente se (s) ha wasts per modificare le informazioni di connessione
    2. scegliere Seleziona tutto pulsante o scegliere i tavoli si desidera aggiornare con segni di spunta
    3. Fare clic su OK
  2. una finestra viene su.Fare clic su Nuovo
    1. Scegli SQL Server come driver
    2. clic sul pulsante Avanzate
    3. Incollare tutta quella roba in Blocco note
      • TRANNE rimuovere la tabella = ... roba fino al prossimo punto e virgola.
      • cambiare il nome del server
      • Fare clic su OK
    4. E poi chiede di salvare tutto questo in un file per più tardi. Scegliere un punto in Documenti in una cartella connessioni o meglio ancora in un percorso di rete da utilizzare in seguito
    5. Fare clic su OK un paio di volte
    6. Ora Access sostituirà tutte le tabelle con il nuovo DSN (dettagli della connessione) stringa.
+2

Questo mi richiede di specificare il file DNS per ogni tabella singolarmente. Cosa succede se ho 100 tabelle collegate nel mio accdb? – Hill

+0

@Hill Sembra che tutte le tabelle che controlli nella Gestione tabelle collegate verranno aggiornate con il nuovo DSN. Quindi non dovresti dover aggiornare ognuno di loro individualmente. –

+2

Per me, quando lo faccio, ottengo un dialogo separato per aggiornare il DSN per ogni singola tabella. Ho finito per trovare una sceneggiatura che lo farà per te. – Hill

Problemi correlati