Access
 sql >> Database >  >> RDS >> Access

Utilizzo di viste SQL per aggiungere/modificare dati in Microsoft Access

Utilizzo di viste SQL per aggiungere/modificare dati in Microsoft Access

Questa è la parte II di una serie in due parti sulle visualizzazioni che ho scritto, puoi vedere la parte I qui.

Negli ultimi due anni ho avuto una grande esperienza con il lavoro su database di Access con i dati collegati a tabelle archiviate in SQL Server. Con i database relazionali e le tabelle di ricerca puoi facilmente ottenere una vista che contiene più colonne numeriche che contengono solo la chiave primaria di altre tabelle.

Supponiamo ad esempio di avere un database con due tabelle:una per le informazioni sull'azienda e un'altra solo per i contatti, ma devi collegare i tuoi contatti con le aziende e hai situazioni in cui un contatto è collegato a più aziende. Puoi gestirlo facilmente creando una terza tabella di CompanyContacts che sarebbero righe di dati contenenti CompanyID e ContactID. Ci sono molte situazioni in cui avresti una tabella simile che collega i dati da una tabella all'altra, ma queste tabelle devono essere mantenute e gestite da utenti che hanno davvero bisogno di vedere i dati sottostanti e non solo gli ID. Per risolvere il problema puoi creare una vista con tutte le tabelle necessarie e basare il tuo modulo sulla vista collegata, ma noterai subito che non puoi modificare alcun dato, è tutto di sola lettura.

Suggerimenti per rendere modificabile la visualizzazione

Per modificare la tua vista in Access devi assicurarti che disponga di una chiave primaria dalla tabella che desideri modificare, insieme al campo timestamp e un indice. I primi due possono essere facilmente realizzati aggiungendo i campi nella progettazione della vista in SQL Server, per quest'ultimo utilizzare CREATE UNIQUE INDEX come mostrato di seguito, insieme al codice per aggiungere la vista come tabella collegata:

Dim tdf come DAO.TableDef
Dim db come DAO.Database

Imposta db =CurrentDb
Imposta tdf =db.CreateTableDef
tdf.Name =“ViewNameInAccess”
tdf.SourceTableName =“dbo.ViewName ”
tdf.Connect =“ODBC;
db.TableDefs.Append tdf

db.Execute "CREA INDICE UNICO [PRIMARY] SU [ViewNameInAccess](MainTableID);", dbFailOnError