Newsgroup: it.comp.appl.access
Titolo: Filtro data che odia Ottobre!

Ciao a tutti
Ho questa situazione:
Ho creato una combo per filtrare gli ordini di un cliente.
La combo ha questa origine:
SELECT DISTINCT [RegistroOrdini].[Data] AS Espr1
FROM RegistroOrdini
WHERE
((([RegistroOrdini].[IdCliente])=[Forms]![DettagliNuova]![Me.TxtCliente ]))
ORDER BY [RegistroOrdini].[Data] DESC;
che mi estrae tutte le date diverse in cui si sono verificati gli ordini.
Sull'evento DopoAggiornamento della combo ho messo:
Me.cbxNumOrdini.RowSource = "SELECT IDordine, NumeroOrdine " & _
                                "FROM RegistroOrdini " & _
                                "WHERE IdCliente= '" & Me.TxtCliente & "' "
& _
                                "AND Data>= #" & Me.CbxDataInizio.Value & "#
";"
in modo che la listbox che contiene i numeri per il dettaglio peschi i dati
da questa nuova origine filtrata.
Vrie prove e va tutto, almeno fino a settembre.
Se nella combo seleziono 1 ottobre il filtro non funziona, nel senso che mi
fa vedere tutti gli ordini senza filtro, cioč TUTTI gli ordini del cliente.
Lo stesso vale per altri giorni di ottobre.
Preciso che:
Il campo DATA della tabella RegistroOrdini č impostato a DATA GENERICA
cosě come il FORMATO della COMBO di filtro
Che succede???
Marco

 ";"
Non so dire sicuramente cosa sta succedendo, ma ho due osservazioni:
1) idcliente è numerico o di testo?
Se come penso è numerico non devi usare gli apicetti nel confronto col
valore in maschera
2) la sintassi dell'SQL vuole che tu inverta il mese e l'anno rispetto
all'inserimento in maschera, perchè il formato è mm-gg-aa. Tu non lo fai...
Antonio

 all'inserimento in maschera, perchè il formato è mm-gg-aa. Tu non lo
fai...
Cioè devo formattare Me.CbxDataInizio come  mm-gg-aa???
ma allora perché 30/09/2003 lo riconosce e 1/10/2003 no?
Forse perché nella  lista non c'è una data 10 gennaio (l'inverso di 1
ottobre)
ma non ci può essere una data giorno 9 mese 30 e quindi reinterpreta il
tutto correttamente.
Giusto??
Marco

 ha scritto nel messaggio
news:%M7jb.5677$d1....@nntpserver.swip.net...

Ti avrebbe rifunzionato tutto se in CmbxDataInizio avessi selezionato una
data di ottobre ma che avesse il giorno maggiore di 12; di contro non ti
potrebbe funzionare per date di qualsiasi mese che abbiano il giorno minore
o uguale a 12.
Se, come sembrerebbe, IdCliente č un campo di tipo Testo, prova cosě:
Me.cbxNumOrdini.RowSource = "SELECT IDordine, NumeroOrdine " & _
"FROM RegistroOrdini WHERE IdCliente= '" & Me.TxtCliente & "'" & _
" AND Data>= #" & Format(Me.CbxDataInizio, "mm/dd/yyyy") & "#;"
Se invece il campo IdCliente fosse di tipo Numerico o Contatore, prova cosě:
Me.cbxNumOrdini.RowSource = "SELECT IDordine, NumeroOrdine " & _
"FROM RegistroOrdini WHERE IdCliente= " & Me.TxtCliente &  _
" AND Data>= #" & Format(Me.CbxDataInizio, "mm/dd/yyyy") & "#;"
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 Marco
Si, non esiste un mese 30 quindi quella data può essere interpretata in un
modo solo, e non sbaglia. Per le date ambigue come 1/10/2003 prevale
l'interpretazione mm/gg/aaaa.
Namor
-- 
 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel messaggio
news:%M7jb.5677$d1....@nntpserver.swip.net...
Cut
Ho risolto riformattando il campo data secondo le specifiche mm/gg/aaaa.
Grazie a tutti comunque.
Mi permetto di aprire una piccola polemica.
Che senso ha impostare un formato per le date nella sintassi sql
(mm/gg/aaaa) se poi il motore cerca di interpetarlo comunque???
Io sono stato "fortunato" perché ho fatto il debug su un caso impossibile
(mese 30)
ma supponiamo un diverso utilizzo.
 una società che emette fatture il 5 di ogni mese. In questo caso il debug
va tutto regolare.
Supponiamo poi che la suddetta società cambi giorno di fatturazione al 27.
Magra fiugra di m....
Non so, ma a me non sembra molto sensato. Mi rendo conto che forse è fatta
per "semplificare" la vita (almeno spero) ma è lo stesso una cosa stupida
perché quanto più una regola è rigida tanto più farai atenzione ad
osservarla (a livello di programmazione, si intende...)
Ciao marco

 (mm/gg/aaaa) se poi il motore cerca di interpetarlo comunque???
Stop
Ti risulta che i prodotti microsoft seguano sempre una certa logica?
Antonio