2012-03-07 14 views
6

Ho una vista aggiornabile nel database del server SQL. Quando creo una tabella collegata con ODBC, mi viene chiesto di selezionare un identificatore di record univoco, in modo che sia aggiornabile.Codice VBA per aggiungere tabella collegata con chiave primaria

Dialog in the wizard to select unique identifier

ho bisogno di ricollegare dinamicamente questa tabella in VBA, quindi ho bisogno di eliminare e ricreare la tabella collegata (non posso aggiornare la proprietà TableDef.Connect per la tabella ODBC).

ho trovato diverse soluzioni, che non sono applicabili nel mio caso:

  • creare l'indice dopo il collegamento: non posso per sorgente ODBC
  • creare la chiave primaria nel database: Non posso, è una vista

Questi sarebbero applicabili:

  • un codice che farà quello che la cerva procedura guidata s
  • un codice per ricollegare senza la necessità di eliminare TableDef e che funziona con ODBC tabella collegata, e non si ripristinerà precedentemente impostata identificatore

soluzione temporanea:

  • convertire la fine di vista materializzata e creare un indice univoco su di esso
+1

Come su: http://bytes.com/topic/access/answers/199482-primary-key-sql-server-linked-view-access-database? – Fionnuala

risposta

11

Perché non è possibile creare un indice per un'origine ODBC dopo il collegamento?

Al lavoro, si utilizza Access con le tabelle collegate di SQL Server, e quando qualcuno vuole connettersi a un database diverso (passaggio da ambiente di produzione per testare l'ambiente), facciamo qualcosa di simile per tutte le tabelle:

Dim TD As TableDef 
Dim ConString As String 

ConString = "ODBC;DRIVER={SQL Server};SERVER=ServerName;DATABASE=DbName;Trusted_Connection=Yes;" 

CurrentDb.TableDefs.Delete "SomeTable" 

Set TD = CurrentDb.CreateTableDef("SomeTable", 0, "SomeTable", ConString) 
CurrentDb.TableDefs.Append TD 
Set TD = Nothing 

CurrentDb.Execute "CREATE UNIQUE INDEX SomeIndex ON SomeTable (PrimaryKeyColumn) WITH PRIMARY" 
Problemi correlati