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

Buon giorno a tutto il n.g.
Sto facendo alcune prove perchè non mi quadra bene come funziona la sequente 
questione.
Premetto che ho creato un semplice db dove immetto data di nascita e nome 
della persona. Poi in una seconda maschera digito il range date di ricerca 
(es. tutti i nati dal 01/01/1970 al 31/12/1970) in due caselle di testo ed i 
risultati mi si visualizzano in una sottomaschera creata con una query. Non 
ho creato nessun pulsante, mi muovo all'interno delle opzioni semplicemente 
con il tasto Tab. Per visualizzare i risultati ho creato un requery in 
uscita dalla sottomaschera, parametro DATA DI NASCITA. Come posso fare per 
visualizzare i risultati semplicemente uscendo dopo aver immesso la seconda 
data di ricerca ? (Es. Da data 01/10/2005 a data 04/10/2005)
Grazie.
Roberto
 

 ha scritto nel messaggio news:43425532$0$23971$4faf...@reader3.news.tin.it...

Non ho capito; vuoi filtrare una sottomaschera da un'altra maschera tramite l'uscita dall'ultima casella di testo?
Se è così, gestisci l'evento "su uscita" dell'ultima casella di testo e ci inserisci:
es.
Forms!nomeMascheraPrincipale!nomeSottomaschera.Form.Filter = "condizioneWhere"
Forms!nomeMascheraPrincipale!nomeSottomaschera.Form.FilterOn = True
per rimuovere il filtro:
...Form.FilterOn = False
...Form.Filter = ""
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
Non precisamente, provo a spiegarmi meglio.
Nella maschera principale ho due caselle di testo debitamente formattate 
dove immetterň il range date di ricerca; dalla data X alla data Y (Premetto 
che ho fatto un db di prova immettendo data di nascita e nome della 
persona). Nella sottomaschera formata da una query, mi si visualizzano tutte 
le persone nate dalla data X alla data Y precedentemente immesse.
SELECT Tabella1.DaNas, Tabella1.Nome
FROM Tabella1
WHERE (((Tabella1.DaNas) Between [Forms]![Ricerca]![dataI] And 
[Forms]![Ricerca]![dataF]))
ORDER BY Tabella1.DaNas;
Domanda, come devo fare per far si che all'uscita dalla seconda casella di 
testo dove immetteň la data di fine ricerca, nella sottomaschera 
automaticamente mi si visualizzi i risultati della ricerca? Ora uso un 
requery ma la questione č alquanto spartana e per avere il risultato devo 
spostarmi di due posti dopo la casella di testo contenente la data di fine 
ricerca.
Grazie.
Roberto

 Roberto
Lo fai sempre con la proprietà Filter (Me!nomeSottoMaschera.Form.Filter) inserendola nell'evento "su uscita" della seconda casella; 
altrimenti ti crei un bottone e inserisci il codice VBA nell'evento "su clic"...
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
Scusa Sergio, ma sono ancora molto profano in materie e credo si sia gią 
capito... Quanto mi riporti sopra, come va fatto?
Grazie per l'attenzione.
Roberto.

 Roberto.
