Newsgroup: it.comp.appl.access
Titolo: Filtro casella combinata

Buongiorno a tutti,
vorrei sapere se esiste un metodo più funzionale per filtrare una casella combinata rispetto a quello che ho fatto io.
Mi spiego:
Vorrei scrivere in una casella combinata una parte del testo e fare in modo che mi appaiano tutti i risultati che contengono il testo che scrivo e non solo quelli che iniziano così.
Per esempio se scrivo LAMP vorrei vedere i dati filtrati così:
ALAMP
LAMP
LAMPA ecc
 
Io ho risolto inserendo una casella di testo che ho chiamato ricerca e poi cliccando sulla combo vedo i dati filtrati perchè nel'origine riga della combo ho scritto:
 
SELECT Materiali.Materiale
FROM Materiali
WHERE (((Materiali.Materiale) Like "*" & [Forms]![BEF]![SubBeniBef]![Ricerca] & "*"))
ORDER BY Materiali.Materiale;
 
Non sono riuscita a trovare un'idea più semplice.
 
Qualcuno mi può illuminare?
Grazie mille in anticipo!

Puoi anche usare la combo stessa...
 
https://stackoverflow.com/questions/38516670/ms-access-combo-box-fuzzy-search
 
 
@Alex


Ciao Alex,
grazie mille per la tua pronta risposta... faccio però fatica a capire dove sto sbagliando perchè qualcosa non funziona bene...
 
Ti spiego: io la sto usando in una maschera continua, se uso il codice preso dal link che mi hai dato tu, mi cambia tutte le voci di tutti i righi e non solo la combo del rigo che sto lavorando, in più non accetta gli spazi... (se devo cercare cavo an... lui mi cerca cavoan) 
Io l'ho modificata così... per il resto funzionerebbe
 
Private Sub CmbMateriale_KeyPress(KeyAscii As Integer)
 
    Dim strSQL As String
    Dim valu   As String: valu = ""
 
    Select Case KeyAscii
        Case 65 To 90, 48 To 57, 97 To 122, 8, 127 'A-Z, a-z, 0-9, BS & Del
            'Let these key codes pass through
            valu = CmbMateriale.Text & Chr(KeyAscii)
        Case Else
            'All others get trapped
            KeyAscii = 0 ' set ascii 0 to trap others input
            Exit Sub
    End Select
 
    strSQL = "SELECT Materiale, Materiale FROM Materiali " _
           & "WHERE Materiale LIKE '*" & valu & "*' ORDER BY 2"
 
    Me.CmbMateriale.RowSource = strSQL
    Me.CmbMateriale.Dropdown
 
    Debug.Print strSQL
 
End Sub
 
Non riesco a capire dove sbaglio? Hai qualche idea? (Non capisco nemmeno la stinga sql order by 2 ???), mi sento molto ignorante...
 
Grazie veramente tanto per i vostri preziosissimi aiuti!
 

Lo pretended :

In RowSource della Combo:
    SELECT Materiali.Materiale FROM Materiali
    WHERE (((Materiali.Materiale) Like "*" &
    [Forms]![Form4].[Form]![Text2] & "*"))
    ORDER BY Materiali.Materiale;
 
In OnEnter della Combo:
    Refresh

Bruno Campanini wrote :

Come non detto, mi è partita troppo presto!
 
Bruno

Bruno Campanini explained :
 
 In RowSource della Combo:
     SELECT Materiali.Materiale FROM Materiali
     WHERE (((Materiali.Materiale) Like "*" &
     [Forms]![Form4].[Form]![Text2] & "*"))
     ORDER BY Materiali.Materiale;
 
Ovvero:
     SELECT Materiali.Materiale FROM Materiali
     WHERE (((Materiali.Materiale) Like "*" &
     [Forms]![Form5].[Form]![Form4].Form![Text2]
     & "*")) ORDER BY Materiali.Materiale;
 
In OnEnter della Combo:
     Refresh
 
Sto psticciando con un portatile... cui nono sono avvezzo!
 
Bruno


Ciao,
grazie mille ma non ho capito...
Intendi dire che nella seguente routine 
[Forms]![Form5].[Form]![Form4].Form![Text2] Text2 è la combo stessa?
 
Perchè se così fosse ho provato ma non funziona...
Se invece Text2 è un'altra casella di testo da andare ad alimentare per la ricerca è ciò che ho fatto io... 
Mi sarebbe piaciuto però poterlo fare scrivendo all'interno della combo stessa come cercava di farmi fare Alex ma faccio fatica ad ottimizzarlo, continuo ad avere errori e imperfezioni che non mi convincono, nel caso non si potesse mi accontento della mia versione...
 
Vi chiedo ancora un'ultima cosa, se possibile, come si fa da codice a fare in modo che si apra la lista della combo?
Perchè se io scrivessi nella mia casella di testo chiamata ricerca sarebbe carino se si aprisse la combo e automaticamente si aggiornasse in base a ogni lettera che scrivo in ricerca. Come invece ho fatto io, dopo che scrivo in ricerca, vado a cliccare sulla combo per vedere cosa mi ha filtrato...
 
Rìngrazio in anticipo qualunque idea o osservazione...
Grazie mille

 modo che si apra la lista della combo?
ComboName.Dropdown
 
Bruno