Newsgroup: it.comp.appl.access
Titolo: SALTARE UN CRITERIO

 Sono un principiante del fantastico mondo di Access, da un paio di mesi
seguo in silenzio le vostre indicazioni...e pian piano ho creato un
piccolo Gestionale.
..e mi sono piantato :-)) !
.il problema forse e' semplice...:
(non per me sigh.!)
 Ho una query parametrica che trae i dati per i criteri da una form, e fin
qui tutto ok..
 
Nella form ho inserito 4 controlli nei quali inserire delle date:
Data fattura inizio
                      =====> che vanno a popolare un criterio nella query
Data Fattura fine
Data pagamento inizio
                      =====> che vanno a popolare un criterio nella query
Data pagamento fine
il tutto per ricercare i movimenti (o meglio i record) con "between", 
Grazie ai preziosi suggerimenti del gruppo e del sito comune tutto
funziona, ora vorrei inserire un controllo (tipo si/no) in maniera che
l'utente possa scegliere da form se utilizzare il criterio di ricerca
oppure no...come posso fare?
Spero di essermi spiegato ed avere utilizzato le "terminologie" corrette, 
Comunque grazie a tutti i "mostri sacri" che frequentano il newsgroup e
aiutano noi poveri profani con i loro preziosi suggerimenti
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Lo so, quello che ti dň non č la fine del mondo dei suggerimenti!
Ma č la strada piů semplice:
Perche non crei una copia della query nella quale elimini i criteri.
Crei un bel pulsante in cui scrivi per esempio "Qry Senza Date"
e ti apri una copia della (maschera?) che, in questo caso,
 prende i dati dalla nuova query.
Lo so č un uovo di colombo.
Se non ti piace potresti copiare la query in VBA e lě eliminare i  criteri.

 oppure no...come posso fare?
Che vor dì: "oppure no" ?
Antonio


Non potresti aggirare il problema allargando il range?
tipo data fattura da 01/01/90 a 31/12/20, cosě il criterio rimane ma ti fa
passare tutti i records ed č come se non ci fosse.
Ale.

 Che vor dě: "oppure no" ?
   l'intenzione sarebbe di potr far scegliere all'utente fra 3 possibili
modi di ricerca:
1) voglio cercare i record sia in base alla data della fattura, che in
base alla data di pagamento
2) voglio cercare solo sulla base della data di fattura o solo della data
di pagamento
3) non voglio utilizzare alcun criterio temporale
Grazie di esserti interessato, spero di essere stato piu' chiaro..
ciao!


 Se non ti piace potresti copiare la query in VBA e lě eliminare i  criteri.
Effetivamente sarebbe l'uovo di Colombo! :-))
Ma dovrei creare una maschera con tre pulsanti per lanciare tre diverse
query parametriche, a seconda del tipo di ricerca che voglia
effettuare...(vedi risposta a Biso).. 
Io vorrei creare semplicemente un controllo spunta (nella form)la cui
selezione faccia utilizzare il criterio alla query, e la mancata selezione
faccia "ignorare" il criterio...
Altrimenti avendo due criteri data, il risultato che ottengo č che
inserendo una data fattura ed una data pagamento (avendo fra l'altro
inserito nei criteri la funzione &"*" per permettere la ricerca senza
dati)ottengo record che soffisfano indistintamente sia l'uno o l'altro
criterio, ad es.:
criterio data fattura >19/02/03<
criterio data pagamento >31/03/03<
Ottengo tutte le fatture emesse il 19/02/03 ma in pagamento anche prima o
dopo il 31/03/03
e tutte le fatture in pagamento il 31/03/03 ma emesse anche prima o dopo
il 19/02/03
.spero di essere stato chiaro, comunque grazie a tutti!
Grazie comunque dell'uovo di Colombo!  Ciao!



