Nota dell'autore, che sono io: mi diverto e basta, chi lo fa per lavoro si assume la resposabilità e il rischio di applicare questi suggerimenti. Se una modifica al registro sistema 1 cosa e ne fa saltare 10 non lamentatevi con me.
Philcattivocarattere ha scritto:
Però non c'è verso di fargli fare la stessa cosa da Access 2021!!!Tadaaaan, indovinate cosa farò tra oggi e domani?
Tadaaaaan 2, la vendetta.
Forse ci sono.
Copia di sicurezza del registro, rigorosamente.
Dai un'occhiata a tutte le occorrenze nel registro di "ACE.OLEDB.12". Se c'è Visual Studio potresti trovarne qualcuna di troppo per quello che serve, ma è giusto per avere sotto controllo un po' la situazione.
Nello specifico ora punta a queste chiavi e valori, guarda se sono come quelle che ho io sulla VM dove prima ho installato A2021 64bit e dopo DatabaseEngine2010 64bit (inserisco un ritorno a capo manuale, per facilitarne la lettura ma ovviamente è tutto dritto in un'esportazione della voce di registro)
[HKEY_CLASSES_ROOT\CLSID{3BE786A0-0366-4F5C-9434-25CF162E475E}\InprocServer32]
@="C:\\Program Files\\Common Files\\Microsoft Shared\\OFFICE14\\ACEOLEDB.DLL"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID{3BE786A0-0366-4F5C-9434-25CF162E475E}\InprocServer32]
@="C:\\Program Files\\Common Files\\Microsoft Shared\\OFFICE14\\ACEOLEDB.DLL"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRunREGISTRY\MACHINE\Software\Classes
\CLSID{3BE786A0-0366-4F5C-9434-25CF162E475E}\InprocServer32]
@="C:\\Program Files\\Common Files\\Microsoft Shared\\OFFICE16\\ACEOLEDB.DLL"
Ne avevo avuto il vago sentore leggendo qua e là in cui si parlava di una installazione "fasulla" di ACE.OLEDB.12 da parte di Access versioni successive alla 2010 ed è anche il motivo per cui da uno script vbs funzionava ma da A2021 no: ci sono 2 versioni di ACE.OLEDB.12 che puntano a file diversi.
La prima è quella "al di fuori" di Office (o almeno di Access, non ho provato da altri prodotti della suite) che usa il file
C:\Program Files\Common Files\Microsoft Shared\OFFICE14\ACEOLEDB.DLL
Se si lavora invece con Access, anche in latebinding, il programma quando è ora di cercare le informazioni del provider resta all'interno della sua "bolla" creata dall'installazione ClickToRun ed usa il file
C:\Program Files\Common Files\Microsoft Shared\OFFICE16\ACEOLEDB.DLL
che in realtà è il Provider di ACE.OLEDB.16. I due file ovviamente non sono uguali e una delle differenze sta proprio nella capacità del primo di leggere i file in formato A97 che il secondo non ha.
Trucchetto sul registro, da OFFICE16 a OFFICE14 nella chiave che si trova in ClickToRun e Access 2021 a 64bit si comporta come ci si sarebbe aspettati all'inizio (o almeno come mi aspettavo io, anche se il programma ha fatto solo quello che gli hanno detto di fare).
Sul web si trova anche che qualcuno ha avuto beneficio dall'installazione dei Data Connectivity Components 2007 ma non ho provato (già c'è bisogno di un prodotto di cui Microsoft non rilascia più gli aggiornamenti, non vado ad installarne un altro ancora più vecchio quando risolvo con un trucchetto sul registro)
Non è da escludere che l'applicazione di qualche aggiornamento e/o operazioni di riparazione o altro possano ripristinare il riferimento al file "sbagliato" nel registro ma... che dire... si intercetta l'errore e si prova a correggerlo già dal codice VBA, se si ritiene utile fare questa cosa automaticamente.
NB: io mi diverto e basta, chi lo fa per lavoro si assume la resposabilità e il rischio di applicare questi suggerimenti. Se una modifica al registro sistema 1 cosa e ne saltare 10 non lamentatevi con me.(
repetita iuvant? no, mi paro il cosiddetto)