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

Access 97
Ho una query parametrica  per eseguire ricerche su più campi di una tabella
in base a parametri che inserisco nei controlli di una maschera.
Uno di questi campi è di tipo numerico, "campo durata".
Attualmente il codice inserito mi trova solo record con il campo durata
eguale al parametro inserito.
Come faccio ad eseguire una ricerca in questo campo di un valore che sia
uguale o maggiore del parametro che inserisco nel controllo, considerando
che il campo può anche non contenere valori?
Questo è il codice della query:
SELECT TabVideoteca.Cassetta, TabVideoteca.[Data di archiviazione],
TabVideoteca.Titolo, TabVideoteca.Genere, TabVideoteca.Durata,
TabVideoteca.[Data di registrazione], TabVideoteca.[Canale di
registrazione], TabVideoteca.Regia, TabVideoteca.Attori,
TabVideoteca.[Imprestata a], TabVideoteca.Il, TabVideoteca.Note
FROM TabVideoteca
WHERE (((TabVideoteca.Cassetta) Like
IIf(IsNull([forms]![masccerca]![txtcercacassetta]),"*",[forms]![masccerca]![
txtcercacassetta])) AND ((TabVideoteca.Titolo) Like
IIf(IsNull([forms]![masccerca]![txtcercatitolo]),"*",[forms]![masccerca]![tx
tcercatitolo] & "*")) AND ((TabVideoteca.Genere) Like
IIf(IsNull([forms]![masccerca]![cbcercagenere]),"*",[forms]![masccerca]![cbc
ercagenere])) AND ((TabVideoteca.Durata) Like
IIf(IsNull([forms]![masccerca]![txtcercadurata]),"*",[forms]![masccerca]![tx
tcercadurata])));
Franco

 tcercadurata])));
Scusa, ma in tutto questo dove sarebbe il parametro?
Sib

 Sib
Ciao, magari si è nascosto.... ;-))
Comunque nei parametri puoi usare  i vari simboli < > = (minore maggiore
uguale) oppure mescolarli ad esempio >= (maggiore o uguale) ecetera.
---------------------------------------------------------------------------
Messaggio inviato attraverso 
http://www.trucchiperpc.it
 - sezione newsgroup

 Bene per i simboli >=,ma non capisco in quale parte e in che forma
inserirli ( se tra parentesi o meno) nel codice di cui sopra.
Franco


Scusa, ma se Durata e' un campo numerico, ti sei reso conto di averlo
trattato come campo testo?
non puoi usaer like e asterisco, devi usare = e 0.
Sib

=[forms]![masccerca]![txtcercadurata]
Però succede questo: se cerco solamente una Xdurata o una Xdurata abbinata
ad altri parametri mi filtra i record corrispondenti, ma se utilizzo
solamente uno o più degli altri parametri senza Xdurata non trova nessun
record.
Franco

 >=[forms]![masccerca]![txtcercadurata]
cut
scusa ancora, ma ho detto di usare = e 0 al posto di like e asterisco,
quindi:
Invece di:
like
IIf(IsNull([forms]![masccerca]![txtcercadurata]),"*",[forms]![masccerca]![tx
tcercadurata])));
usa:
=
IIf(IsNull([forms]![masccerca]![txtcercadurata]),0,[forms]![masccerca]![txtc
ercadurata])));
Sib


Grazie per il chiarimento, e la pazienza.
Ho comunque creato dei campi calcolati(per il Titolo e genere), per
visualizzare anche quei record il cui campo puň avere il valore Null.
 Lo stesso ho fatto per il campo durata: XDurata: Nz([durata])  criteri  >=
IIf(IsNull([forms]![masccerca]![txtcercadurata]);0;[forms]![masccerca]![txtc
ercadurata])).
E la query funziona sia in base ad un solo parametro che a piů parametri.
Tornando alla pazienza, se ne hai ancora ti spiego quello che accade.
Avendo anche un campo "cassetta" (o videocassetta) di tipo contatore
(onumerico) che ovviamente non č mai Null, ho provato a mettere nel
corrispondente campo della query il seguente criterio
[forms]![masccerca]![Txtcercacassetta].
Ora se digito un numero nel controllo di ricerca mi trova il record
corrispondente, ma se poi lo cancello e provo a fare la ricerca inserendo un
altro parametro in un altro controllo mi visualizza un record vuoto (tutti i
controlli hanno il requery dopo aggiornamento).
Di nuovo grazie
Franco