Newsgroup: it.comp.appl.access
Titolo: urge soluzione in maschera di ricerca con checkbox

Siccome mi sono proposto in maniera non chiara, cerco di spiegarmi meglio
adesso:
ho una tabella con una serie di campi vero/falso, ad esempio:
check1
check2
check3
check4
check5
Con una maschera vorrei selezionare solo i record dove check1, check3 e
check5 sono veri, diciamo una ricerca non fissa, del tipo tutti veri o tutti
falsi
help me now
grazie
F
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 falsi
Query con criteri true sotto quei campi...
Antonio


Ho provato ma mi da errore di "Tipo non corrispondente". Tieni presente che
ho messo la select in un evento di apertura maschera procedendo cosi':
Private Sub cercarec_Click()
    Dim Name As String
    Dim Criteria As String
 
    Criteria = "select * from numsist where funz1 like
nz([forms]![ricercafunzioni]![fun1];" * ") AND funz2 like
nz([forms]![ricercafunzioni]![fun2];" * ") AND funz3 like
nz([forms]![ricercafunzioni]![fun3];" * ") AND funz4 like
nz([forms]![ricercafunzioni]![fun4];" * ") AND funz5 like
nz([forms]![ricercafunzioni]![fun5];" * ") AND funz6 like
nz([forms]![ricercafunzioni]![fun6];" * ") AND funz7 like
nz([forms]![ricercafunzioni]![fun7];" * ") AND funz8 like
nz([forms]![ricercafunzioni]![fun8];" * ") AND funz9 like
nz([forms]![ricercafunzioni]![fun9];" * ") AND funz10 like
nz([forms]![ricercafunzioni]![fun10];" * ")"
    DocName = "numsist"
    DoCmd.OpenForm DocName, , , Criteria
End Sub
dove fun1,fun2,fun3,funx sono i controlli della maschera "ricercafunzioni",
che è la maschera che li contiene; funz1,funz2,funz3,funzx i campi della
tabella "numsist" e "numsist" è la form da aprire con il criterio
"Criteria".
grazie infinite
Francesco



Ma non è che la soluzione trovata per la query si riferisce a campi di testo
e non a checkbox
ciao
F


Il 14 Nov 2003, 06:24, 
fran...@tin.it
 (francesco) ha scritto:

Ma non è che la soluzione trovata per la query si riferisce a campi di testo
e non a checkbox
ciao
F
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/


Ci sto diventando scemo......il problema di errore 13 - "tipo non
corrispondente", credo che stia nel fatto che la parte "*" della funzione
like nz([forms]![ricercafunzioni]![fun1];" * ") non va bene per campi
vero/falso. Dico bene? Se č cosě come si puo' ovviare?
thanks


 ha scritto nel messaggio
news:82Z49Z81Z2Y10...@usenet.libero.it...

Ma i controlli fun1-fun10 che valori possono assumere e i campi funz1-funz10
di che tipo sono?
Antonio


Allora i controlli possono assumere 2 valori (spuntati o no), mentre i campi
della tabella sono campi si/no
grazie


 ha scritto nel messaggio
news:80Z182Z85Z164Y1...@usenet.libero.it...

Ma cazz...
ma allora perchè usi la sintassi con l'nz che vale per testare i controlli
vuoti?
In questo caso il controllo avrà sempre valore true o false a seconda della
presenza o meno della spunta.
Pertanto il criterio in query deve fare semplicemente riferimento al
controllo
where funz1 = [forms]![ricercafunzioni]![fun1] AND
funz2 = [forms]![ricercafunzioni]![fun2]
e così via...
Antonio


Ho costruito come tu dici la query ma purtroppo mi da' errore di sintassi;
tieni presente che ho messo tutto su di una sola linea tra virgolette, oltre
che metterla cosi' come la vedi sopra (con le correzzioni). Boh!
ciao
F


 che metterla cosi' come la vedi sopra (con le correzzioni). Boh!
Posta quanto hai scritto
Antonio


Ecco:
 stLinkCriteria = "SELECT * FROM numsist WHERE funz1 =
