Problemi con la gestione delle date in access

mercoledì 05 marzo 2008 - 15.20

ham Profilo | Newbie

Ho un grossom problema: In una maschera ho due campi tipo data e devo fare una ricerca entro tali date in una query.
io scrivo:
stlinKcriteria="[dataregistrazione] between #" & [testo26] & "# and #" & [testo27]
dove testo26 e testo 27 sono i miei campi data sulla maschera di ricerca

il problema è che quando testo26 per es. è = "02/01/2008" il filtraggio mi viene come se il mese fosse febbraio e quindi mi elenca tutti i record dal 01/02/2008
invece se testo26 è =" 13/01/2008" mi elenca tutti irecord dal 13/01/2008.
In definitiva se il giorno è piu piccolo di 12 ed il mese è piu piccolo di 12 ( 02/03/2008) mi prende TESTO26 come se fosse una data inglese se invece il giorno è più grande di 12 ( 13/01/2008) si comporta correttamente.
WindowsXP ha il sistema italiano di date cioè (gg/mm/aaaa) .
Aiutatemi che sto impazzendo

lbenaglia Profilo | Guru

>il problema è che quando testo26 per es. è = "02/01/2008" il
>filtraggio mi viene come se il mese fosse febbraio e quindi mi
>elenca tutti i record dal 01/02/2008
>invece se testo26 è =" 13/01/2008" mi elenca tutti irecord dal
>13/01/2008.

Per evitare qualunque fraintendimento nella gestione delle date, utilizza nelle query SQL il formato americano #MM/DD/YYYY# oppure ISO 'YYYY-MM-DD'.

In alternativa puoi incapsulare le tue query SQL in oggetti Query parametrici che andrai a richiamare lato client utilizzando la classe ADODB.Command oppure OdbcCommand (ADO.NET).

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

ham Profilo | Newbie

scusa, sono un novello in access , ma ho una applicazione solo Access e quindi apro una maschera con il comando:

DoCmd.OpenForm stDocName, , , stLinkCriteria
In cui stlinKcriteria è:

stlinKcriteria="[dataregistrazione] between #" & [testo26] & "# and #" & [testo27]


e mi fa il casino che ti ho descritto
Grazie per l'aiuto

grancati Profilo | Newbie

Ciao,

come già detto da Lorenzo, il formato predefinito delle date nelle query di Access è #MM/DD/YYYY#
quindi
----
stlinKcriteria="[dataregistrazione] between #" & Format([testo26],"mm/dd/yyyy") & "# and #" & Format([testo27],"mm/dd/yyyy") & "#"
----

per comodità puoi delegare la delocalizzazione delle date alla funzione Cdate()
es.
----
stlinKcriteria="[dataregistrazione] between Cdate('" & [testo26] & "') and Cdate('" & [testo27] & "')"
----

Ciao
Giorgio

ham Profilo | Newbie

Grazie a tutti . Adesso funziona a meraviglia.
Ne approfitto:
Come faccio a passare la mia applicazione access ad un computer che non ha access installato ?
E' possibilie far girare una applicazione access su di un mac?
Saluti

grancati Profilo | Newbie

Ciao,

il computer deve avere Access installato o almeno la versione Runtime.

vedi:
Sviluppo di soluzioni con Access 2003 Developer Extensions
http://www.microsoft.com/italy/msdn/prodotti/vstudio/officetools/sviluppo.mspx

Introduzione a Access 2007 Developer Extensions e Runtime
http://office.microsoft.com/it-it/access/HA102188681040.aspx

Ciao
Giorgio
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5