Newsgroup: it.comp.appl.access
Titolo: Saluti

Ciao a tutti, sono una "New Entry", e come nuovo vorrei proporvi un quesito.
Per non utilizzare il classico comando trova, come posso ricercare i record
attraverso una form dove indico più campi su cui effettuare la ricerca?
Grazie di cuore
Sam

 wrote in message
8ladj2$7uu$1...@lacerta.tiscalinet.it...

Benvenuto, e, come scrisse il Sommo Dante, "Lasciate ogni speranza voi che
entrate...."
Di soluzioni ce ne sono tante: la più classica è quella di crearsi in
maniera dinamica in filtro per una maschera.
Visto che non lo hai specificato, la mia risposta effettuerà la selezione
dei record da visualizzare utilizzando le chiavi di ricerca in AND anziché
in OR.
Inoltre la soluzione che ti propongo adopera codice scritto con VBA il
minimo indispensabile, cosa normalmente gradita alle "New Entry".
Ipotizziamo che i dati oggetto della tua ricerca siano residenti in una
tabella chiamata TABELLA1, che ogni record contenga 5 campi (chiamati
CAMPO1, CAMPO2......, CAMPO5) e che la ricerca tu la debba fare in AND su
CAMPO1 e CAMPO2.
Creati una query (QUERY1) che contiene tutti e 5 i campi di TABELLA1.
Creati una maschera (MASCHERA1) che abbia come "Origine record" QUERY1 ed
abbia come "Visualizzazione predefinita" Maschere continue.
Nell'intestazione di MASCHERA1 dichiarati due caselle di testo non associate
che chiamerai CHIAVE1 e CHIAVE2.
A fronte dell'evento "Dopo aggiornamento" del controllo CHIAVE1 genera il
seguente codice VBA:
    Me.Requery
    Me![CHIAVE2].SetFocus
e a fronte dell'evento "Dopo aggiornamento" del controllo CHIAVE2 genera il
seguente codice VBA:
    Me.Requery
    Me![CHIAVE1].SetFocus
A Fronte dell'evento "Su corrente" di MASCHERA1 genera il seguente codice
VBA:
    Me![CHIAVE1].SetFocus
Apri la struttura di QUERY1 e nella riga "Criteri:" di CAMPO1 scrivi:
    Like [Forms]![MASCHERA1]![CHIAVE1]
e nella riga "Criteri:" di CAMPO2 scrivi:
    Like [Forms]![MASCHERA1]![CHIAVE2]
Chiudi e salva la struttura di QUERY1.
Apri MASCHERA1, digita in CHIAVE1 e CHIAVE2 le due chiavi di ricerca: nel
corpo di MASCHERA1 dovresti vedere i record che soddisfano i criteri di
ricerca.
Se vuoi vedere tutti i record contenuti nella tabella, digita sia in CHIAVE1
che in CHIAVE2 un * (asterisco); se la selezione la vuoi effettuare solo su
CAMPO1, digita la chiave di ricerca in CHIAVE1 ed * (asterisco) in CHIAVE2.
Se non conosci con esattezza il contenuto dei campi, digita la stringa di
ricerca racchiusa tra due asterischi (*chiave*).
Così facendo non riuscirai però a visualizzare i record che abbiano CAMPO1
e/o CAMPO2 con il valore Null.
Se hai da risolvere anche questa eventualità rifatti vivo (una cosa alla
volta).
Roberto

 wrote in message
Bdhe5.19316$sE5.2...@news.infostrada.it...

Ti ringrazio per l'aiuto, funziona perfettamente, ma la dritta che mi hai
passato potrei utilizzarla per effettuare le ricerche su una maschera già
aperta.
Ancora grazie.

 > > Sam
[CUT]

Se vuoi aprire la maschera che ti fa vedere l'esito della ricerca solo
quando lo decidi tu, creati una maschera che contiene solamente le caselle
di testo non associate (CHIAVE1 e CHIAVE2) nelle quali digiti i criteri di
selezione per la query che è "Origine record" della maschera che esplicita
l'esito della selezione. In questo caso però dovrai inserire, nella prima
maschera, anche un pulsante di comando tramite il quale aprirai la seconda
maschera.
In alternativa adopera la soluzione data da Federico Luciani al messaggio
che Lucio Lovato ha postato il 22/7/2000 all ore 15:21. Come vedi la
soluzione non ha entusiasmato Lucio che non conosce bene VBA, e se i campi
chiave fossero più di uno e/o la ricerca va fatta anche su campi contenuti
su tabelle collegate, le cose si complicherebbero ancora un pochino.
Roberto
PS   Non vorrei sbagliare ma l'ora del tuo PC non è esatta, forse non
adoperi l'ora legale