Newsgroup: it.comp.appl.access
Titolo: [Access2000] Criteri query per Report

Salve a tutto il NG.
Vi spiego il mio problema.
Ho una query di selezione che utilizzo per aprire un report con dei dati
specifici che richiede chi compila una maschera non collegata a nessuna tbl
o query.
In questa maschera ho delle caselle di testo o combinate che dovrebbero
servire per ricercare dei dati specifici.
In questa maschera ci sono ad esempio queste caselle:
IDCliente
Esercizio
Nazione
DataOfferta
Prodotto
CategoriaMerceologica
Ora.....Ovviamente queste caselle sono collegate con la query del report
tramite criteri (ad esempio: Forms!ElaborazioneOfferta!IDCliente.....etc per
tutte le caselle della form).
Ora il problema č il seguente:
Se si compilano tutte le caselle di testo, il report di apre senza problemi.
Invece se non ne compilo anche una il report risulta vuoto.
Allora vorrei sapere se esiste un modo per fare queste elaborazioni, o
meglio ricerche, senza creare ogni volta una query diversa per ogni esigenza
(le ricerche sono illimitate e non si finirebbe mai di crearle). Poi quando
consegnerņ il programma, non posso dire al cliente che quella ricerca che
vuole lui non č prevista (che figura ci farei?)
Grazie ancora a coloro che vorranno darmi un consiglio!
Ultra

 Ultra
Metti come origine dati del report la query senza filtri, costruisci il
criterio al volo da vba nell'evento su click del pulsante di apertura e
passalo al report nell'argomento WhereCondition:
private sub.....
dim Filtro as string
filtro=iif(isnull(me.campotesto1);"";" AND campotesto1=""" & me.campotesto1
& """"
filtro=iif(isnull(me.campnumerico1);"";" AND campnumerico1=" &
me.campnumerico1
filtro=iif(isnull(me.ID);"";" AND ID=" & me.ID
filtro=.....
filtro=left(filtro,len(filtro)-5) 'toglie il primo " AND "
docmd.OpenReport "nomereport",acviewpreview,,filtro
end sub
Namor
**********
Working software for lazy people
                                             (elby)
**********

 Ultra
Nei criteri della query invece di:
Forms!ElaborazioneOfferta!Nazione
scrivi:
Like Nz([Forms]![ElaborazioneOfferta]![Nazione]; "*")
Così facendo se la casella di testo relativa alla Nazione nella maschera non
associata la lasci vuota non verrà fatto alcuna selezione sulla nazione.
Per maggiori dettagli leggi sull'help cosa ti dice circa la Funzione Nz e
l'operatore Like.
Stai comunque attento che così facendo verranno selezionati solo i record
per i quali il campo della Nazione non è Null.
Per selezionare anche i record che contengono il valore Null nel campo della
Nazione vai sul Sito Comune (link qui sotto) e nella Sezione Queries leggi
la FAQ di Federico Luciani intitolata "Visualizzare tutti i records con una
query parametrica.".
Naturalmente i ragionamenti che abbiamo fatto per i criteri della Nazione
valgano anche per i criteri di selezione degli altri campi.
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:juJcb.348341$lK4.11...@twister1.libero.it...

Ciao Roberto,
Grazie per il tuo consiglio, funziona benissimo. Vorrei sapere se è
possibile aggregare anche un Between al criterio che mi hai già scritto
tu.....credi che si possa fare? Ho provato in diversi modi ma non ci sono
riuscito.......
Ad esempio sulla casella Esercizio, vorrei poter dare la possibilità
all'autilizzatore di scegliere tra 2 o più anni la ricerca.
La prima casella di testo è Esercizio e la seconda è FinoA.
Grazie Ancora per il tuo aiuto
 Ultra


Ciao Roberto,
Il campo esercizio è di tipo numerico intero lungo, ha un valore predefinito
che è =Year(Date())
quindi restituisce 2003.
Grazie Ancora
Ultra

 ha scritto nel messaggio
news:8xUcb.124307$hE5.4...@news1.tin.it...

Se la tabella che contiene i dati e su cui è basata la query si chiama
Tabella1.
Se il campo di Tabella1 che contiene l'anno è di tipo Numerico e si chiama
Esercizio.
Se la maschera in cui imposti i parametrri di selezione mi sembra di capire
che si chiami ElaborazioneOfferta.
Se i controlli di ElaborazioneOfferta dove imposti gli anni di ricerca si
chiamano rispettivamente Esercizio e FinoA.
Nei criteri della query relativi al campo Esercizio scrivi:
Between Nz([Forms]![ElaborazioneOfferta]![Esercizio]; DMin("Esercizio";
"Tabella1")) And Nz([Forms]![ElaborazioneOfferta]![FinoA]; DMax("Esercizio";
"Tabella1"))
Così facendo, se non digiti alcun valore nelle caselle di testo Esercizio e
FinoA, la query visualizzerà i record di tutti gli esercizi.
Se invece digiti qualcosa SOLAMENTE nella casella di testo Esercizio, la
query ti mostrerà solamente i record il cui anno di esercizio è maggiore o
uguale a quello digitato nella casella Esercizio.
Se poi digito qualcosa SOLAMENTE nella casella di testo FinoA, la query
visualizzerà solamente i record il cui anno di esercizio è minore o uguale a
quello digitato nella casella di testo FinoA.
Se infine digiti qualcosa in entrambe le caselle di testo, la query ti
mostrerà i record il cui anno di esercizio è compreso tra i duie valori
digiteti nelle due caselle di testo.
Naturalmente, se vuoi vedere i record di un solo esercizio, dovrai digitare
tale anno in ambedue le caselle di testo.
