Newsgroup: it.comp.appl.access
Titolo: A97 - Problema Date

Ho riscontrato un grosso problema con Access 97 per quanto riguarda le Date.
Avevo aperto una chiamata con Microsoft ma non sono riusciti a risolverlo.
Se dichiaro le variabili PP e CC come tipo Date alla query arrivano delle
date completamente sbagliate se il giorno del mese è > 12, altrimenti
funziona bene.
In poche parole porta il giorno al posto dell'anno.
Il problema l'ho risolto dichiarandole come String.
Dim wolf As String, SS As Form, PP As String, CC As String        -->
funziona correttamente
'Dim wolf As String, SS As Form, PP As Date, CC As Date            --> Non
funziona
If Not IsNull(SS![ad]) Or Not IsNull(SS![dd]) Then
    PP = Format((SS![ad]), "mm/dd/yyyy")
    CC = Format((SS![dd]), "mm/dd/yyyy")
    fox = fox & " T_CodDis.[MK1_DATACR] Between " & "#" & PP & "#" & " AND "
& "#" & CC & "#" & " AND "
End If
Altra soluzione che avevo trovato era :
    'PP = Mid(CStr(SS![AD]), 4, 2) & "/" & Left(CStr(SS![AD]), 2) & "/" &
Right(CStr(SS![AD]), 2)
    'CC = Mid(CStr(SS![DD]), 4, 2) & "/" & Left(CStr(SS![DD]), 2) & "/" &
Right(CStr(SS![DD]), 2)
le trasformavo in tipo stringa in questa fase.
Avete riscontrato anche voi questo problema ?
Come lo avete risolto ?
--
Ciao e grazie 1000
Marco S.

 wrote in message
news:9dtj1u$c4e$1...@pinco.nettuno.it...

Con le date ho sempre avuto da litigare. Poi ho scoperto la funzione CVDate()
(sostituita in Access 2000 da CDate()) ed ho risolto i problemi.
Prova:
PP = CVDate(SS![ad])
CC = CVDate(SS![dd])
In questo modo non ti interessa neppure sapere qual'è il formato data delle
impostazioni internazionali del pannello di controllo!
Ciao!
Esteban
Hosted by 
www.seber.it


Mi spiace ma non funziona cmq, impostando nella maschera di ricerca
da data = 10/04/01
a data =23/04/01
Nella query mi ritrovo :
Between #04/10/01# And #01/04/23#
Cmq molte grazie
Ciao Marco S.

 wrote in message
news:9dtkn8$cko$1...@pinco.nettuno.it...

Nella query stessa puoi usare la funzione cvdate()!!
Between CVDate(SS![ad]) and CVDate(SS![dd])


 Ciao Marco S.
Se usi Access 97 versione italiana.
Se il formato data breve delle Impostazioni internazionali č gg/MM/aaaa o
gg/MM/aa.
Se la maschera dove imposti i parametri si chiama Maschera1 e le due caselle
di testo non associate si chiamano DaData e AData.
Se nelle due caselle di testo hai digitato 10/04/01 e 23/04/01.
Se nella riga criteri di un campo Data/ora di una query hai scritto:
Between [Forms]![Maschera1]![DaData] And [Forms]![Maschera1]![AData]
la query seleziona i record il cui campo Data/ora č compreso tra il 10
aprile 2001 e il 23 aprile 2001.
Ammesso che nella funzione Between...And vuoi esplicitare i formati delle
due caselle di testo, nei criteri devi scrivere:
Between Format([Forms]![Maschera1]![DaData];"gg/mm/aaaa") And
Format([Forms]![Maschera1]![AData];"gg/mm/aaaa")
Perň, incuriosito dal tuo problema, ho fatto piů prove e l'indicazione del
formato cosě scritta l'ho trovata pleonastica.
La query NON mi ha funzionato solamente quando nella riga criteri della
griglia ho scritto:
Between Format([Forms]![Maschera1]![DaData];"mm/gg/aaaa") And
Format([Forms]![Maschera1]![AData];"mm/gg/aaaa")
Spero di esserti stato di aiuto.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