[Forms]![ricercafunzioni]![fun1] And funz2 =
[Forms]![ricercafunzioni]![fun2] And funz3 =
[Forms]![ricercafunzioni]![fun3] And funz4 =
[Forms]![ricercafunzioni]![fun4] And funz5 =
[Forms]![ricercafunzioni]![fun5] And funz6 =
[Forms]![ricercafunzioni]![fun6] And funz7 =
[Forms]![ricercafunzioni]![fun7] And funz8 =
[Forms]![ricercafunzioni]![fun8] And funz9 =
[Forms]![ricercafunzioni]![fun9] And funz10 =
[Forms]![ricercafunzioni]![fun10]"
tieni presente che ho provato anche con le parentesi tonde così:
and (funz5 = [Forms]![ricercafunzioni]![fun5]) and ......
grazie


 ha scritto nel messaggio
news:80Z182Z85Z194Y1...@usenet.libero.it...

Ma così è come l'hai scritto precisamente nel codice?!?
Non puoi farlo, devi o usare gli _ ma a me questa soluzione non piace.
Oppure fare così:
app = "SELECT * FROM numsist WHERE funz1 = "
app = app & "[Forms]![ricercafunzioni]![fun1] And funz2 = "
app = app & "[Forms]![ricercafunzioni]![fun2] And funz3 = "
ecc.
stLinkCriteria = app
Antonio


Niente da fare, sempre errore di runtime 3075: errore di sintassi



ti posto l'intera subroutine:
Private Sub cercarec_Click()
    Dim stDocName As String
    Dim stLinkCriteria As String
 
    app = "SELECT * FROM numsist WHERE funz1 = "
    app = app & "[Forms]![ricercafunzioni]![fun1] And funz2 = "
    app = app & "[Forms]![ricercafunzioni]![fun2] And funz3 = "
    app = app & "[Forms]![ricercafunzioni]![fun3] And funz4 = "
    app = app & "[Forms]![ricercafunzioni]![fun4] And funz5 = "
    app = app & "[Forms]![ricercafunzioni]![fun5] And funz6 = "
    app = app & "[Forms]![ricercafunzioni]![fun6] And funz7 = "
    app = app & "[Forms]![ricercafunzioni]![fun7] And funz8 = "
    app = app & "[Forms]![ricercafunzioni]![fun8] And funz9 = "
    app = app & "[Forms]![ricercafunzioni]![fun9] And funz10 = "
    app = app & "[Forms]![ricercafunzioni]![fun10]"
    stLinkCriteria = app
    stDocName = "numsistema"
    DoCmd.OpenForm stDocName, , , stLinkCriteria******qui si evidenzia il debug
dopo l'errore
Exit_cercarec_Click:
    Exit Sub
Err_cercarec_Click:
    MsgBox Err.Description
    Resume Exit_cercarec_Click
 
End Sub
ciao


 dopo l'errore
Senti, ma tagliamo la testa al topo!
Questa benedetta recordsource preparala a design time, vai nella proprietą,
apri una query e ci metti tutti i campi con sotto quei criteri!!!!
Antonio


Perdonami l'ignoranza ma che intendi? Prepararla da finestra access e poi
prendere l'sql e trasferirlo? L'ho gią fatto ma nun funzia uguale.


 prendere l'sql e trasferirlo? L'ho già fatto ma nun funzia uguale.
No!
Apri la form numsistema in struttura, vai nella proprietà recordsource, ci
clicchi dentro, ci sono i 3 puntini, clicchi e ti apre il QBE.
Prepari una query sulla tabella mettendo sotto ogni campo il riferimento al
controllo della form
Salvi e esci.
La recordsource della form è ora settata e non devi più farlo via codice a
runtime
Antonio


Tutto ok funziona finalmente. Grazie di tutto e alla prossima
Francesco


 Tutto ok funziona finalmente. Grazie di tutto e alla prossima
Puff... Pant...
Ancora una volta si č dimostrato fondamentale esporre il problema, non la
propria soluzione!!!
Antonio


Condivido pienamente
ciao
F



