Newsgroup: it.comp.appl.access
Titolo: codice per ricerca

ciao!
ho fatto qualche esperimento, ma siccome non voglio utilizzare query o
filtri e di vba non ci capisco praticamente niente, avrei bisogno del vostro
aiuto.
ecco il problema:
ho una maschera che visualizza tutte le informazioni sui clienti con i campi
Società, Cognome, Nome, ecc. vorrei fare in modo che clickando su un bottone
si apra una finestra (credo che in vba sia chiamata inputbox) dove posso
inserire il nome (o parte del nome) del cliente da cercare e che su 'ok' o
su invio venga visualizzato il ciente in questione.
per es.: devo cercare il cliente "pincopallino" e dovrei poterlo trovare
inserendo nella ricerca soltanto "pallino"
vorrei sapere anche se è possibile fare in modo che la ricerca venga
effettuata sia nel campo 'società' che nel campo 'cognome'.
grazie in anticipo :-)

 ha scritto nel messaggio
news:wC3nc.219558$rM4.9...@news4.tin.it...

Ah! Così pensi di risparmiarti codice VBA?
La via più semplice è quella di crearsi delle caselle combinate e gestire,
per ognuna di queste, l'evento "dopo aggiornamento" inserendoci il codice
che applica il filtro alla maschera:
Es. evento dopo aggiornamento della casella combinata "qCognome"
If not isnull(me!qCognome) then
    me.filter = "cognome=" & chr(34) & me!qCognome & chr(34)
end if
Poi crei un bottone che elimina tutti i filtri applicati; nell'evento "su
clic" del bottone inserisci:
DoCmd.ShowAllRecords
Ciao.
-- 
Sergio MAZZA

