Newsgroup: it.comp.appl.access
Titolo: Controllo trova

Ho realizzato una casella di ricerca ed un pulsante classico per effettuare
la ricerca sun campo nel cui codice ho inserito il comando .Setfocus per
puntare su un campo diverso da quello di ricerca. Quando non trova il valore
immesso nella casella vorrei che anzichč posizionarsi sul primo record della
lista mi uscisse un messaggio personalizzato del tipo "Valore non trovato!"
e rimanere posizionato nella casella di ricerca. E' possibile? e come posso
fare. Grazie,.

 ha scritto nel messaggio
news:b2fq7t$hh5$1...@lacerta.tiscalinet.it...

Come effettui la ricerca?
Quale č tutto il codice VBA usato per la ricerca?
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

Private Sub btn_trova_pag_Click()
On Error GoTo Err_btn_trova_pag_Click
    Dim stDocName As String
    stDocName = "mcr_trova pag"
    DoCmd.RunMacro stDocName
    [pag_datapag].SetFocus
Exit_btn_trova_pag_Click:
    Exit Sub
Err_btn_trova_pag_Click:
    [pagamento].SetFocus
    MsgBox Err.Description
    Resume Exit_btn_trova_pag_Click
End Sub
Mi scuso ma erroneamente avevo ripostato anzichč rispondere.

 ha scritto nel messaggio
news:b2g3kq$nkp$1...@lacerta.tiscalinet.it...

Quello che mi interessava sapere sta scritto nella macro; comunque io e le
macro non andiamo d'accordo quindi...


Normalissima macro Vai a Controllo poi Trova record
Io invece non avendo dimestichezza con il codice non vado oltre le macro e
qualche riga di codice generato con il generatore..
Vorrei inoltre sapere se posso cercare una stringa di numeri o lettere in
due campi contemporaneamente ed eventualmente come poichè ho creato due
caselle di ricerca con due pulsanti per cercare su due campi.
Ad ogni modo se mi scrivi il codice provo ad impiegarlo,grazie.

 Ad ogni modo se mi scrivi il codice provo ad impiegarlo,grazie.
Il tuo problema si risolve usando il metodo FindRecord impostando gli
argomenti giusti (vedi help).
Prova da solo: s epoi proprio non ci riesci rifatti vivo.


La seconda parte del mio messaggio chiedeva come fare per eseguire ricerca
su più campi dello stesso record contemporaneamente ovvero nella stessa
casella di controllo immettere indifferentemente il campo id oppure nome.
Grazie.

 La seconda parte del mio messaggio chiedeva come fare per eseguire ricerca
Ma siccome hai cancellato tutto, non si capisce piů una mazza!!!
Antonio



 ha scritto nel messaggio
news:b2h0qe$bvm$1...@lacerta.tiscalinet.it...

L'ho ben capito: risolvi questo tuo problema impostando adeguatamente
l'argomento soloincampocorrente del metodo FindRecord (vedi Help).


 ha scritto nel messaggio
news:X543a.116919$YG2.3...@twister1.libero.it...



Scrivi le tue risposte DOPO e non prima del testo dei messaggi precedenti.
Se l'esito della ricerca della FindRecord è negativo resti posizionato sul
record in cui eri posizionato prima della ricerca; prima di effettuare la
ricerca memorizzati la chiave primaria del record corrente; dopo la ricerca
confronta quanto memorizzato con la chiave primaria del record corrente e se
la If ti dà esito positivo significa che la ricerca ha avuto esito negativo,
nel qual caso dai il messaggio che vuoi e sposta il fuoco sul controllo che
preferisci.


 ha scritto nel messaggio
news:eLo3a.119950$ZE.33...@twister2.libero.it...

Se cortesemente mi scrivi il codice lo inserisco nel comando click del mio
pulsante ed elimino la macro,grazie. Anche in mail se preferisci.

 ha scritto nel messaggio
news:b2l6is$33d$1...@lacerta.tiscalinet.it...

