Newsgroup: it.comp.appl.access
Titolo: Codice che usa la macro findRecord

Ciao a tutti.
Premetto che sto usando Access da non molto tempo, ma quello che dovrei 
fare mi pare concettualmente abbastanza semplice eppure c'è qualcosa che 
non mi torna. Ora vi spiego.
Io ho una maschera che si chiama "archivio_pratiche" dove prendo i dati 
da una tabella che si chiama "archivio" e li visualizzo.
In questa maschera ho inserito un pulsante (che si chiama "Comando301") 
e una casella di testo (che si chiama "Testo297"). Vorrei 
"semplicemente" immettere un'espressione in questa casella di testo, 
cliccare sul pulsante "trova" e far ricercare in tutti i record della 
tabella l'espressione immessa.
Quando clicco sul pulsante mi esce una finestrella "Errore di run-time 
'2162': L'esecuzione di una macro impostata ad una delle proprietà del 
campo corrente non è riuscita per errore nell'argomento dell'azione 
TrovaRecord"
Gli faccio fare il debug e mi si blocca sulla riga DoCmd.FindRecord 
Ricerca
Questo sotto è riportato il listato corrispondente al click sul 
Comando301
(Questo listato è stato preso da uno già riportato sul ng e 
rimaneggiato)
Grazie a chiunque è in grado di darmi una mano.
Saluti. Alessandro
Private Sub Comando301_Click()
Dim Ricerca As String
Ricerca = Testo297.Value
Testo297.SetFocus
DoCmd.FindRecord Ricerca
If Testo297.Value <> Ricerca Then
    MsgBox "Il cliente cercato non esiste"
    Exit Sub
End If
End Sub 

 ha scritto nel messaggio
news:SiNCe.174192$75.75...@news4.tin.it...

Se come dici sopra Testo297 è la casella di testo non associata in cui
digiti la stringa da ricercare, ha significato scrivere:
Ricerca = Testo297.Value
ma non ha certo significato la riga di codice:
Testo297.SetFocus
Il fuoco lo devi spostare sulla casella di testo associata al campo nel
quale vuoi fare la ricerca, quindi deve essere NECESSARIAMENTE una casella
di testo associata.
-- 
Roberto
-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------

 di testo associata.
Innanzitutto ti ringrazio per la veloce risposta.
La casella di testo in cui vorrei eseguire la ricerca si chiama 
"Testo147" ed è associata al campo "X_NOMDEB" della tabella "archivio". 
Ora il listato è il seguente:
    Private Sub Comando301_Click()
    Dim Ricerca As String
    Ricerca = Testo297.Value
    Testo147.SetFocus
    DoCmd.FindRecord Ricerca
    If Testo297.Value <> Ricerca Then
        MsgBox "Il cliente cercato non esiste"
        Exit Sub
    End If
    End Sub
Purtroppo però se ricerco un nome che esiste davvero nella tabella 
"archivio" il programma effettivamente sposta il fuoco sulla casella 
"Testo147", ma comunque mi visualizza solo il primo record e basta, e 
nel caso in cui ricerco un nome che non esiste non mi fa apparire la 
MsgBox che mi dice che il cliente cercato non esiste...
Seconto te dove sbaglio???????????????
Il nome del campo "X_NOMDEB" non deve in qualche modo rientrare nel 
listato??? Oppure rientra tramite il "Testo147" a cui viene 
associato????
Grazie ancora per le risposte.
Alessandro 

 Alessandro


 FilterOn della maschera e magari usare una maschera continua.
In effetti la mia idea sarebbe quella di usare due pulsantini: un che fa 
la funzione "cerca" e l'altro che fa la funzione "cerca successivo" 
utilizzando per questo secondo pulsate la funzione "findnext"
Il fatto è che se io vado anche, per esempio, sul terzo record e scrivo 
nella casellina il cognome del quarto, questo listato mi posiziona la 
maschera comunque sul primo record e la casellina "Il cliente cercato 
non esiste" appare sempre comunque!
Esempio:
Il primo record è di un certo "milone" il terzo di un certo "brambilla" 
e il quarto di un certo "spanò".
Se io mi metto sulla scheda di Brambilla e scrivo nella casellina "spa", 
io mi aspetto che la maschera si posizioni sul record relativo a Spanò, 
invece si riposiziona sul primo record che è quello riferito a Milone.
Non so più dove sbattere la testa...........
Grazie mille per la pazienza. 

 Grazie mille per la pazienza.
-- 


 End Sub
Perfetto! Finalmente un listato che funziona come Dio comanda!!!!!!!
Le unica modifiche al tuo listato che mi sono sentito di fare sono state 
due:
- impostare l'ultimo argomento del FindRecord come False e non come 
True, così non ho bisogno di due pulsanti del tipo "trova primo" e 
"trova successivo". In questo modo semplicemente continuando a premere 
sul pulsante 301 mi cerca tutti recordche soddisfano la ricerca.
- impostare il secondo argomento in acStart, altrimenti me lo cercava in 
tutto il campo.
Ora il listato è il seguente e funziona bene:
Private Sub Comando301_Click()
Dim Ricerca As String
    Testo147.SetFocus
    Ricerca = Testo297
    DoCmd.FindRecord Ricerca, acStart, False, _
    acSearchAll, False, acCurrent, False
    If Testo147 Like "*" & Ricerca & "*" Then
    Else
        MsgBox "Il cliente cercato non esiste"
        Exit Sub
    End If
End Sub
Ti ringrazio veramente tantissimo!
Saluti. Alessandro