Campo testo ricerca

di lucavalentino il
17 risposte
Vorrei creare in una maschera continua un campo di testo per la ricerca e contemporaneamente farmi visualizzare solo i record trovati.

Il codice mi da errore 13.
aziende_tutti è una query di unione

Private Sub ricerca_KeyUp(KeyCode As Integer, Shift As Integer)
sRicerca
End Sub

Sub sRicerca()
Dim cerca As String
Dim testo As String
If IsNull(Me.ricerca) Then
Me.ricerca.SetFocus
Else
testo = Me.ricerca.Value
cerca = "select * from aziende_tutti where (AZIENDA like ""*" & testo & "" * ")"
Me.RecordSource = cerca
End If
End Sub

17 Risposte

  • Ti consiglio di consultare il database di esempio northwind. Li c è tutto quello che ti occorre.
  • Devi usare la proprietà FILTER di Maschera non riassegnare il Recordset...!
    
    Private Sub ricerca_KeyUp(KeyCode As Integer, Shift As Integer)
    	me.filter="AZIENDA like '*" & Me.Ricerca.Text & "*'"
    	me.filterOn=True
    End Sub
  • Ho provato il codice suggerito da Alex, ma ricevo Errore di runtime '2185': Impossibile fare riferimento ad una proprietà o ad un metodo per un controllo a meno che non abbia lo stato attivo.
  • Il riferimento alla proprietà TEXT genera quel problema, ma evidentemente hai qualche differenza nel codice... in quanto KEYUP si verifica se il controllo ha il FOCUS... quindi probabilmente hai alterato qualche cosa...?

    Io in ogni caso userei CHANGE come evento.

    Serve leggere TEXT in quanto la Default property è VALUE non è aggiornata nel mentre si digita.
  • @Alex ha scritto:


    Il riferimento alla proprietà TEXT genera quel problema, ma evidentemente hai qualche differenza nel codice... in quanto KEYUP si verifica se il controllo ha il FOCUS... quindi probabilmente hai alterato qualche cosa...?
    Io in ogni caso userei CHANGE come evento.
    Serve leggere TEXT in quanto la Default property è VALUE non è aggiornata nel mentre si digita.
    Non ho ben capito cosa volevi dire.
    ho provato con tale codice però ancora ricevo errore 2185
    Private Sub ricerca_Change()
    	me.filter="AZIENDA like '*" & Me.Ricerca.Text & "*'"
    	me.filterOn=True
    End Sub
  • Usa un ricerca.setfocus prima
  • Ciao. Ma il risultato che vuoi ottenere qual è?
    Vuoi che ad ogni lettera che inserisci ti vengano visualizzati di volta in volta i record che contengono quelle lettere, oppure scrivi il dato che vuoi ricercare e poi cliccando un command button esegui la ricerca?
  • fratac ha scritto:


    Ciao. Ma il risultato che vuoi ottenere qual è?
    Vuoi che ad ogni lettera che inserisci ti vengano visualizzati di volta in volta i record che contengono quelle lettere
    Voglio come scritto sopra
  • Potresti rispondere a quello che ti ho consigliato di fare e anche alle domande precise che ti fanno. Qui si collabora, non si lavora per te
  • lucavalentino ha scritto:


    fratac ha scritto:


    Ciao. Ma il risultato che vuoi ottenere qual è?
    Vuoi che ad ogni lettera che inserisci ti vengano visualizzati di volta in volta i record che contengono quelle lettere
    Voglio come scritto sopra
    Perfetto. Allora devi usare il codice scritto sopra.
  • oregon ha scritto:


    Potresti rispondere a quello che ti ho consigliato di fare e anche alle domande precise che ti fanno. Qui si collabora, non si lavora per te
    Ciao Antonio, non deve servire se quello che ha scritto è quanto suggerito in quanto l'evento presuppone il focus... quindi temo abbia imbrogliato le carte con qualche cosa di non detto, non scritto o sbagliato.
  • Sì, se comincia a funzionare questa è la prova
  • @Alex ha scritto:


    oregon ha scritto:


    Potresti rispondere a quello che ti ho consigliato di fare e anche alle domande precise che ti fanno. Qui si collabora, non si lavora per te
    Ciao Antonio, non deve servire se quello che ha scritto è quanto suggerito in quanto l'evento presuppone il focus... quindi temo abbia imbrogliato le carte con qualche cosa di non detto, non scritto o sbagliato.
    Azzardo l ipotesi che i record siano in una sottomaschera e la casella di ricerca nella form padre.
  • oregon ha scritto:


    Usa un ricerca.setfocus prima
    ho provato ma mi fa scrivere solo una lettera
    Private Sub ricerca_Change()
    Me.ricerca.SetFocus	
    me.filter="AZIENDA like '*" & Me.Ricerca.Text & "*'"
    	me.filterOn=True
    End Sub
    
Devi accedere o registrarti per scrivere nel forum
17 risposte