Funzione Date() non funziona più

di paccatore il
12 risposte

Buongiorno a tutti,

ho questa query che prima degli aggiornamenti Office 2019, installati ieri, funzionava correttamente, mentre ora non funziona più, nel senso che non restituisce alcun record, la tabella1 è collegata in ODBC a SQL:

SELECT Tabella1.*
FROM Tabella1
WHERE (((Tabella1.DataRegistrazione)=Date()));

per farla funzionare devo modificarla così:

SELECT Tabella1.*
FROM Tabella1
WHERE (((Tabella1.DataRegistrazione)=Format(Date();'aaaa-mm-gg')

L'unica cosa che ho notato è che nella tabella ODBC, la data prima era in formato gg/mm/aaaa mentre ora è formattata aaaa-mm-gg

Ho provato a cercare qualche impostazione tra le opzioni della data di windows e di access e ODBC, ma non ho risolto, per caso a qualcuno è capitato? C'è un modo per evitare di modificare tutte le query? Grazie

12 Risposte

  • La cosa mi lascia molto perplesso… inserendo la Funzione nativa all'interno della stringa, la risoluzione/conversione viene delegata al Driver se il formato in SQL_Server è di tipo Corretto.

    Cosa diversa, molto diversa se scrivessi una cosa simile:

    Dim strSQL As String
    strSQL ="SELECT Tabella1.* FROM Tabella1 WHERE Tabella1.DataRegistrazione=" & Date();

    Questo ovviamente non funzionerebbe… in quanto il dato sarebbe affetto dai Regional Settings, ovvero il Formato del S.O. che normalmente vede “dd/mm/yyyy” contrariamente ad SQLServer che lavora in formato ISO yyyymmdd o accezione anglosassone.

    In ogni caso leggi questo:

    https://nolongerset.com/sql-server-date-fields-ms-access/

    https://ask.sqlservercentral.com/questions/8600/convert-ms-access-datetime-to-sql-server-datetime.html

    https://www.access-programmers.co.uk/forums/threads/date-format-not-respected.316059/

  • Grazie Alex! leggerò gli articoli…

    nel frattempo ho notato che, aprendo la stessa tabella, c'è differenza tra un file accdb e un file mdb:

    MDB:

    ACCDB:

  • Verifica i Regional Settings.

  • 08/09/2023 - @Alex ha scritto:


    Verifica i Regional Settings.

    Ciao @Alex, una domanda se posso… 

    trattando la data da confrontare nel formato CStr(CLng(Date)) ….

    SELECT Tabella1.*
    FROM Tabella1
    WHERE Tabella1.DataRegistrazione = CStr(CLng(Date));

    Il problema si presenterebbe comunque oppure assolutamente non è pensabile ? 

  • Anche variando i regional settings di windows come segue non cambia nulla… però non ho provato a riavviare il PC

  • 07/09/2023 - paccatore ha scritto:


    prima degli aggiornamenti Office 2019, installati ieri,

    Mi discosto dagli altri suggerimenti invitandoti a verificare che la cosa sia collegata agli aggiornamenti, tornando alla versione precedente.

    https://support.microsoft.com/en-gb/topic/how-to-revert-to-an-earlier-version-of-office-2bd5c457-a917-d57e-35a1-f709e3dda841

    Lo so, non risolve il problema attuale, con la versione aggiornata, ma almeno vai avanti se non ci sono altri stratagemmi.

  • 08/09/2023 - By65Franco ha scritto:


    08/09/2023 - @Alex ha scritto:


    Verifica i Regional Settings.

    Ciao @Alex, una domanda se posso… 

    trattando la data da confrontare nel formato CStr(CLng(Date)) ….

    SELECT Tabella1.*
    FROM Tabella1
    WHERE Tabella1.DataRegistrazione = CStr(CLng(Date));

    Il problema si presenterebbe comunque oppure assolutamente non è pensabile ? 

    Usando la conversione in LONG il problema bypassa i regional settings, quelli valgono per il formato visualizzato e salvato…. Per questo io uso sempre questo metodo, tuttavia per il server sql va verificat  il fieldtype serverside.

  • 08/09/2023 - @Alex ha scritto:


    tuttavia per il server sql va verificat  il fieldtype serverside.

    Capito, allora approfondisco fildtype perchè nasce da qui la mia perplessità. Grazie !!!

  • Che FieldType hai lato Server…?
    Sicuro di aver letto i Link che ti ho postati sopra…?

  • 08/09/2023 - @Alex ha scritto:


    Che FieldType hai lato Server…?
    Sicuro di aver letto i Link che ti ho postati sopra…?

    Il FieldType nella tabella SQL è di tipo DATE.

    Appena riesco li leggo, ma comincio a pensare che sia più un'impostazione di Access 2019, ma non riesco a trovarla…

  • Ho dato una letta agli articoli che mi hai gentilmente postato, ma non posso cambiare il date type sulla tabella SQL,

    inoltre ho già il driver 17, probabilmente risolveranno anche questa con un prossimo aggiornamento:

    nel frattempo passo da Date() a Format(Date();'aaaa-mm-gg')
Devi accedere o registrarti per scrivere nel forum
12 risposte