Se il campo chiave primaria della tabella che è origine record della
maschera si chiama ID.
Se il controllo in cui digiti il valore da cercare si chiama Cerca.
Se i controlli associati ai due campi nei quali il valore digitato in Cerca
va ricercato si chiamano rispettivamente Fax1 e Fax2.
A fronte dell'evento "Su clic" del pulsante di comando genera il seguente
codice VBA:
Dim DepId As Long
DepId = Me!ID
Me!Fax1.SetFocus
DoCmd.FindRecord Me!Cerca, , , , , , True
If Me!ID = DepId Then
    Me!Fax2.SetFocus
    DoCmd.FindRecord Me!Cerca, , , , , , True
    If Me!ID = DepId Then
        MsgBox Me!Cerca & " non trovato"
        Me!Cerca.SetFocus
    End If
End If


 ha scritto nel messaggio
news:Fps3a.120745$ZE.33...@twister2.libero.it...

Ho provato ad inserire il codice adattandolo ma ho sbagliato forse qualcosa
per cui ricapitolando:
Ho una maschera di ricerca basata su una querry di filtro su campo
vero/falso, la chiave primaria è il campo "Boll_cod", la casella di
controllo non associato è "Bolla" con relativo pulsante "Trova" io voglio
trovare il dato della casella di controllo cercando prima nel campo
"Boll_cod" e subito dopo nel campo "Boll_cli_nome" conseguentemente se trova
allora [Boll_datapag].SetFocus altrimenti rimane nella casella di controllo
e messaggio "Dato non trovato!"
Io attualmente cerco con due caselle diverse rispettivamente per i due campi
da cercare, con macro ovviamente poichè il codice mi è ostico.
P.S. dove posso imparare ad inserire il codice per esempio titoli di libro o
altro,grazie.

 altro,grazie.
Scusami, ma non capisco cosa vuoi dire.


Ho una maschera di ricerca basata su una querry con filtro su un campo
vero/falso. La chiave primaria è il campo "Boll_cod" univoco, la casella di
controllo non associato è "Bolla" con relativo pulsante "Trova". Io vorrei
il codice da inserire nel pulsante "Trova" affinchè sia trovato il testo
immesso nella casella di controllo cercando prima nel campo "Boll_cod" ed in
successione nel campo "Boll_cli_nome" . Se trova allora esegue
[Boll_datapag].SetFocus, altrimenti rimane nella casella di controllo
generando un messaggio "Dato non trovato!".
Quanto sopra dovrebbe essere messo in codice.
Io attualmente cerco con due caselle di controllo diverse rispettivamente
per i due campi in cui cercare di cui sopra, le ho fatte con macro
ovviamente poichè il codice mi è ostico.
Se vui cambiare il tipo di casella perchè più comodo per Te, mi adeguo.


 ha scritto nel messaggio
news:b2qqs4$huk$1...@lacerta.tiscalinet.it...

Se Boll_cod è un campo di tipo numerico, il codice che ti ho precedentemente
suggerito, personalizzato con i tuoi nomi di campi e/o controlli, dovrebbe
diventare:
Dim DepId As Long
DepId = Me![Boll_cod]
Me![Boll_cod].SetFocus
DoCmd.FindRecord Me!Bolla, , , , , , True
If Me![Boll_cod] = DepId Then
    Me![Boll_cli_nome].SetFocus
    DoCmd.FindRecord Me!Bolla, , , , , , True
    If Me![Boll_cod] = DepId Then
        MsgBox "Dato non trovato!"
        Me!Bolla.SetFocus
    Else
        Me![Boll_datapag].SetFocus
    End If
End If
Se invece Boll_cod è un campo di tipo testo, sostituisci:
Dim DepId As Long
con:
Dim DepId As String


Ho provato ad inserire il codice però non cerca anche nel campo
boll_cli_nome ma solo nel campo boll_cod e se trova punta sul campo boll_cod
anzichè al campo boll_data.

 ha scritto nel messaggio
news:b2vqlb$rqp$1...@lacerta.tiscalinet.it...

Mi dispiace ma non so proprio cosa dirti: per scrupolo ho provato la
soluzione che ti ho suggerito e a me funziona.