La soluzione potrebbe essere la una via di mezzo.
Cioč tre query con un pulsante.
sull'evento Click del comando che lancia la Query:
Private Sub Comando8_Click()
'Se i due o piů controlli non sono vuoti...
If Not IsNull([NomeControllo1]) And Not IsNull([NomeControllo2]) Then
'lanci la query con piů parametri
DoCmd.OpenQuery "Query1"
'altrimenti lanci un'altra query2
ElseIf Not IsNull([NomeControllo1]) Then
DoCmd.OpenQuery "Query2"
Else
'Lanci la query senza filtri
DoCmd.OpenQuery "Query3"
End If
End Sub
Per i puristi... Lo so si potrebbe scrivere un codice migliore
ma questo spiega bene la logica...


Visto che la selezione la fai in base alle date, certo non puoi utilizzare
la funzione Like ed il carattere jolly "*", anche perchè hai deciso di usare
la funzione Between ... And.
Se la tabella che contiene i dati e su cui hai basato la query di selezione
parametrica si chiama Tabella1 e contiene due campi chiamati rispettivamente
DataFattura e DataPagamento sui quali effettui appunto la selezione.
Se la maschera in cui digiti le 4 date parametro si chiama Maschera1 ed i 4
controlli si chiamano rispettivamente DataFatInizio, DataFattFine,
DataPagInizio e DataPagFine.
Io eviterei per risolvere il tuo problema di usare una casella di controllo
per indicare ad Access se e come effettuare o meno la selezione (nessuna,
solo sulla data fattura, solo sulla data di pagamento, su ambedue le date
ecc.).
Invece digiterei nei 4 controlli solamente la/le data/date significativa/e
ai fini della selezione (al limite non digitare alcuna data nel caso in cui
voglia che la query mi visualizzi tutti i record, caso che equivarrebbe a
settare a No la tua casella di controllo).
Per realizzare quanto sopra, nella query, nei criteri relativi al campo
DataFattura scrivi:
Between Nz(Forms!Maschera1!DataFatInizio; DMin("DataFattura"; "Tabella1"))
And Nz(Forms!Maschera1!DataFatFine; DMax("DataFattura"; "Tabella1"))
Invece nei criteri relativi al campo DataPagamento scrivi:
Between Nz(Forms!Maschera1!DataPagInizio; DMin("DataPagamento"; "Tabella1"))
And Nz(Forms!Maschera1!DataPagFine; DMax("DataPagamento"; "Tabella1"))
Fatto questo se vorrai visualizzare tutti i record di Tabella1, non devi
digitalizzare nessuna delle 4 date parametro.
Se vorrai visualizzare tutte le fatture con DataFattura maggiore o uguale di
un una certa data, a prescindere dalle date di pagamento, digita solamente
la tua data nella casella di testo DataFatInizio e nulla nelle altre tre
caselle di testo.
Se vorrai visualizzare tutte le fatture con DataFattura minore o uguale di
un una certa data, a prescindere dalle date di pagamento, digita solamente
la tua data nella casella di testo DataFatFine e nulla nelle altre tre
caselle di testo.
Se vorrai visualizzare tutte le fatture con DataPagamento maggiore o uguale
di un una certa data, a prescindere dalle date di fattura, digita solamente
la tua data nella casella di testo DataPagInizio e nulla nelle altre tre
caselle di testo.
Se vorrai visualizzare tutte le fatture con DataPagamento minore o uguale di
un una certa data, a prescindere dalle date di fattura, digita solamente la
tua data nella casella di testo DataPagFine e nulla nelle altre tre caselle
di testo.
Naturalmente a seconda di quante date parametro digiti (da nessuna a 4) ti
si crerà una casistica di selezione ben maggiore delle tre possibilità da te
ipotizzate.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ma questo spiega bene la logica...
.e io con la logica...ho realizzato 4 query aperte da pulsante...e tutto
funziona..mille grazie!!!
Sono in debito con te!..ciao!


 --
Prego ma a onor del vero la soluzione di Roberto da Casa
è più... logica. Non so... fai tu! Ciao