Rieccomi! La soluzione che tu mi desti funziona alla perfezione. Adesso perņ
ho inserito un'ulteriore campo di ricerca in questa sequenza, questa volta
di testo che messo in associazione con gli altri funziona, cioč:
fun1=si
fun2=si
funz_altro="cane"
la ricerca va a buon fine. Se faccio la ricerca solo col campo di testo,
cioč:
funz_altro="cane"
essa non funziona. nei criteri di questo campo, seguendo le orme degli
altri, ho inserito nei criteri la seguente istruzione:
Like "*" & [Forms]![ricercafunzioni]![funz_altro] & "*"
volendo fare io ricerca per testo contenuto nel campo.
grazie


 volendo fare io ricerca per testo contenuto nel campo.
Posta l'SQL completo e dì in quali casi di inserimenti in maschera non
funziona
Antonio


Allora ogni campo della query costruita sulla maschera di ricerca, contiene
nei criteri la seguente istruzione, cosi' come tu mi dicesti:
[Forms]![ricercafunzioni]![fun1]
che tradotto in sql significa
me.funz1=[Forms]![ricercafunzioni]![fun1]
dove funz1 è il campo della tabella e fun1 il controllo della maschera di
ricerca. Fin qui tutto ok
Aggiungendo ai controlli nella maschera di ricerca, un controllo testo (es.
funz_altro, quindi diverso dagli altri che sono si/no) e relativo campo
testo della tabella corrispondente, in fase di ricerca non posso fare
ricerche solo con quel controllo. Tipo:
funz_altro che contiene "cane"
mi ritorna una maschera bianca. L'sql nel criterio relativo a quel campo e:
Like "*" & [Forms]![ricercafunzioni]![funz_altro] & "*"
che ripeto messo insieme agli altri funziona, da solo no.
Spero di aver detto quello che chiedevi
grazie sempre


 che ripeto messo insieme agli altri funziona, da solo no.
Non ho capito che significa che insieme agli altri funziona.
Antonio


Significa che se nella ricerca dico:
fun1=si
funz_altro="cane"
mi ritorna i record esatti, cioè tutti quelli dove il campo funz1=si e dove,
in funzione_altro è contenuta la parola "cane". Ripeto, se cerco solo "cane"
non mi da risultato, o per meglio dire mi da maschera vuota.
ciao



Scusami per la doppia risposta, ma è meglio se vedi il pezzo di sql:
WHERE (((numsist.funzione_altro) Like "*" &
[Forms]![ricercafunzioni]![funz_altro] & "*") AND
((numsist.funz1)=[Forms]![ricercafunzioni]![fun1]) AND
((numsist.funz2)=[Forms]![ricercafunzioni]![fun2]) AND
((numsist.funz3)=[Forms]![ricercafunzioni]![fun3]) AND
((numsist.funz4)=[Forms]![ricercafunzioni]![fun4]) AND
((numsist.funz5)=[Forms]![ricercafunzioni]![fun5]) AND
((numsist.funz6)=[Forms]![ricercafunzioni]![fun6]) AND
((numsist.funz7)=[Forms]![ricercafunzioni]![fun7]) AND
((numsist.funz8)=[Forms]![ricercafunzioni]![fun8]) AND
((numsist.funz9)=[Forms]![ricercafunzioni]![fun9]) AND
((numsist.funz10)=[Forms]![ricercafunzioni]![fun10]));
il tutto fatto sotto generatore di query nella proprietà della maschera



