Access memorizza tutte le tabelle del database, query, moduli, report, macro e moduli nel database Access Jet come un singolo file.
Per lo sviluppo di query, Access offre un “Query Designer”, un’interfaccia utente grafica che consente agli utenti di creare query senza conoscere il linguaggio di query strutturato. Nel Designer Query, gli utenti possono “mostrare” le fonti di dati della query (che possono essere tabelle o query) e selezionare i campi che vogliono restituire facendo clic e trascinandoli nella griglia., È possibile impostare i join facendo clic e trascinando i campi nelle tabelle in campi in altre tabelle. Access consente agli utenti di visualizzare e manipolare il codice SQL, se lo si desidera. Qualsiasi tabella di accesso, comprese le tabelle collegate da diverse origini dati, può essere utilizzata in una query.
Access supporta anche la creazione di “query pass-through”. Questi frammenti di codice SQL possono indirizzare origini dati esterne attraverso l’uso di connessioni ODBC sul computer locale. Ciò consente agli utenti di interagire con i dati memorizzati al di fuori del programma di accesso senza utilizzare tabelle collegate o Jet.,Gli utenti costruiscono le query pass-through utilizzando la sintassi SQL supportata dall’origine dati esterna.
Quando si sviluppano report (in “Vista progettazione”) aggiunte o modifiche ai controlli causano l’esecuzione di query collegate in background e il progettista è costretto ad attendere la restituzione dei record prima di poter apportare un’altra modifica. Questa funzione non può essere disattivata.
I non programmatori possono utilizzare la funzione macro per automatizzare attività semplici attraverso una serie di selezioni a discesa., Le macro consentono agli utenti di concatenare facilmente i comandi come l’esecuzione di query, l’importazione o l’esportazione di dati, l’apertura e la chiusura di moduli, l’anteprima e la stampa di report, ecc. Le macro supportano la logica di base (condizioni IF) e la possibilità di chiamare altre macro. Le macro possono anche contenere sub-macro che sono simili alle subroutine. In Access 2007, le macro avanzate includevano la gestione degli errori e il supporto per le variabili temporanee. Access 2007 ha anche introdotto macro incorporate che sono essenzialmente proprietà dell’evento di un oggetto. Ciò ha eliminato la necessità di memorizzare le macro come singoli oggetti., Tuttavia, le macro erano limitate nella loro funzionalità dalla mancanza di loop di programmazione e logica di codifica avanzata fino a Access 2013. Con significativi ulteriori miglioramenti introdotti in Access 2013, le funzionalità delle macro sono diventate completamente paragonabili a VBA. Hanno reso pratiche le distribuzioni di applicazioni basate sul Web ricche di funzionalità, tramite un’interfaccia e strumenti Microsoft SharePoint notevolmente migliorati, nonché sui desktop Windows tradizionali.
In comune con altri prodotti della suite Microsoft Office, l’altro linguaggio di programmazione utilizzato in Access è Microsoft VBA. È simile a Visual Basic 6.,0 (VB6) e il codice possono essere memorizzati in moduli, classi e codice dietro moduli e report. Per creare un prodotto finito più ricco, più efficiente e gestibile con una buona gestione degli errori, la maggior parte delle applicazioni di accesso professionale sono sviluppate utilizzando il linguaggio di programmazione VBA piuttosto che le macro, tranne dove la distribuzione Web è un requisito aziendale.,
Per modificare i dati nelle tabelle e query in VBA e macro, Microsoft offre due librerie di accesso ai database di componenti COM:
- DAO (Data Access Objects) (solo 32 bit), che è incluso in Access e Windows e si è evoluto per ACE in Microsoft Access 2007 per il ACCDE formato di database
- ActiveX Data Objects ActiveX Data Objects (ADO) (sia a 32-bit e 64-bit)
così Come DAO e ADO, gli sviluppatori possono anche utilizzare OLE DB e ODBC per lo sviluppo C/C++ nativo di programmi per l’Accesso. Per gli ADP e la manipolazione diretta dei dati di SQL Server, è necessario ADO., DAO è più appropriato per la gestione dei dati nei database Access/Jet e l’unico modo per manipolare i tipi di campo complessi nelle tabelle ACCDB.
Nel contenitore del database o nel riquadro di navigazione in Access 2007 e versioni successive, il sistema categorizza automaticamente ciascun oggetto per tipo (ad esempio, tabella, query, macro). Molti sviluppatori di Access usano la convenzione di denominazione Leszynski, anche se questa non è universale; è una convenzione di programmazione, non una regola applicata al DBMS. È particolarmente utile in VBA dove i riferimenti ai nomi degli oggetti potrebbero non indicare il suo tipo di dati (ad esempio tbl per le tabelle, qry per le query).,
Gli sviluppatori distribuiscono Microsoft Access più spesso per progetti individuali e di gruppo di lavoro (la caratterizzazione della velocità Access 97 è stata eseguita per 32 utenti). Da Access 97, e con Access 2003 e 2007, Microsoft Access e hardware si sono evoluti in modo significativo. I database di dimensioni inferiori a 1 GB (che ora possono adattarsi interamente alla RAM) e gli utenti simultanei 200 sono ben all’interno delle capacità di Microsoft Access. Naturalmente, le prestazioni dipendono dalla progettazione e dalle attività del database. Il lavoro intensivo del disco, come la ricerca e l’interrogazione complesse, richiede la maggior parte del tempo.,
Poiché i dati di un database Microsoft Access possono essere memorizzati nella cache nella RAM, la velocità di elaborazione può migliorare notevolmente quando c’è un solo utente o se i dati non cambiano. In passato, l’effetto della latenza dei pacchetti sul sistema di blocco dei record causava l’esecuzione lenta dei database di Access su una rete privata virtuale (VPN) o su una WAN (Wide Area Network) contro un database Jet. A partire dal 2010 le connessioni a banda larga hanno mitigato questo problema., Le prestazioni possono anche essere migliorate se viene mantenuta una connessione continua al database back-end per tutta la sessione anziché aprirla e chiuderla per ogni accesso alla tabella. Se le prestazioni del database di Access su VPN o WAN ne risentono, un client che utilizza il protocollo desktop remoto (come Microsoft Terminal Services) può fornire una soluzione efficace. I database di accesso collegati a SQL Server o per accedere ai progetti di dati funzionano bene su VPN e WAN.,
Nel luglio 2011, Microsoft ha riconosciuto un problema di prestazioni delle query intermittente con tutte le versioni di Access e Windows 7 e Windows Server 2008 R2 a causa della natura della gestione delle risorse molto diversa nei sistemi operativi più recenti. Questo problema influisce gravemente sulle prestazioni delle query su Access 2003 e versioni precedenti con il codice del motore di database Jet, nonché Access 2007 e versioni successive con Access Database Engine (ACE). Microsoft ha emesso hotfix KB2553029 per Access 2007 e KB2553116 per Access 2010, ma non risolverà il problema con Jet 4.0 in quanto è fuori dal supporto mainstream.,
Nelle versioni precedenti di Microsoft Access, la possibilità di distribuire applicazioni richiedeva l’acquisto del Toolkit per sviluppatori; in Access 2007, 2010 e Access 2013 la versione “Solo Runtime” è offerta come download gratuito, rendendo possibile la distribuzione di applicazioni royalty-free su Windows XP, Vista, 7 e Windows 8.x.
Architettura split database
Le applicazioni Microsoft Access possono adottare un’architettura split-database., Il singolo database può essere diviso in un file “back-end” separato che contiene le tabelle di dati (condivise su un file server) e un” front-end ” (contenente gli oggetti dell’applicazione come query, moduli, report, macro e moduli). L’applicazione di accesso “front-end” viene distribuita sul desktop di ciascun utente e collegata al database condiviso. Utilizzando questo approccio, ogni utente dispone di una copia di Microsoft Access (o della versione runtime) installata sulla propria macchina insieme al database delle applicazioni. Ciò riduce il traffico di rete poiché l’applicazione non viene recuperata per ogni utilizzo., Il database “front-end” può ancora contenere tabelle locali per la memorizzazione delle impostazioni di un utente o dei dati temporanei. Questo design split-database consente anche lo sviluppo dell’applicazione indipendente dai dati. Uno svantaggio è che gli utenti possono apportare varie modifiche alla propria copia locale dell’applicazione e questo rende difficile gestire il controllo della versione. Quando una nuova versione è pronta, il database front-end viene sostituito senza influire sul database dei dati. Microsoft Access ha due utility integrate, Database Splitter e Linked Table Manager, per facilitare questa architettura.,
Le tabelle collegate in Access utilizzano percorsi assoluti piuttosto che percorsi relativi, quindi l’ambiente di sviluppo deve avere lo stesso percorso dell’ambiente di produzione o una routine “dynamic-linker” può essere scritta in VBA.
Per database di accesso molto grandi, questo può avere problemi di prestazioni e un backend SQL dovrebbe essere considerato in queste circostanze. Questo è meno un problema se l’intero database può adattarsi alla RAM del PC poiché Access memorizza nella cache i dati e gli indici.,
Migrazione a SQL ServerEdit
Per scalare le applicazioni di accesso a soluzioni aziendali o Web, una possibile tecnica prevede la migrazione a Microsoft SQL Server o database server equivalente. Una progettazione client–server riduce significativamente la manutenzione e aumenta la sicurezza, la disponibilità, la stabilità e la registrazione delle transazioni.
Access 2000 tramite Access 2010 includeva una funzionalità chiamata Upsizing Wizard che consentiva agli utenti di aggiornare i propri database a Microsoft SQL Server, un database client–server ODBC., Questa funzione è stata rimossa da Access 2013. Una soluzione aggiuntiva, SQL Server Migration Assistant for Access (SSMA), continua ad essere disponibile per il download gratuito da Microsoft.
Sono disponibili varie opzioni di aggiornamento. Dopo la migrazione dei dati e delle query a SQL Server, il database Access può essere collegato al database SQL. Tuttavia, alcuni tipi di dati sono problematici, in particolare “Sì/No”. In Microsoft Access ci sono tre stati per il tipo di dati Yes/No (True/False): vuoto, no/false (zero) e yes/true (-1)., Il tipo di dati SQL Server corrispondente è binario, con solo due stati, valori consentiti, zero e 1. Indipendentemente da ciò, SQL Server è ancora la migrazione più semplice. Il recupero dei dati dalle tabelle collegate è ottimizzato solo per i record necessari, ma questo scenario potrebbe funzionare in modo meno efficiente di quello che sarebbe altrimenti ottimale per SQL Server. Ad esempio, nei casi in cui i join multi-table richiedono ancora la copia dell’intera tabella attraverso la rete.,
Nelle versioni precedenti di Access, incluso Access 2010, i database possono anche essere convertiti in Access Data Projects (ADP) che sono legati direttamente a un database SQL Server. Questa funzione è stata rimossa da Access 2013. ADP supporta la possibilità di creare e modificare direttamente oggetti SQL Server come tabelle, viste, stored procedure e vincoli SQL Server. Le viste e le stored procedure possono ridurre significativamente il traffico di rete per i join a più tabelle. SQL Server supporta tabelle temporanee e collegamenti ad altre origini dati oltre al singolo database SQL Server.,
Infine, alcuni database di Access sono completamente sostituiti da un’altra tecnologia come ASP.NET o Java una volta convertiti i dati. Tuttavia, qualsiasi migrazione può richiedere uno sforzo maggiore poiché il linguaggio SQL Access è un superset più potente di SQL standard. Inoltre, le procedure di applicazione di accesso, sia VBA che macro, sono scritte a un livello relativamente più alto rispetto alle alternative attualmente disponibili che sono sia robuste che complete., Si noti che il linguaggio macro Access, che consente un livello di astrazione ancora più elevato rispetto a VBA, è stato significativamente migliorato in Access 2010 e di nuovo in Access 2013.
In molti casi, gli sviluppatori creano interfacce web-to-data dirette utilizzando ASP.NET, mantenendo i principali processi di automazione aziendale, funzioni amministrative e di reporting che non hanno bisogno di essere distribuiti a tutti in accesso per i lavoratori delle informazioni da mantenere.
Mentre tutti i dati di accesso possono migrare direttamente a SQL Server, alcune query non possono migrare correttamente., In alcune situazioni, potrebbe essere necessario tradurre le funzioni VBA e le funzioni definite dall’utente in funzioni / procedure T–SQL o.NET. Le query Crosstab possono essere migrate a SQL Server utilizzando il comando PIVOT.