Newsgroup: it.comp.appl.access
Titolo: Funzione Choose su campi formato Data in Query

Salve
Vorrei riuscire ad utilizzare la funzione Choose in una query per scegliere 
con che data selezionare i record
Esempio voglio filtrare la Tabella Bolle per 1-data arrivo 2-data trasporto 
3-data registrazione
Sino ad oggi utilizzavo la funzione IIF avendo solo la scelta da un gruppo 
di opzioni tra data 1 e 2
adesso ho aggiunto l'opzione 3 e volevo utilizzare la funzione Choose ma non 
riesco a farla funzionare mi seleziona anche dei record con date al di fuori 
del criterio
Ho semplificato la prova che ho effettuato in questo modo
CAMPO DataSel: 
Choose([Forms]![DialogoContrassegni]![DataSelezione];[Trasporti]![DataDDT])
CRITERIO Between [Forms]![DialogoContrassegni]![DaDataDDT] And 
[Forms]![DialogoContrassegni]![ADataDDT]
se utilizzo
CAMPO DataSel: 
IIF([Forms]![DialogoContrassegni]![DataSelezione]=1;[Trasporti]![DataDDT])
con lo stesso criterio tutto funziona perfettamente.
Mi da' l'impressione di un problema di formattazione dalla data
Un grazie anticipato a tutti quelli che mi potranno aiutare
Andrea 

 ha scritto nel messaggio 
news:XG2Xh.14486$R_5.5...@twister1.libero.it...

non ho provato col CHOOSE, ma le date da passare a BETWEEN negli SQL 
'devono' essere nel formato americano. Inoltre devono stare tra #.
Qualcosa del tipo #mm/gg/aaaa#
spero che ti aiuti
Ivan 

 ha scritto nel messaggio 
news:462d9ae2$0$37198$4faf...@reader3.news.tin.it...

Ti ringrazio per la risposta, ma purtroppo non mi funziona nemmeno 
formattando le date
Ho provato ad utilizzare la funzione SWITCH ma niente da fare
Riepilogo dei miei test:
Se uso funzione IIF tutto funziona senza bisogno di formattare le date
Se uso funzione CHOOSE o SWITCH (con date formattate e non) mi estrapola 
record con date al di fuori del BETWEEN
Non riesco a capire dove sbaglio.
Continuo con altre prove.
Se hai qualche idea e un po' di tempo da dedicarmi ti ringrazio fin da ora.
Saluti

 ha scritto nel messaggio 
news:QAiXh.16479$uJ5.3...@twister2.libero.it...

forse ho capito dove stà il problema.
Non capisco dove immetti i criteri, se in una query salvata oppure in una 
creata 'al volo'.
Credo che nel primo caso le cose si facciano più complesse.
Se invece la crei da codice, non dovresti avere tutti questi problemi.
In pratica ti copi la definizione SQL della tua query e la assegni ad una 
variabile, che ti permette di definire a priori il campo da filtrare e i 
vari criteri.
A questo punto 'riassegni' la variabile alla proprietà SQL della query e la 
esegui.
In alternativa crei un criterio per ogni possibile scelta nella combo, e lo 
attivi da codice, sul campo giusto.
Io ho ricreato la tua situazione, ma mi manca qualcosa per trovare la 
soluzione.
Ivan 

 ha scritto nel messaggio 
news:462e0071$0$17949$4faf...@reader1.news.tin.it...

La query che creo e' salvata
Per il momento ho risolto in questo modo, concatenando la funzione IIF
 IIf([Forms]![DialogoContrassegni]![DataSelezione]=1;[Trasporti]![DataDDT];IIf([Forms]![DialogoContrassegni]![DataSelezione]=2;[Trasporti]![DataTras];[Trasporti]![SpuCon]))e mantenendo lo stesso criterioCRITERIO Between [Forms]![DialogoContrassegni]![DaDataDDT] And[Forms]![DialogoContrassegni]![ADataDDT]Appena posso provo anche le soluzioni da tè propostePer me resta comunque un mistero il mancato funzionamento di Choose e Switchcon lo stesso criterio di IIFGrazieAndrea

 ha scritto nel messaggio news:XG2Xh.14486$R_5.5...@twister1.libero.it...

La funzione Choose utilizza un indice numerico per restiturti un valore nell'elenco indicato; e se 
[Forms]![DialogoContrassegni]![DataSelezione] restituisce una data non è la stessa cosa, no?
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggio 
news:f0oa5i$vn6$1...@tdi.cu.mi.it...

[Forms]![DialogoContrassegni]![DataSelezione] restituisce l'indice 
dell'opzione scelta (la data con cui filtrare i record 1-data arrivo 2-data 
trasporto 3-data registrazione), infatti con la funzione IIF tutto funziona.
Grazie
Ciao
Andrea 

 Andrea
Il fatto che con l'IIF funziona non vuol dire nulla; invece è significativo il fatto che con Choose non funzioni...
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggio 
news:f0pj4r$rd3$1...@tdi.cu.mi.it...