Ciao.
scusa, mi sono spiegata male, non voglio evitare il codice vba, anzi volevo
proprio quello :-)
ho già provato con la casella combinata, ma è un po' scomoda, perchè i
clienti sono tantissimi.
vorrei una cosa tipo bookmark, ho anche provato con il codice dell'esempio
nell'help di access (sostituendo ovviamente il nome del pulsante e del
campo), ma mi dice che c'è un errore nella riga rst.FindFirst:
Private Sub Ricerca_Click()
   Dim rst As Recordset, strCriteria As String
   strCriteria = "[Società] Like '*" & Inputbox("Inserisci il nome da
cercare") & "*'"
   Set rst = Me.RecordsetClone
   rst.FindFirst strCriteria     '<- dice che l'errore è qui'
   If rst.NoMatch Then
      MsgBox "Non trovato"
   Else
      Me. Bookmark = rst.Bookmark
   End If
End Sub
secondo te cos'è sbagliato? e come faccio a fare la ricerca su due campi in
vece che uno solo?
grazie, ciao!

 ha scritto nel messaggio
news:iamnc.165738$hc5.7...@news3.tin.it...

Non capisco perchè usi un ulteriore Recordset oltre al Clone.....!!!!
Hai sprecato risorse inutili.
Poi conviene controllare anche l'eventualità che uno prema Annulla con
InputBox
in ogni caso conviene evitare l'APICE poichè se il Nome o Cognome contiene
l'Apice(Apostrofo) avresti sempre errore....!!!
Private Sub Ricerca_Click()
    Dim strIN as string
    Dim strCriteria As String
    strIN =NZ(Inputbox("Inserisci il nome da
 cercare"),vbnullstring)
    strIN =chr(34) & "*" & strIN  & "*" & chr(34)
    strCriteria = "[Società] Like " & strIN
    with Me.RecordsetClone
        .FindFirst strCriteria     '<- dice che l'errore è qui'
        If .NoMatch Then
           MsgBox "Non trovato"
        Else
           Me. Bookmark = .Bookmark
        End If
 End Sub
Ciao.
@Alex.


inserendo anche l'end with funziona, grazie millemila :-))
dimenticavo: cosa devo aggiungere nel codice se voglio fare la ricerca sia
nel campo società che nel campo cognome allo stesso tempo?

 ha scritto nel messaggio
news:8Ctnc.167153$hc5.7...@news3.tin.it...

LAPSUS del End With.... ma è dovuto al fatto che ho scritto quì a
braccio....!
Per la concatenzione dei Criteri devi usare AND o OR dipende da te
come li vuoi considerare....!
Ciao.
@ALex.

 @ALex.
ok, grazie :-)
ciao!

 @ALex.
ho provato a mettere [societā] OR [cognome], ma invece di spostarsi sul
record che ho cercato, si sposta sul primo record che contiene dei dati nel
campo in cui doveva cercare, dove ho sbagliato?

 campo in cui doveva cercare, dove ho sbagliato?
Perchè non ha trovato nulla e forse a seguito della sintassi Sbagliata.
[Società]= Criterio1 OR [Cognome]=Criterio2
Tieni sempre conto della sintassi dedicata per la Tipologia
di Variabile.....!
Ciao.
@Alex.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 @Alex.
scusa, ma sono una principiante in materia, ho riprovato in vari modi, ma
non riesco a farlo funzionare. per esempio se lo scrivo così mi trova il
cognome giusto, ma se cerco una società si sposta sulla prima che trova (che
non è quella giusta):
Private Sub Ricerca_Click()
    Dim strIN as string
    Dim strCriteria As String
    strIN =NZ(Inputbox("Inserisci il nome da
 cercare"),vbnullstring)
    strIN =chr(34) & "*" & strIN  & "*" & chr(34)
    strCriteria = "[Società] Or [Cognome] Like " & strIN
    with Me.RecordsetClone
        .FindFirst strCriteria
        If .NoMatch Then
           MsgBox "Non trovato"
        Else
           Me. Bookmark = .Bookmark
        End If
    End with
 End Sub
non so più come fare

 ha scritto nel messaggio
news:HJPnc.170965$hc5.7...@news3.tin.it...

Partiamo da Zero.
Allora visto che hai 2 Criteri devi avere 2 Domande(InputBox) mi pare
logico...!, pertanto serviranno 2 Stringhe da formattare ognuna il suo
criterio.
Private Sub Ricerca_Click()
     Dim strSOC as string
     Dim strCOGN as string
     Dim strCriteria As String
     strSOC =NZ(Inputbox("Inserisci la Società da
  cercare"),vbnullstring)
    strCOGN =NZ(Inputbox("Inserisci il Cognome da
  cercare"),vbnullstring)
     strSOC =chr(34) & "*" & strSOC & "*" & chr(34)
     strCOGN =chr(34) & "*" & strCOGN & "*" & chr(34)
     strCriteria = "[Società] like " & strSOC & " Or [Cognome] Like " &
strCOGN
     with Me.RecordsetClone
         .FindFirst strCriteria
         If .NoMatch Then
            MsgBox "Non trovato"
         Else
            Me. Bookmark = .Bookmark
         End If
     End with
  End Sub
Ciao.
@Alex.

   End Sub
con questo codice ho il problema inverso di prima: trovo la società ma non
il cognome giusto :-(
però alla fine sono riuscita a risolvere il mio problema, mi ero scordata
qualche pezzo. ecco come mi torna meglio:
Private Sub Ricerca_Click()
    Dim strIN As String
    Dim strCriteria As String
    strIN = Nz(InputBox("Inserisci il nome da cercare: "), vbNullString)
    strIN = Chr(34) & "*" & strIN & "*" & Chr(34)
    strCriteria = "[Società] Like " & strIN & " OR [Cognome] Like " & strIN
    With Me.RecordsetClone
        .FindFirst strCriteria
        If .NoMatch Then
           MsgBox "Nessun nome corrispondente trovato"
        Else
           Me.Bookmark = .Bookmark
        End If
    End With
 End Sub
un immenso grazie per la tua pazienza e il tuo aiuto, ciao! :-))