Newsgroup: it.comp.appl.access
Titolo: Sempre problema su Trova!

Ciao a tutti!
Ho un programmino di agende basato su una MiaForm associata a una
MiaTabella con circa 25 campi ed alcune migliaia di records: vorrei
poter effettuare una ricerca del tipo di quelle effettuabili con il
comando Trova del menù per trovare all'interno  del DB un particolare
testo (come tanti altri, penso che il comando Trova non sia proprio il
massimo per l'utente finale). E fin qui, grazie al Vs. aiuto, sono
riuscito con il seguente codice lanciato da un Button in una piccola
form di ricerca con proprietà PopUp impostata a Sì, ad effettuare + o
- quello che mi serve:
Dim strTrovaParteCampo As String
    DoCmd.Echo False, ""
    strTrovaParteCampo = Forms!FormRicerca!Testo
    Forms!FormAgenda.SetFocus
    Forms!FormAgenda!PrimoControlloTesto.SetFocus
    DoCmd.FindRecord strTrovaParteCampo, acAnywhere, False,
acSearchAll, False, acAll, False
    DoCmd.Echo True, ""
In pratica sto cercando di ricostruire il comportamento del comando
Trova del menù in una form + semplice e leggibile.
L'unico problema è che dal comando Trova del menù se un testo è
presente in + campi della FormAgenda, me li passa tutti uno ad uno,
fermandosi ad ogni ricorrenza e prima di passare ai record successivi:
dalla mia FormsRicerca con il codice sopra indicato una volta trovato
un campo in un record non si schioda + di lì. Pare insomma che debba
passare al record successivo per poter effettuare la ricerca, ma così
facendo se ci sono altri testi simili in campi successivi del record
in cui è stata trovata la prima ricorrenza, non me li trova!
C'è qualcuno che può darmi una mano?
Grazie e ri-ciao!

 ha scritto nel messaggio 
news:f67d72c6-d0c4-43fb...@k39g2000hsf.googlegroups.com...
Ciao a tutti!
Ho un programmino di agende basato su una MiaForm associata a una
MiaTabella con circa 25 campi ed alcune migliaia di records: vorrei
poter effettuare una ricerca del tipo di quelle effettuabili con il
comando Trova del menů per trovare all'interno  del DB un particolare
testo (come tanti altri, penso che il comando Trova non sia proprio il
massimo per l'utente finale). E fin qui, grazie al Vs. aiuto, sono
riuscito con il seguente codice lanciato da un Button in una piccola
form di ricerca con proprietŕ PopUp impostata a Sě, ad effettuare + o
- quello che mi serve:
Dim strTrovaParteCampo As String
    DoCmd.Echo False, ""
    strTrovaParteCampo = Forms!FormRicerca!Testo
    Forms!FormAgenda.SetFocus
    Forms!FormAgenda!PrimoControlloTesto.SetFocus
    DoCmd.FindRecord strTrovaParteCampo, acAnywhere, False,
acSearchAll, False, acAll, False
    DoCmd.Echo True, ""
In pratica sto cercando di ricostruire il comportamento del comando
Trova del menů in una form + semplice e leggibile.
L'unico problema č che dal comando Trova del menů se un testo č
presente in + campi della FormAgenda, me li passa tutti uno ad uno,
fermandosi ad ogni ricorrenza e prima di passare ai record successivi:
dalla mia FormsRicerca con il codice sopra indicato una volta trovato
un campo in un record non si schioda + di lě. Pare insomma che debba
passare al record successivo per poter effettuare la ricerca, ma cosě
facendo se ci sono altri testi simili in campi successivi del record
in cui č stata trovata la prima ricorrenza, non me li trova!
C'č qualcuno che puň darmi una mano?
Grazie e ri-ciao!
[risposta]
Se vuoi utilizzare il "Trova" tradizionale puoi attivarlo e impostare le 
opzioni tramite il SendKeys:
Es.
    Screen.PreviousControl.SetFocus
    DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70
    SendKeys "%O P" '<-- Confronta = Parte del campo
praticamente simuli la pressione delle lettere sottolineate; per le 
opzioni/bottoni con la combinazione ALT+lettera, per i valori delle opzioni 
solo la prima lettera (o se c'č la lettera sottolineata).
Se invece vuoi farlo tramite codice VBA, devi impostare, la seconda volta 
che esegui il metodo FindRecord, il parametro "TrovaPrima" a False (vedi 
help):
'--- tratto dall'help ---
TrovaPrima     Elemento Variant facoltativo. Impostare su True per iniziare 
la ricerca dal primo record. Utilizzare False per iniziare la ricerca dal 
record successivo a quello corrente. Se si omette questo argomento, viene 
utilizzata l'impostazione predefinita, ovvero True.
'---
Altrimenti, sempre dopo il primo avvio di FindRecord, devi eseguire il 
metodo FindNext (vedi help)...
Ciao.
-- 
Sergio MAZZA

 Sergio MAZZA
Preferirei evitare l'enigmatica (per l'utente finale) maschera del
Trova del menù: nel codice che ho postato il TrovaPrima è già a False,
ma non funziona, ho provato con FindNext ma non funziona, l'unico modo
è di zompare al record successivo e rilanciare la ricerca, ma se ci
sono delle ricorrenze utili nel medesimo record di prima, (soltanto in
campi successivi come tabulazione), gli stessi non vengono evidenziati!