Newsgroup: it.comp.appl.access
Titolo: ricerca tramite una query

ho creato un database che ha i dati specifici della persona e alcuni campi
(che servono x la ricerca) vengono abilitati con una "x" e vuoti tramite
INVIO o TAB o lascio vuoto con mouse passando alla seguente.
Nella query quando nei criteri metto [studi] se metto la x me lo ricerca ma
dato che i campi sono 9 se l'altri non metto niente e premo soltanto INVIO
non mi cerca nemmeno quelli che abbiano il campo "studi" abilitato con "x"
PERCHE'?

 ha scritto nel messaggio
news:91bjur$gi0$1...@lacerta.tiscalinet.it...

Mi sembra di capire che in un tuo database hai una tabella la cui struttura
prevede dei campi relativi a dei dati anagrafici ed inoltre nove campi che
possono contenere o il valore X o il valore Null.
Hai poi creato una query di selezione basata su questa tabella e per la
quale hai scritto qualcosa nei criteri relativi ai nove campi di cui sopra
(quindi la selezione opererà in modalità AND, ovvero vuoi che la query
selezioni solo quei record che soddisfano tutti i criteri di ricerca).
Mi sembra poi di capire che nelle nove finestre di immissione parametro tu
voglia digitare o X o nulla, intendendo in questo secondo caso che il
relativo campo non deve partecipare alla selezione dei record.
Ti ricordo che, per definizione, in Access il valore Null è diverso dal
valore di una stringa di lunghezza zero.
Per definizione in una query di selezione, se imposti un criterio su un
campo, non ti verranno mai selezionati quei record che in quel campo hanno
il valore Null, a meno che nei criteri non adoperi esplicitamente il valore
Null (Is Null oppure Not Is Null).
Uno dei modi per risovere il tuo problema è quello di definire nella query,
tramite la funzione NZ (vedi help), nove campi calcolati (uno per ognuno dei
tuoi nove campi della tabella); per ognuno di questi campi scrivi dei
criteri nei quali, tramite le funzioni Like e IIF (vedi help), indichi ad
Access che, se non digiti nulla nella finestra di immissione parametro,
qualsiasi valore contenuto in quel campo è valido altrimenti va ricercato il
valore digitato.
Insomma, se la tua tabella si chiama Tabella1 e i nove campi in essa
contenuti si chiamano rispettivamente uno, due, tre quattro ecc., la query
che ti serve dovrebbe avere il seguente codice SQL:
SELECT  Tabella1.Nome, NZ([uno]) AS CAMPO1, NZ([due]) AS CAMPO2, NZ([tre])
AS CAMPO3, NZ([quattro]) AS CAMPO4, NZ([cinque]) AS CAMPO5, NZ([sei]) AS
CAMPO6, NZ([sette]) AS CAMPO7, NZ([otto]) AS CAMPO8, NZ([nove]) AS CAMPO9
FROM Tabella1
WHERE (((NZ([uno])) Like IIf(IsNull([UNO:]),"*",[UNO:])) AND ((NZ([due]))
Like IIf(IsNull([DUE:]),"*",[DUE:])) AND ((NZ([tre])) Like
IIf(IsNull([TRE:]),"*",[TRE:])) AND ((NZ([quattro])) Like
IIf(IsNull([QUATTRO:]),"*",[QUATTRO:])) AND ((NZ([cinque])) Like
IIf(IsNull([CINQUE:]),"*",[CINQUE:])) AND ((NZ([sei])) Like
IIf(IsNull([SEI:]),"*",[SEI:])) AND ((NZ([sette])) Like
IIf(IsNull([SETTE:]),"*",[SETTE:])) AND ((NZ([otto])) Like
IIf(IsNull([OTTO:]),"*",[OTTO:])) AND ((NZ([nove])) Like
IIf(IsNull([NOVE:]),"*",[NOVE:])));
Prova e facci sapere.
--
Roberto
---------------------------------------------
il sito comune di it.comp.appl.access:
http://members.xoom.it/it_db_access/
---------------------------------------------