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

Devo creare una maschera di ricerca per dei record in una tabella. Nella
tabella sono presenti i seguenti campi:
NOME | COGNOME | DATA_ISCRIZIONE
La maschera di ricerca deve essere una maschera con inserimento di
parametri, e vorrei basare la ricerca oltre che sul nome e sul cogome anche
su un periodo di tempo inserendo dei controlli del tipo da data a data.
Come posso fare?
Ringrazio quanti mi volessero aiutare.
Fabrizio

 ha scritto nel messaggio
news:9rtmq9$mvj$1...@pegasus.tiscalinet.it...

Se la tabella che contiene i dati si chiama Tabella1 ed ha una struttura
simile:
ID                                  Contatore e chiave primaria
NOME                          Testo
COGNOME                  Testo
DATA_ISCRIZIONE    Data/ora
ecc. ecc.
Crea una query di selezione chiamata Query1 che abbia il seguente codice
SQL:
SELECT Tabella1.*
FROM Tabella1
WHERE (((Tabella1.NOME) Like Nz([Forms]![Maschera1]![CercaNome] & "*","*"))
AND ((Tabella1.COGNOME) Like Nz([Forms]![Maschera1]![CercaCognome] &
"*","*")) AND ((Tabella1.DATA_ISCRIZIONE) Between
IIf(IsNull([Forms]![Maschera1]![DATA_Da]),DMin("[DATA_ISCRIZIONE]","Tabella1
"),[Forms]![Maschera1]![DATA_Da]) And
IIf(IsNull([Forms]![Maschera1]![DATA_A]),DMax("[DATA_ISCRIZIONE]","Tabella1"
),[Forms]![Maschera1]![DATA_A])));
Creati quindi una maschera e chiamala Maschera1; Maschera1 deve avere una
visualizzazione a Maschere continue e deve avere come origine record Query1.
Nell'intestazione (e non nel corpo) di Maschera1 inserisci 4 caselle di
testo non associate e chiamale rispettivamente CercaNome, CercaCognome,
DATA_Da e DATA_A.
A fronte di TUTTI e 4 gli eventi "Dopo aggiornamento" delle 4 caselle di
testo non associate genera questa riga di codice VBA:
Me.Requery
Nelle caselle di testo CercaNome e CercaCognome puoi anche digitare
solamente le prime lettere del nome e/o del cognome ricercati (invece di
Roberto puoi digitare solo Rob).
Per quanto riguarda la selezione delle date, puoi digitare nulla (non viene
eseguita la selezione sula data d'iscrizione), puoi digitare solo la data
iniziale (vengono selezionati i record la cui data di iscrizione è >= alla
data digitata), puoi digitare solo la data finale( vengono selezionati i
record la cui data di iscrizione è >= alla data digitata),  oppure puoi
digitare ambedue le date (vengono selezionati i record la cui data di
iscrizione è compresa tra le due date digitate).
Spero che sia ciò che ti serviva.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:9rtqo9$1rc4$1...@stargate1.inet.it...

Ho fatto come mi hai detto ma mi dava tutta una serie di messaggi di errore
del tipo espressione troppo complessa ect...
Sono riuscito a creare una ricerca utilizzando un codice trovato nel NG:
criterio = "[DATAREG] between #" & Format(Me.Data1, "mm-d-yy") & "# and #" &
Format(Me.Data2, "mm-d-yy") & "#"
DoCmd.OpenForm "PROVA", , , criterio
Ora mi chiedo se è possibile che il criterio sulla base del quale viene
filtrata la maschera possa contenere controlli con formati diversi, quindi
oltre che controlli di tipo data anche controlli di tipo testo, e filtrare
una maschera in base ad un unico criterio.
Praticamente vorrei sapere se è possibile aggiungere in "criterio" oltre che
l'intervallo di date anche un controllo di tipo testo.

 l'intervallo di date anche un controllo di tipo testo.
Prova cosě:
criterio = "[DATAREG] between #" & Format(Me.Data1, "mm-d-yy") & "# and #" &
Format(Me.Data2, "mm-d-yy") & "# And [NomeCampo] =" & Chr$(34) &
Me!NomeControllo & Chr$(34)"


 ha scritto nel messaggio
news:9ruisi$3bq6$1...@stargate1.inet.it...

Ok funziona perfettamente.
Solo un chiarimento se i controlli di tipo testo sono piů di uno devo
scrivere il codice nel seguente modo?
 criterio = "[DATAREG] between #" & Format(Me.Data1, "mm-d-yy") & "# and #"
&
 Format(Me.Data2, "mm-d-yy") & "# And [NomeCampo] =" & Chr$(34) &
 Me!NomeControllo & Chr$(34) & "# And [NomeCampo2] =" & Chr$(34) &
 Me!NomeControllo2 & Chr$(34)"
Ti ringrazio Fabrizio

 ha scritto nel messaggio
news:9ruks7$acf$1...@pegasus.tiscalinet.it...

Hai messo un # di troppo:
criterio = "[DATAREG] between #" & Format(Me.Data1, "mm-d-yy") & "# and #" &
Format(Me.Data2, "mm-d-yy") & "# And [NomeCampo] =" & Chr$(34) &
Me!NomeControllo & Chr$(34) & " And [NomeCampo2] =" & Chr$(34) &
Me!NomeControllo2 & Chr$(34)"
Il carattere # serve solo a racchiudere i controlli di tipo data/ora.


 ha scritto nel messaggio
news:9s0anf$3kgk$1...@stargate1.inet.it...

Ho notato un piccolo inconveniente.
Se in uno dei campi che utilizzo per la ricerca non inserisco nessun valore,
la ricerca mi la maschera dei risultati senza nessun valore.
Da cosa puň dipendere ilproblema?

 ha scritto nel messaggio
news:9s8f5d$1h8$1...@pegasus.tiscalinet.it...

Prova a scrivere i criteri sulla falsa riga di quelli che ho usato nella
query che ti ho postato nel mio messaggio del 2/11/2001 alle ore 10:57: con
quei criteri di ricerca il problema viene risolto.