Grazie per l'interessamento,
io cambio la query con una funzione SQL, ti riporto una parte del codice:
-------
Dim QQ As QueryDef, db As Database
Dim wolf As String, SS As Form, PP As Date, CC As Date
Dim fox As String
Set db = CurrentDb()
Set QQ = db.QueryDefs("Q_Ric_Sql")
Set SS = Forms![S_GestCodDis]
wolf = wolf & " SELECT DISTINCTROW T_CodDis.[MK1_CODICE],
T_CodDis.[MK1_DESC], T_CodDis.[MK1_CARATT], T_CodDis.[MK1_DATACR],
T_CodDipendente.[Nome Dip], T_CodDis.[MK1_UMG], T_CodDis.[MK1_FORMATO],
T_CodDis.[MK1_CLASSE] "
wolf = wolf & " FROM T_CodDipendente INNER JOIN T_CodDis ON
T_CodDipendente.Codice = T_CodDis.[MK1_CODDIP] "
If Not IsNull(SS![AD]) Or Not IsNull(SS![DD]) Then
    PP = Format((SS![AD]), "mm/dd/yyyy")
    CC = Format((SS![DD]), "mm/dd/yyyy
    fox = fox & " T_CodDis.[MK1_DATACR] Between " & "#" & PP & "#" & " AND "
& "#" & CC & "#" & " AND "
End If
If fox <> "" Then
    fox = Mid(fox, 1, Len(fox) - 5)
    wolf = wolf & " WHERE " & fox
End If
QQ.SQL = wolf
--------
SS![AD] = 10/04/01
SS![DD]) =23/04/01
Nella query "Q_Ric_Sql" mi ritrovo :
Between #04/10/01# And #01/04/23#
Se invece imposto --> PP As String, CC As String
il tutto funziona correttamente



Come la risposta che ho dato a Roberto, io modifico la query ogni volta
attraverso del codice SQL.
--
Ciao e ancora grazie
Marco S.


Se mi fai sapere mi fai una cortesia.
ciao,


 wrote in message
news:9du231$gjn$1...@pinco.nettuno.it...

E' una cosa che faccio quotidianamente: difficilmente ho delle query 'statiche'.
Nessuno ti vieta di scrivere:
fox = fox & " T_CodDis.[MK1_DATACR] Between CVDate(""" & PP & """) AND
CVDate(""" & CC & """) AND "


 Avevo aperto una chiamata con Microsoft ma non sono riusciti a risolverlo.
Pazzesco!
Ciao, Simone

 SQL:
Anzi ho provato molto volentieri, ma il risultato è stato negativo.
Non inverte più la data ma chiaramente mancando # non la riconosce come
tale.
Il risultato è:
Between 10/4/1 And 23/4/1
Quindi non trova nessun record.
--
Ciao e grazie
Marco S.


Ho inserito nel codice la seguente riga :
 fox = fox & " T_CodDis.[MK1_DATACR] Between CVDate(""" & PP & """)  And
CVDate(""" & CC & """) AND "
Il risultato della query č stato questo:
Between CVDate("04/10/01") And CVDate("23/04/01")
All'apparenza mi sembrava che funzionasse correttamente, poi facendo
un'analisi piů dettagliata dei record mi sono accorto che ha trovato quelli
che vanno dal 23/04/01 al 16/05/01 ???? misteri di Access ?
Infatti me ne sono accorto perchč ha trovato 245 record rispetto ai 76 di
quella che funziona correttamente --> Between #10/04/01# And #23/04/01#


 Between CVDate("04/10/01") And CVDate("23/04/01")
Ho fatto un'ulteriore verifica e ho notato che in questo caso inverte le
date con il giorno del mese < 12
Infatti mi ha trovato dal 23/04/01 all'ultimo record inserito del 16/05/01.
Cmq grazie a tutti voi, continuerà a tenere le variabili che fanno
riferimento a date di tipo "String".
Ciao Marco S.