Importare dati da database Access .accdb (dalla versione 2007 in poi) con ADO (ActiveX Data Objects)

Sul sito esistono già due ottimi esempi di utilizzo di connessioni ADO proposti da Elio Buonocore ma una recente richiesta ha evidenziato una difficoltà di quelle soluzioni nel collegarsi a database Access di recente produzione: a partire dalla versione Access 2077 i file salvati, che portano l'estensione ".accdb" anzichè ".mdb" non possono essere connessi usando il server Jet.OLEDB.4.0, ma ACE.OLEDB.12.0, quindi i lavori di Elio possono essere modificati nella stringa di connessione in questo modo :  "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & tuodata.accdb & ";'"

Ricordarsi di impostare nell'Editor del VBA, dal menù Strumenti/Riferimenti  le due librerie "Microsoft ActiveX Data Object 6.0 Library" (o versione precedente sul vostro computer) e dato che nelle istruzioni viene usato anche ADOX, la libreria "Microsoft ADO Ext. 6.0 for DDL and Security" dcome nell'immagine sottostante, senza le quali le istruzioni non funzioneranno generando errori.

I file di esempio che troverete possiedono già questi collegamenti, ed io presento una versione "alleggerita" idonea a lavorare SOLO con i database .accdb, inoltre come scelta dei dati da importare lascio solo 2 ascelte:

1) Importare tutti i campi di una tabella selezionata

2) Selezionare i campi da una tabella scelta ed importare solo quelli.

Le istruzioni VBA sono commentate e visibili nell'editor di VBasic.Il funzionamento è semplice; un pulsante consente di cercare e selezionare il database col il quale viene popolata la ListBox1 (gialla); selezionando con un click una detlle tabelle mostrate, si attivano le istruzioni per riempire la ListBox2 (verde) con i nomi dei campi della tabella selezionata; a questo punto si hanno le due scelte: importare i dati di tutti i campi della tabella, oppure, cliccando sui nomi dei campi nella ListBox2, popolare la ListBox3 (celeste) con detti nomi, quindi premere il pulsante compony query e importa dati dei campi scelti. Ognuno potrà provare a modificare la query MiaQuery per adattarla a richieste particolari. Nelle istruzioni ho impostato la riga 3 del foglio 1 come destinataria dei nomi dei campi e indi dei dati; chi lo desiderà dovrà indicare i propri riferimenti. Ogni listbox si pulisce con un doppio click sulla stessa.

 

 

file scaricabile e consultabile per Excel 2003 : PrimoAdo.rar  per excel 2007/2010: PrimoAdo_x.rar


in data 04/09/2016 scopro che:
ATTENZIONE: mamma Microsoft, sempre attenta a ciò che i clienti necessitano, specialmente con l'ultima versione del SO  Windows 10 che si vuole interessare anche quante volte un utente del suo sistema vuole andare di corpo, forse per aiutarlo e preparargli la giusta gradazione di carta igienica, e ci propina aggiornamenti su aggiornamenti  per tutte le versioni (XP non più), spesso compromettendo  un sistema in cui fino a quel momento funzionava tutto a meraviglia, ci avvisa che chi esegue istruzioni ADO su versioni precedenti alla versione Windows7 sp1 , (la versione con cui ho preparato i file postati appena sopra) , potrebbe incontrare degli errori:" An ADO-based application that is compiled in Windows 7 SP1 or in Windows Server 2008 R2 SP1 does not run in earlier versions of Windows " cioè "Un'applicazione basata su ADO che viene compilata in Windows 7 SP1 o Windows Server 2008 R2 SP1 non viene eseguito nelle versioni precedenti di Windows"" e ci suggerisce di leggere le istruzioni per risolvere detto problrma al seguente link : https://support.microsoft.com/it-it/kb/2640696 dove esiste anche un file di aggiornamento da scaricare. La mia appena celata contestazione è motivata dalla rabbia che assale un povero pellegrino quando scarica speranzoso una soluzione ad un suo problema e scopre che è stato un allocco a credere alla befana.
 

 

 

 

prelevato sul sito www.ennius.altervista.org