Ho fatto altre prove leggendo meglio quello che tu mi hai scritto; ho
inserito il campo calcolato al posto del campo di origine nella query, che
quindi diventa:
SELECT ..........nz([funzione_altro],"-") AS Espr1......
WHERE (((nz([funzione_altro],"-")) Like "*" &
[Forms]![ricercafunzioni]![funz_altro] & "*") AND.....ecc.
cmq il risultato è sempre lo stesso di prima. Ho provato a mettere * invece
di -, ma il prodotto non cambia
ciao
F



Sei sicuro che esistano record con fun1 = sě e altro = Cane ????
Antonio


--------------------------------
Inviato via 
http://arianna.libero.it/usenet/


Scusa il messaggio a vuoto, la stanchezza avanza......dunque, sono sicuro
che esistono perchč la ricerca cosě funziona; non funziona se cerco solo:
funz_altro="cane"
ciao


 funz_altro="cane"
La domanda era mal posta!
Sei sicuro che esistano record con fun1 = NO e altro = Cane ????
Ovviamente se hai selezionato fun1 a Sì e hai messo cane e c'è risultato
significa che ci sono, ma non è detto che se tu NON spunti fun1, il che
significa che gli dici che vuoi fun1 = No, ci siano record con altro = cane
e appunto fun1 = No...
Antonio


Infatti esistono tutte e due le condizioni; io per fare le prove ho inserito
sia record con funz1=si e funzione_altro="cane" e sia record che hanno
funz1=no e funzione_altro="cane". Adesso se io effettuo la ricerca di tutti
i record dove funz_altro="cane", ho un risultato parziale, nel senso che mi
restituisce solo i record dove i campi relativi funz1, funz2, funz.... sono
uguali a "no" e contengono "cane", omettendo quelli dove "cane" è contenuto
in funzione_altro ed hanno i campi suddetti a "si". Spero di essere stato
illuminante nello spiegare il problema.
ciao e grazie


 illuminante nello spiegare il problema.
CERTO!!!
Il fatto che tu non spunti le caselle funz1--10 significa che dici che vuoi
che i corrispondenti campi siano = No.
Pertanto se non spunti niente e ci metti Cane, gli stai dicendo che vuoi i
record con valore No E valore Cane sull' altro campo!!!!
Antonio


.....perň a me le ricerche servono entrambe; cioč quando io inserisco solo
funz_altro="cane", mi deve restituire sia gli uni che gli altri, cioč sia
fun1=si e sia fun1=no
ciao



E allora non puoi utilizzare come filtri delle checkbox!!!!
Fai un gruppo di opzioni per ogni checkbox e ci metti tre radio button con
label Sě, No, Tutti e corrispondenti valori numerici 1, 2 e 3.
A questo punto i criteri sotto i campi nella query diventeranno:
iif([forms]![tuaform]![gruppo]=1;true;iif([forms]![tuaform]![gruppo]=2;false
;true or false))
Antonio


ho provato, ma non funziona. Devo mettere, per esempio, se faccio una
ricerca per un tot campi si e tot no, i campi no devono essere spuntati a
no, altrimenti non funziona.


 no, altrimenti non funziona.
Rispieghi cosa vuoi e cosa hai fatto?
Antonio


Mi hai detto di mettere per ogni campo della tabella, un gruppo di opzioni
nella maschera. Giusto?
Ad ogni gruppo, valori 1=vero, 2=falso, 3=vero e falso
fatto cio' nella query, ad ogni criterio del campo va messa la stringa iif
che mi hai scritto sopra. Ok?
fatto questo ho provato ed il risultato č sempre lo stesso; ho provato a
spuntare due opzioni che sapevo esistenti, quindi 1=vero e ho lasciato le
restanti a 3=vero o falso; non funziona, le restanti vanno messe tutte su
2=falso.



QUESTA FUNZIONA PERECHE L'HO PROVATA!!!
Prendi l'espressione che ti avevo detto prima e mettila due volte in OR: i
rami col valore 1 e 2 rimangono gli stessi perň una volta nel caso 3 ci
metti vero, la seconda volta ci metti falso!!!
In pratica nel mio test era cosě
IIf([Forms]![Maschera11]![Cornice0]=1;Vero;IIf([Forms]![Maschera11]![Cornice
0]=2;Falso;Vero)) Or
IIf([Forms]![Maschera11]![Cornice0]=1;Vero;IIf([Forms]![Maschera11]![Cornice
0]=2;Falso;Falso))
Antonio


EUREKAAAAAAAAAAAAAAAAAAAAAAAAAAAAA!!!!!!!!!!!!!!!
Funziona.....adesso posso andare a dormire tranquillo.
Grazieeeeeeeeeeeeeeeeeeeeee!!!!!!!!!!
La mia domanda adesso è questa:
Volendo inserire un msgbox di non trovato all'apertura della maschera di
destinazione, come posso fare? Con un ciclo if then sui campi? In verità ho
già provato, ma quando faccio:
if [forms]![miamasch]![miogruppo] <> me.nomecampo then
msgbox "blablabla"
end if
il me.nomecampo risulta vuoto
che ne pensi?
ciao e grazie ancora
Francesco


 La mia domanda adesso č questa:
NO!
Apri un altro thread con opportuno subject visto che č tutt'altro
argomento!!!
Antonio