Sempre utilizzando il metodo Filter (vedi help);
es. (nell'evento "su clic" di un bottone)
if isdate(me!dataDAL) And isdate(me!dataAL) then
    Me!nomeSottomaschera.Form.Filter = "[dataDaFiltrare] Between CDate('" & me!dataDAL & "') And CDate('" & me!dataAL & "')"
    Me!nomeSottomaschera.Form.FilterOn =true
endif
Nell'help in linea trovi spiegazioni sull'utilizzo di:
- funzione IsDate;
- funzione CDate;
- Metodo Filter e FilterOn;
Ricordati che per rimuovere il filtro (con un bottone o come vuoi tu) devi fare:
Me!nomeSottomaschera.Form.FilterOn = false
Me!nomeSottomaschera.Form.Filter = ""
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
Ciao Sergio.
Non so che dire, soprattutto per la TUA buona volontà e pazienza nello 
spiegarmi le cose, ma anche utilizzando la guida in linea e cercando  Filter 
non riesco a capire cosa devo fare...
Grazie.
Roberto
 

 Roberto
Se crei un bottone, nelle sue proprietą trovi la scheda "eventi"; tra questi c'č l'evento "su clic", lo scegli e premi il bottone a 
dx con i tre puntini, poi "generatore di codice".
Tra le instruzioni "Private Sub ..." e "End Sub" inserisci il codice che ti ho suggerito riadattandolo con i nomi giusti delle tue 
caselle di testo...
Ciao.
-- 
Sergio MAZZA 

 Ciao.
Grazie Sergio. Finalmente sono riuscito ad impostare il codice VBA che mi 
hai dato ed in uscita dalla casella di testo sulla sottomaschera trovo i 
risultati delle ricerche. Poi ho provato a fare sempre come mi accennavi, 
per eliminare il filtro pensando che mi cancellasse anche i risultati sulla 
sottomaschera, della precedente ricerca, impostando il seguente codice:
Me!nomeSottomaschera.Form.FilterOn = false
Me!nomeSottomaschera.Form.Filter = ""
Se non ho afferrato male, tale codice mi rimuove il filtro, ma come devo 
fare per cancellare i risultati sulla sottomaschera della precedente ricerca 
?
Grazie ancora.
Roberto
 

 Roberto
Imposti a Null il contenuto delle caselle di testo;
es.
Me!nomeCasella = Null
Ciao.
-- 
Sergio MAZZA 

 Me!nomeCasella = Null
Sergio, non vorrei seccarti ulteriormente ma dopo vari tentativi senza esito 
sono costretto a farlo...
Ho impostato Null sulle due caselle di testo dove metto il range date e fin 
quì tutto bene, ma la sottomaschera non si resetta e sebbene abbia pulito il 
range di ricerca, mi resta sempre il risultato della precedente ricerca.
Credo si debba impostare un requery. Ho provato a leggere le istruzioni in 
linea sul requery in VBA ed impostare:
DoCmd.Requery "NomeSottomaschera" ma non ottengo nulla...Dove sbaglio?Grazie 
per l'attenzione per l'ennesima volta!Roberto 

 DoCmd.Requery "NomeSottomaschera" ma non ottengo nulla...Dove sbaglio?Grazie per l'attenzione per l'ennesima volta!Roberto
Scusa ho interpretato male quello che hai scritto; dopo aver rimosso il filtro devi effettuare un requery del recordset della form:
Me!nomeSottomaschera.Form.Requery
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
Ho provato quanto sopra ma nella sottomaschera denominata Subfind i 
risultati non si resettano e rimangono quelli della precedente ricerca.
Grazie ancora.
Roberto

 Roberto
Ricapitoliamo:
[applicare il filtro]
Me!Subfind.Form.Filter = "condizioneWhere"
Me!Subfind.Form.FilterOn = true
[rimuovere il filtro]
Me!Subfind.Form.FilterOn = false
Me!Subfind.Form.Filter = ""
Me!Subfind.Form.Requery
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
In effetti č cosě che ho fatto ma non mi resetta i risultati precedente.
Ricapitolo:
Maschera denominata Ricerca, con due caselle di testo dove immetto le date 
da ricercare (Es. tutti i nati dal 01/01/60 al 01/01/70). Sottomaschera 
denominata Subfind dove ottengo i risultati della ricerca sopra citata.
La sottomaschera č formata dalla seguente query:
SELECT Tabella1.DaNas, Tabella1.Nome
FROM Tabella1
WHERE (((Tabella1.DaNas) Between [Forms]![Ricerca]![dataI] And 
[Forms]![Ricerca]![dataF]))
ORDER BY Tabella1.DaNas;
In uscita dalla seconda casella di testo ho impostato il seguente codice 
VBA:
Private Sub DataF_Exit(Cancel As Integer)
If IsDate(Me!DataI) And IsDate(Me!DataF) Then
    Me!Subfind.Form.Filter = "DataF Between CDate('" & Me!DataI & "') And 
CDate('" & Me!DataF & "')"
    Me!Subfind.Form.FilterOn = True
End If
End Sub
Per cancellare i risultati della ricerca ottenuti con il codice VBA sopra 
riportato, ho impostato il seguente codice VBA su click di un pulsante:
Private Sub Comando7_Click()
Me!Subfind.Form.FilterOn = False
Me!Subfind.Form.Filter = ""
Me!Query1.Requery
End Sub
Al codice sopra citato anche se metto Me!nomeCasella = Null per cancellare 
il range di ricerca, non riesco ugualmente a pulire la sottomaschera.
Grazie.
Roberto

 ha scritto nel messaggio news:434c36bc$0$13343$4faf...@reader2.news.tin.it...

La query di origine della sottomaschera non deve avere nessuna condizione, altrimenti č tutto inutile che utilizzi il Filter...
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
Sergio, mi arrendo. Non voglio farti crescere la barba per alcuni km...! Ho 
tolto la condizione alla query che costituisce la sottomaschera e cosě 
facendo appena accedo alla maschera di ricerca, mi ritrovo tutti i dati 
all'interno del database senza che digiti il range di ricerca.
Mi arrendo e proverň a farlo senza l'ausilio del VBA che vedo essere molto 
complicato. Grazie ancora per la tua cortese collaborazione.
Roberto

 Roberto
La barba per me non è un problema.
Se la sottomaschera ha come orgine la query senza la condizione where:
SELECT Tabella1.DaNas, Tabella1.Nome
FROM Tabella1
ORDER BY Tabella1.DaNas;
E nella maschera principale ci inserisci il codice che attiva/disattiva il filtro, cos'é che non và?
Ciao.
-- 
Sergio MAZZA