Credo sia noto che ci sono dei problemi con l'introduzione del datatype Date/time extended. Nel mio caso, una semplice istruzione vba
sData = Cdate(me.data)
ha cominciato all'improviso a causare un errore di Type Mismatch. Dopo qualche indagine, ho notato che nella tabella legata al form (e anche in altre) il datatype usato nelle date (date/time) era stato sostituito proditoriamente da Date/time extended. Ho provato a riportarlo in date/time, ma ovviamente, non posso cambiare il datatype in una tabella access linkata (abbastanza logicamente, se ci provo il sistema mi dice che non si può, e devo agire sulla tabella in sqlserver) ; d'altro canto, il datatype nella tabella sqlserver era rimasto datatime2(0), com'era in origine.
Spulciando qua e là, finalmente ho letto che quando si linkano le tabelle access con quelle sqlserver, Microsoft ha deciso che il datatype datetime2(0) deve corrispondere a data/time extended: il che, nel mio caso, ma anche in altri, a giudicare dai commenti in web, ha causato questi problemi. Ci sono varie soluzioni, molte basate sul fatto che date/time extended mappa su una string di 42 caratteri, ma la soluzione più banale che ho trovato (ma non mi piace) è questa: nelle opzioni di access, tab current database, ho eliminato la spunta a Support date/time extended.
![](https://www.iprogrammatori.it/forum-programmazione/attachments/31325_250210_5949.png)
Fatto ciò, relinkando le tabelle, il datatype datatime0(2) nelle tabelle sql viene rimappato a semplice datetime in quelle access, e il problema sparisce. Non mi piace perchè in sostanza sto rinunciando a qualche miglioramento introdotto da MS, ma visto che per ora non ho bisogno di maggiore precisione nelle date o nel tempo, mi va bene così, in attesa che gli esperti risolvano il bug.