Newsgroup: it.comp.appl.access
Titolo: query parametrica doppia

salve a tutti,
Vorrei chiedere cortesemente al gruppo come è possibile impostare una query
parametrica su due campi in maniera tale che quando compariranno le due
finestrelle di input,per esempio una "materia" e l'altra "argomento" di un
titolo di una biblioteca, non debba per forza di cose inserire in entrambe
le finestre. In altre parole ho notato che se io inserisco solo la materia e
non l'argomento non mi restituisce nulla.Il programma vuole che vengano
inseriti entrambi i valori per restituire i record con i 2 valori Veri. Non
ci sarebbe un modo con il quale se inserisco solo materia senza argomento o
viceversa Access mi restituisca i record che obbediscono solo al criterio
inserito, svincolando il tutto dal secondo? Facendo rimanere però la
possibilità di eseguire la ricerca anche con i due criteri qualora l'utente
della biblioteca li conosca entrambi? E' difficile ? Io non lo so. Io so
solo che se una cosa si sa è facile, se non si sa è difficile (scusatemi ma
insegno filosofia). Ciao a tutti
--------------------------------
Inviato via 
http://usenet.libero.it

 della biblioteca li conosca entrambi?
Allora, fermo restando che io preferisco utilizzare una form dove mettere i
criteri di filtro piuttosto che la richiesta dei parametri all'interno della
query, vediamo come risolvere.
Se non si inserisce nulla la finestrella di inserimento parametro
restituisce "", cioè stringa vuota.
Dobbiamo dire alla query che se il criterio è "" allora non deve filtrare,
ovvero deve restituire tutto per quel campo (e questo gli si dice facendo un
criterio like "*").
Un altro problema però è che non ho funzioni predefinite che mi testino il
valore e mi restituiscano quello o un altro se vale "". Esiste Nz, ma quello
testa se vale Null.
Potrei allora fare una cosa del genere
like iif([Inserisci Valore] = "";"*";[Inserisci valore])
ma così chiederebbe 2 volte il valore.
Dobbiamo allora crearci una funzione che faccia i test e si comporti di
conseguenza a seconda del risultato dell'inserimento parametro.
Public miafun(x as string) as string
if x = "" then
  miafun = "*"
else
  miafun = x
end if
end function
Il tuo criterio diventerà allora
like miafun([Inserimento parametro])
Antonio

 ha scritto nel messaggio
news:217Z59Z199Z101Y...@usenet.libero.it...

Nella riga criteri relativa al campo "materia" scrivi:
Like Nz([Digita la materia cercata:]; "*")
e nella riga criteri relativa al campo "argomento" scrivi:
Like Nz([Digita l'argomento cercato:]; "*")
Naturalmente i record che contengono il valore Null nel campo "materia" e/o
nel campo "argomento" non verranno visualizzati; ma è così anche per la tua
attuale soluzione.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


Roberto, ma le inputbox e le finestre di inserimento parametro, non
restituiscono "" quando non si mette nulla?
Antonio

 Un ringraziamento infinito.non ci sarei mai arrivato.Ciao


 ha scritto nel messaggio
news:3e0J9.73574$3l.20...@twister1.libero.it...

Le finestre di dialogo per l'inserimento dei parametri delle query penso che
se vuote restituiscano Null, visto che con la funzione Nz funziona bene,
mentre testando se la stringa è vuota non funziona.


 Roberto
Scusate se mi permetto, ma io in questi casi adopero efficacemente una
soluzione tipo questa:
nel campo materia: [digita materia] or [digita materia] is null
nel campo argomento: [digita argomento] or [digita argomento] is null
in questo modo vengono restituiti i record solo quando la input box viene
compilata, altrimenti non considera il parametro e quindi restituisce tutti
i record.

 i record.
Quindi anche tu presupponi che, se non digiti alcunché nella finestra di
richiesta parametri, Access ti restituisce una stringa con valore Null.
Quello che discutevamo, tra me ed Antonio, non era se adoperare la funzione
Nz, la funzione IIf o qualche altro sistema, ma se Access, nel caso non
venisse digitato alcunché nella finestra di dialogo, restituisse una string
Null o una striga di lunghezza zero.


 Null o una striga di lunghezza zero.
Questo lo avevo afferrato.
Comunque ti chiedo se nella sostanza ci siano delle differenze (ed
eventualmente quali) tra la mia soluzione e quella da te proposta o se si
tratta semplicemente di due strade diverse per un unico risultato.
Te lo chiedo perchè noto che soluzioni tipo la mia a questo genere di
problemi sono molto poco (o quasi mai) proposte dai frequentatori del NG e
dunque ne vorrei conoscere la ragione (se c'è).
Grazie

 Grazie


 frequentatori del NG e dunque ne vorrei conoscere la ragione (se c'è).
Beh, da 5 anni qui (e nel suo antenato;-) l'ho proposto forse 20 volte.
-- 
cu
Karl
*********
Access-FAQ (tedesco): 
http://www.donkarl.com

 niente solo per ringraziarti della risposta e per le tue stringhe che
funzionano. Minus
