Intellisense su combobox per filtrare

di il
7 risposte

Intellisense su combobox per filtrare

Buongiorno,

come da titolo avrei bisogno di capire se c'è un modo di utilizzare al meglio l'intellisense in una combobox che uso per filtrare una maschera...

nello specifico nella maschera Clienti ho una combo con i clienti in tabella per poterli scegliere senza scorrerli, attualmente se scrivo le iniziali nella combo mi filtra automaticamente i risultati in elenco...si potrebbe ottenere lo stesso risultato anche inserendo una parte del nome che non sia l'iniziale?

ho letto qlc sulla funzione instr() non so se sono sulla strada giusta visto che attualmente l'evento del filtro e su afterupdate della combo....

ad ogni modo quello che mi servirebbe (se possibile) è filtrare l'elenco della combo.

inserire un like nella Query sorgente della combo potrebbe essere una soluzione? non ho provato e prima di mettere mani vorrei capire la fattibilità sulla base della vostra esperienza

grazie come sempre

7 Risposte

  • Re: Intellisense su combobox per filtrare

    Quanto chiedi non ha NULLA a che fare con l'Intellisense... che è il sistema di visualizzazione Proprietà/medodi/eventi nel codice VBA.

    Ora la combo di Nativo legge le lettere digitate e SPOSTA il Puntatore sugli ITEMS che per primi corrispondono al digitato, NON FILTRA.
    Se vuoi filtrare devi operare sul RowSource della combo inserendo un criterio con le WildCard(Jolly).

    Personalmente ti sconsiglio moltissimo questa scelta, o almeno se proprio la vuoi fare, condizionala ad una scelta voluta, magari una CheckBox che abilita la ricerca in quel modo, questo perchè ad ogni digitazione generi una NUOVA QUERY e non è proprio il massimo della funzionalità.
  • Re: Intellisense su combobox per filtrare

    Che io sappia l'"intellisense" è una funzionalità/impostazione dell'editor VBA per guidare l'utente nella trascrizione del codice. Qui non c'entra nulla.
    Per risolvere il tuo problema cambia la sintassi del Criterio legato al campo testuale del Cliente così:
    Like "*" & [Digita Cliente] & "*"

    P.S.: leggo @Alex che dice le stesse cose. Concordo con lui sulla (non) validità di una scelta del genere.
  • Re: Intellisense su combobox per filtrare

    Perfetto...mi bastava già...te la sconsiglio...

    perdono per l'uso improprio di intellisense
  • Re: Intellisense su combobox per filtrare

    Salve a tutti
    anche io ho la stessa esigenza.
    ho inserito nella maschera una casella di testo e subito in basso una list box.
    quando scrivo nella casella di testo e premo invio, nell'evento afterUpdate filtro le righe della listbox come suggerito da Osvaldo Like "*" & [Digita Cliente] & "*" e tutto funziona.
    Il problema è estetico nel senso che prima di iniziare a scrivere, quindi all'apertura della maschera, la listbox presenta tutte le righe.
    Secondo : sarebbe bello che la list box si aggiornasse man mano che scrivo le lettere (evento OnKeyDown) ma non mi funziona
    qualche suggerimento per piacere
  • Re: Intellisense su combobox per filtrare

    riddik ha scritto:


    Salve a tutti
    anche io ho la stessa esigenza.
    ho inserito nella maschera una casella di testo e subito in basso una list box.
    quando scrivo nella casella di testo e premo invio, nell'evento afterUpdate filtro le righe della listbox come suggerito da Osvaldo Like "*" & [Digita Cliente] & "*" e tutto funziona.
    Il problema è estetico nel senso che prima di iniziare a scrivere, quindi all'apertura della maschera, la listbox presenta tutte le righe.
    Con lo stesso metodo con cui filtri il testo Parziale... simula un Criterio FALSO...!
    "1=0" ad esempio, e la Lista sarà Vuota... purtroppo siccome non mostri il codice mi fermo al suggerimento di massima.

    riddik ha scritto:


    Secondo : sarebbe bello che la list box si aggiornasse man mano che scrivo le lettere (evento OnKeyDown) ma non mi funziona
    qualche suggerimento per piacere
    Basta usare l'evento KeyDown o KeyPress...
  • Re: Intellisense su combobox per filtrare

    @Alex ha scritto:


    riddik ha scritto:


    Salve a tutti
    anche io ho la stessa esigenza.
    ho inserito nella maschera una casella di testo e subito in basso una list box.
    quando scrivo nella casella di testo e premo invio, nell'evento afterUpdate filtro le righe della listbox come suggerito da Osvaldo Like "*" & [Digita Cliente] & "*" e tutto funziona.
    Il problema è estetico nel senso che prima di iniziare a scrivere, quindi all'apertura della maschera, la listbox presenta tutte le righe.
    Con lo stesso metodo con cui filtri il testo Parziale... simula un Criterio FALSO...!
    "1=0" ad esempio, e la Lista sarà Vuota... purtroppo siccome non mostri il codice mi fermo al suggerimento di massima.

    riddik ha scritto:


    Secondo : sarebbe bello che la list box si aggiornasse man mano che scrivo le lettere (evento OnKeyDown) ma non mi funziona
    qualche suggerimento per piacere
    Basta usare l'evento KeyDown o KeyPress...
    Ci ho provato, ma fin quando non premi enter il valore della casella di testo non viene confermato
    me.for non si aggiorna al keyDown


    Private Sub for_KeyDown(KeyCode As Integer, Shift As Integer)

    Me.fornitori.RowSource = "SELECT fornitori.IdCodice, fornitori.Denominazione FROM fornitori WHERE (((fornitori.Denominazione) Like ""*"" & '" + Me.for + "' & ""*""))ORDER BY fornitori.[Denominazione];"

    Me.fornitori.Requery
    Me.fornitori.Visible = True
    End Sub
  • Re: Intellisense su combobox per filtrare

    riddik ha scritto:


    Ci ho provato, ma fin quando non premi enter il valore della casella di testo non viene confermato
    me.for non si aggiorna al keyDown
    Non si aggiorna la proprietà Value, che è quella predefinita. Ecco una delle differenze più evidenti delle textbox in VBA e quelle in VB(net) : guarda come funziona la proprietà Text
Devi accedere o registrarti per scrivere nel forum
7 risposte