Newsgroup: it.comp.appl.access
Titolo: Ricerca testo

Salve a tutti, volevo chiedere una cosa che credo sia semplice!
Ho dei campi memo con molti caratteri, quello che mi occorre è creare una
form di ricerca per inserire la parola da cercare e visualizzare i risultati
in una nuova maschera!E fin qui tutto bene! Il problema sorge quando vorrei
fare in modo che nella maschera in cui vengono
visualizzati i risultati della ricerca la parola cercata sia evidenziata o
che almeno il cursore si posizioni dove si trova la parola cercata!
Non so se sono stato molto chiaro, spero possiate aiutarmi!
Ciao  e grazie a tutti
Luigi

 ha scritto nel messaggio
news:WpU29.32883$n04.9...@twister2.libero.it...

sull'evento su uscita ci metti nomecontrollo.setfocus
e se non esci dal controllo mettilo su invio al termine del codice che usi
per la ricerca.
by
stwe

 ha scritto nel messaggio
news:jvW29.163172$Jj7.3...@news1.tin.it...

Il problema è che vorrei posizionare il cursore all'interno del campo
proprio nel punto in cui compare la parola da me inserita nella form di
ricerca! E' possibile??
Ciao e grazie
Luigi

 ha scritto nel messaggio
news:6Nc39.36294$lu5.1...@twister1.libero.it...

questo non lo so, intendi qualcosa come il trova di windows? allora
implementa una maschera che contenga il "trova" di access, mi è venuta
mentre ti rispondevo...
by
stwe


Sul sito comune c'è una funzione che ti serve. Ho provato a ricercarlo ma
purtrtoppo sono in partenza. Ti crea un campo non associato e inserendo la
descrizione che ti serve, ti porta sul record giusto.
ciao
MAssimiliano


Prova cosě:
'-----------------
If Me!xgiaTrovato = True Then
    Me.RecordsetClone.FindNext "[xmemo] like '*bla bla*'"
Else
    Me.RecordsetClone.FindFirst "[xmemo] like '*bla bla*'"
End If
If Me.RecordsetClone.NoMatch Then
    MsgBox "Non trovato!"
    Me!xgiaTrovato = False
Else
    Me!xgiaTrovato = True
    DoCmd.GoToRecord acDataForm, "maschera7", acGoTo,
Me.RecordsetClone.AbsolutePosition + 1
    Me!xMemo.SetFocus
    Me!xMemo.SelStart = InStr(1, "bal bla", Nz(Me!xMemo.Value, ""))
    Me!xMemo.SelLength = Len("bla bla")
End If
'-----------------
da inserire nell'evento "su clic" di un bottone; "xgiaTrovato" č una casella
di controllo non associata, "xMemo" č il controllo associato al campo
memo...
Ciao.
--
Sergio MAZZA

>DoCmd.GoToRecord acDataForm, Me.Name, acGoTo
Io ho creato una form a maschere continue direttamente a partire dalla
tabella...dove ho sbagliato??
Ciao e grazie!
Luigi

 Luigi
Dopo "acGoTo" c'č un altro parametro; come puoi vedere dalla virgola che lo
segue. Sicuramente ti ha tratto in inganno l'andata a capo del testo.
La riga giusta č:
'---------
DoCmd.GoToRecord acDataForm, Me.name,
acGoTo,Me.RecordsetClone.AbsolutePosition + 1
'---------
Senza andare a capo (vedi help GoToRecord)...
Ciao.
--
Sergio MAZZA


Ciao Sergio,
dopo la tua ultima delucidazione il programma funziona bene, ora, non vorrei
sembrare assillante..., ma vorrei chiederti un'ultima cosa!
Quando inserisco la parola nella casella di testo e effettuo la ricerca il
cursore si sposta alla prima parola del record contenente quella da me
cercata. Considerando che un record può contenere molte parole (si tratta di
campi memo), sarebbe possibile far spostare il cursore in prossimità della
parola cercata anche se questa non è la prima del record??
Ti ringrazio ancora una volta infinitamente,
Luigi

 ha scritto nel messaggio
news:BNQ69.68159$lu5.1...@twister1.libero.it...

Ho controllato il codice che ti ho inviato e ho notato che c'era un errore
nel posizionamento dei parametri passati alla funzione instr().
Ora è corretta e ho aggiunto la possibilità di continuare la ricerca nella
stessa casella di testo; ho aggiunto una casella di testo chiamata
"xVecchiaPosizione" che potrai rendere non visibile.
'-------------
If Me!xgiaTrovato = True Then
'controlla se ci sono altre ricorrenze nel dato
    Me!xMemo.SetFocus
    Dim posizione As Integer
    posizione = Me!xVecchiaPosizione
    If InStr(posizione, Nz(Me!xMemo.Value, ""), Me!Testo24) > 0 Then
        Me!xMemo.SelStart = InStr(posizione, Nz(Me!xMemo.Value, ""),
Me!Testo24) - 1
        Me!xMemo.SelLength = Len(Me!Testo24)
        Me!xVecchiaPosizione = (Me!xMemo.SelStart + Me!xMemo.SelLength)
        Exit Sub
    End If
    Me.RecordsetClone.FindNext "[xmemo] like " & Chr(34) & "*" & Me!Testo24
& "*" & Chr(34)
Else
    Me.RecordsetClone.FindFirst "[xmemo] like " & Chr(34) & "*" & Me!Testo24
& "*" & Chr(34)
End If
If Me.RecordsetClone.NoMatch Then
    MsgBox Me!Testo24 & ", non trovato!"
    Me!xgiaTrovato = False
Else
    Me!xgiaTrovato = True
    DoCmd.GoToRecord acDataForm, Me.Name, acGoTo,
Me.RecordsetClone.AbsolutePosition + 1
    Me!xMemo.SetFocus
    Me!xMemo.SelStart = InStr(1, Nz(Me!xMemo.Value, ""), Me!Testo24) - 1
    Me!xMemo.SelLength = Len(Me!Testo24)
    Me!xVecchiaPosizione = (Me!xMemo.SelStart + Me!xMemo.SelLength)
End If
'-------------
Ciao.
P.S. fai attenzione a come va accapo il tuo newsreader...
Ari-Ciao.
--
Sergio MAZZA

 ha scritto nel messaggio
news:ajoh9h$s04$1...@lacerta.tiscalinet.it...

Caro Sergio,
desidero ringraziarti con tutto il cuore! Sei stato disponibilissimo e
bravissimo dal momento che il programma funziona alla perfezione! Magari
tutti i frequentatori del ng fossero disponibili come te...
Ti ringrazio ancora infinitamente,
ciao,
Luigi


Tranquillo, sono anche meglio...
Ciao.
--
Sergio MAZZA