[Forms]![DialogoContrassegni]![DataSelezione] è un gruppo di opzioni e mi 
restituisce il numero di opzione scelta 1 oppure 2 oppure 3
come ho risposto a Ivan lo stesso problema mi sorge anche con la funzione 
SWITCH
Grazie Ciao
Andrea 

 Andrea
Allora potrebbe essere spiegato così l'arcano: visto che l'IIF prevede 
l'eccezione del caso (Else) e la Choose no, è probabile che non hai 
impostato un valore predefinito del gruppo opzioni (o il campo associato non 
ha valore) e ritorna Null alla funzione.
Prova in questo modo:
Choose(nz([Forms]![DialogoContrassegni]![DataSelezione],0),...)
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggio 
news:f0prn3$509$1...@tdi.cu.mi.it...

Il valore predefinito e' 1 e dei record vengono estratti con la query, ma 
non rispettano il criterio
Grazie Ciao
Andrea 


scusate ma rileggevo la domanda originale e forse mi si č aperto uno 
spiraglio:
la funzione CHOOSE richiede un valore e una lista di elementi di 
corrispondenza.
Mi sembra che la lista di corrispondenze non ci sia, io vedo solo la 
corrispondenza per il valore = 1 (cioč ne vedo una sola!).
forse sbaglio ....

 forse sbaglio ....
O forse no...
Solo Andrea può dirci se ha rispettato la sintassi della funzione...
Ciao.
-- 
Sergio MAZZA 


E' questa la sintassi che ho utilizzato nella query e di errori non ne 
vengono segnalati; tutto funziona
ma i record selezionati non corrispondono al criterio
CAMPO DataSel: 
Choose([Forms]![DialogoContrassegni]![DataSelezione];[Trasporti]![DataDDT];[Trasporti]![DataArr];[Trasporti]![DataReg])
CRITERIO Between [Forms]![DialogoContrassegni]![DaDataDDT] And 
[Forms]![DialogoContrassegni]![ADataDDT]
La funzione Choose lo gia' utilizzata altre volte senza problemi ma non con 
corrispondenze a campi formato data/ora come in questo caso.
Vi ringrazio, ma non ho ancora capito dov'è il problema.
Saluti
Andrea

 ha scritto nel messaggio 
news:qM1Yh.18602$uJ5.3...@twister2.libero.it...

effettivamente la sintassi è giusta.
Allora un'altra domanda,
prima di incolpare il CHOOSE, verifica la sintassi del BETWEEN.
assegna un campo fisso e prova solo il criterio, potrebbe essere quello 
l'anello debole.....
Ivan 

 Andrea
Prova cosě:
CAMPO DataSel:
CDate(Choose([Forms]![DialogoContrassegni]![DataSelezione];[DataDDT];[DataArr];[DataReg]))
Praticamente racchiudi il valore restituito da Choose in una CDate che 
converte il valore in una data (se valida)...
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggio 
news:4630b454$0$37196$4faf...@reader3.news.tin.it...

Ecco le prove che ho effettuato su tuo consiglio
PROVA 1
CAMPO [Trasporti]![DataDDT]
CRITERIO Between [Forms]![DialogoContrassegni]![DaDataDDT] And
 [Forms]![DialogoContrassegni]![ADataDDT]
tutto OK
PROVA 2
CAMPO 
Choose([Forms]![DialogoContrassegni]![DataSelezione];[Trasporti]![DataDDT];[Trasporti]![DataTras];[Trasporti]![SpuCon])
CRITERIO Between #01/01/2007# And #31/12/2007#
tutto OK
PROVA 3
CAMPO 
Choose([Forms]![DialogoContrassegni]![DataSelezione];[Trasporti]![DataDDT];[Trasporti]![DataTras];[Trasporti]![SpuCon])
CRITERIO Between [Forms]![DialogoContrassegni]![DaDataDDT] And
[Forms]![DialogoContrassegni]![ADataDDT]
non filtra, vedo tutti i records come se il criterio non ci fosse.
(Spero domani di vedere, quello che non riesco a vedere oggi)
Grazie
Ciao Andrea

 ha scritto nel messaggio 
news:f0qebk$ra8$1...@tdi.cu.mi.it...

Ho provato
 CAMPO DataSel:
CDate(Choose([Forms]![DialogoContrassegni]![DataSelezione];[Trasporti]![DataDDT];[Trasporti]![DataTras];[Trasporti]![SpuCon]))
Mi segnala errore espressione non corretta o troppo complessa ecc.
Questo mi fa' pensare (devo fare qualche prova)
Grazie
Ciao
Andrea


a questo punto controlla se il campo [spuCon] da solo risponde bene al solo 
criterio BETWEEN.
In seconda ( ma credo non fondamentale) aggiungi i cancelletti nel criterio 
quando fai riferimento ai controlli di maschera.
Sospetto che ci sia un formato del campo SpuCon non uguale agli altri, vedi 
....
Ivan