Newsgroup: it.comp.appl.access
Titolo: Query parametrica

Ciao a tutti
In una query ho inserito la seguente istruzione
IIf([Forms]![FRM 
Dichiarazioni_Registro]![Completo]="SI";-1;IIf([Forms]![FRM 
Dichiarazioni_Registro]![Completo]="NO";0;IIf([Forms]![FRM 
Dichiarazioni_Registro]![Completo]="Tutto";Like "*")))
Quando eseguo la query indicando nel parametro "SI" mi fa vedere solo i 
record con il campo flaggato, quando eseguo la query indicando non mi fa 
vedere i record con il campo non flaggato (fin qui quindi tutto 
funziona), quando invece inserisco tutto la query mi fa vedere solo i 
record flaggati. Cosa sbaglio?.
Grazie
Andler

andler ha scritto:

Non so cosa sbagli ma per aiutarti posso dirti come risolvo casi come
questi.
Nella maschera utilizzo due controlli: un gruppo di opzioni (visibile)
e una casella di testo (non visibile).
Nel gruppo di opzioni inserisci tre opzioni "Sì" con valore -1, "No"
con valore 0 e "Tutto" con valore 1.
Sull'evento "Dopo l'aggiornamento" del gruppo di opzioni imposti:
select case me.[tuogruppo_opzioni]
case -1,0
me.[casella_txt]=me.[tuogruppo_opzioni]
case else
me.[casella_txt]="*"
end select
Nella query fai riferimento alla casella di testo nei criteri ed il
gioco è fatto...
Ricordati di dare alla casella di testo un valore predefinito
appropriato a seconda dell'opzione predefinita.
Bye



Dichiarazioni_Registro]![Completo]="NO";0))
Or [Forms]![FRM Dichiarazioni_Registro]![Completo]="Tutto"
-- 
HTH
Karl
*********
Access FAQ: 
www.donkarl.com/it

 
Grazie mille.....
così funziona perfettamente e, da neofita, sono riuscito a capirne la 
logica.
Spero così di saperemela cavare in casi analoghi.
grazie ancora
andler

 
Finalmente ho avuto un attimo di tempo per testare meglio la query.
Purtroppo tale query funziona solo se la selezione si basa su di un solo 
parametro. Se però i parametri sono + di uno non funziona più.
Nel caso di specie nel FRM Dichiarazioni_Registro i campi su cui faccio 
la selezione sono:
Completo:
Privacy:
Banca:
Cliente:
Cariche:
tutti parametri che possono assumere il valore "SI", "NO" e "Tutto".
Hai qualche altra soluzione "veloce" senza dover scrivere stringhe di 
programmazione?.
Grazie.
Ciao
Andler

 programmazione?.
lo "sfolting" del quoting č encomiabile, ma se non lasci appena appena il
quesito originale...
Antonio

> programmazione?.
ciao andler

 >> programmazione?.
Via codice sarebbe piů pulito
Antonio

 Via codice sarebbe più pulito
immagino.... però non so utilizzarlo.
ciao
andler

LA query è composta da una decina di campi di cui alcuni sono campi di 
tipo Si/NO.
Ho creato un form con campi non associati per filtrare la tabella (su 
cui si agisce la query) in base a tutta una serie di filtri.
Taluni di questi filtri agiscono sui campi si/no.
In tal caso avrei inserito nell'elenco valori del filtro i valori (SI NO 
e TUTTO).
Così facendo filtrerei tutti i record con valore si nel campo X oppure 
tutti i record con valore NO oppure (mettendo tutto) vorrei dire al 
filtro di non agire.
Il filtro inserito nel campo "COMPLETO" è il seguente:
If([Forms]![FRM
Dichiarazioni_Registro]![Completo]="SI";-1;IIf([Forms]![FRM
Dichiarazioni_Registro]![Completo]="NO";0;IIf([Forms]![FRM
Dichiarazioni_Registro]![Completo]="Tutto";Like "*")))
Quando eseguo la query indicando nel parametro "SI" mi fa vedere solo i
record con il campo flaggato, quando eseguo la query indicando NO mi
fa vedere i record con il campo non flaggato (fin qui quindi tutto
funziona), quando invece inserisco "Tutto" la query mi fa vedere solo i
record flaggati (quindi non funziona)
Karl donaubauer mi suggeriva al seguente soluzione
  IIf([Forms]![FRM
  Dichiarazioni_Registro]![Completo]="SI";-1;IIf([Forms]![FRM
  Dichiarazioni_Registro]![Completo]="NO";0))
  Or [Forms]![FRM Dichiarazioni_Registro]![Completo]="Tutto"
Purtroppo tale query funziona solo se la selezione si basa su di un
solo campo. Se però i campi su cui effettuare i filtri sono + di uno non 
funziona più.
Nel caso di specie nel FRM Dichiarazioni_Registro i campi su cui faccio
la selezione sono:.
Completo:
Privacy:
Banca:
Cliente:
Cariche:
Inserendo la soluzione di Karl Donaubauer per ogni campo la query non 
funziona più.
Qualcuno può aiuarmi?
Grazie
Andler


Like iIf([Forms]![FRM
Dichiarazioni_Registro]![Completo]="SI";-1;IIf([Forms]![FRM
Dichiarazioni_Registro]![Completo]="NO";0;IIf([Forms]![FRM
Dichiarazioni_Registro]![Completo]="Tutto";"*")))
Il like va fuori delle iif
Queste vanno messe sotto ogni campo coinvolto come filtro cambiando
ovviamente il riferimento al controllo corrispondente sulla maschera
Antonio

 
GRAZIEEEEEEEEEEEEEE
Finalmente funziona come volevo.
Grazie 1.000000000000000000
Ciao
Andler