zoeken van record

Status
Niet open voor verdere reacties.

JEPEDEWE

Terugkerende gebruiker
Lid geworden
14 jun 2006
Berichten
1.682
Hllo,
Ik heb een keuzelijst met records.
Op hetzelfde formulier een inputveld waar ik een op te zoeken naam in kwijt wil.

het zou prettig zijn dat de records in de keuzelijst zich aanpassen naargelang ik meer in het inputveld schrijf...
Nu doe ik dat na het ingeven van een naam:

Private Sub wat_te_zoeken_AfterUpdate()
zoekstring = "*" & Me.wat_te_zoeken & "*"
Me.naamlijst.RowSource = "SELECT Fiche.NAAM, Fiche.STRAAT, Fiche.PLAATS, Fiche.GEBOORTE, Fiche.Rijksregisternummer FROM fiche WHERE naam like '" & zoekstring & "' ORDER BY Fiche.NAAM, Fiche.STRAAT "
Me.Refresh
If IsEmpty(Me.naamlijst) = True Then
If MsgBox("Niemand beantwoordt aan de zoekstring", vbOKOnly, "Zoeken") = vbOK Then
End If
End If
End Sub

ook werkt de Msgbox niet... blijkbaar, als ik naar de inhoud van de keuzelijst kijk, is deze niet "empty" terwijl er niets in staat.. wat doe ik hier dan weer fout?

Bedankt voor de hulp
JP
 
Om de rowsource aan te passen moet je de code in de OnChange event van de combo schrijven, deze wordt getriggerd telkens je iets typt. De ervaring leert echter dat dit als storend en traag wordt ervaren.
Wat je code betreft: je past wel de rowsource aan, maar er verandert niets aan de inhoud van je veld voor je dit gaat testen. Je kan misschien een recordset object aanmaken met de rowsource SQL en testen of deze records bevat voor je de messagebox toont.

Vriendelijke groeten
Noëlla
 
Ik werk regelmatig met tekstvakken om hele grote (20.000+) keuzelijsten 'voor te filteren' en dat werkt razendsnel en zonder problemen. Ik heb nog nooit iemand horen klagen over de snelheid, simpelweg omdat niemand in staat is om sneller de muis te pakken na het invoeren van de tekst, en vervolgens de keuzelijst open te klappen. En zelfs dat kun je nog voor de gebruiker instellen. Of dat handig is betwijfel ik trouwens, omdat je dan steeds terug moet als je tekst wilt toevoegen :)

Code:
Sub wat_te_zoeken_Change()
Dim strSQL As String, zoekstring As String
    zoekstring = "WHERE naam Like ""*" & Me.wat_te_zoeken & "*"""
    strSQL = "SELECT NAAM, STRAAT, PLAATS, GEBOORTE, Rijksregisternummer FROM fiche "
    strSQL = strSQL & IIf(zoekstring = vbNullString, "", zoekstring) & " ORDER BY NAAM, STRAAT "
    With Me.naamlijst
        .RowSource = strSQL
        .Requery
        '.SetFocus     Mocht je de keuzelijst automatisch willen uitklappen, deze twee regels activeren
        '.Dropdown
    End With
End Sub
 
Michel,

Als ik .dorpdown wil gebruiken krijg ik een compileerfout
Als ik .setfocus gebruik dan krijgt de keuzelijst focus en moet ik manueel telkens weer naar het inputveld

laat ik beide weg dan flikkert de keuzelijst even maar gebeurt er verder niets
 
.setfocus gebruik dan krijgt de keuzelijst focus en moet ik manueel telkens weer naar het inputveld
Daarom zei ik ook: "of dat handig is" :). Ik vind dus ook van niet. Overigens kun je de muis wel boven het tekstvak zetten, en dan klikken en doortypen. Maar het blijft een flutoplossing. Je laatste opmerking is natuurlijk logisch; je vult tekst in in het tekstvak, en vervolgens wordt 'live' de keuzelijst aangepast. De resultaten daarvan zie je pas als je de keuzelijst openklapt. Anders zie je niets.
Je kunt het effect nog wel gebruiken als je met een minimale lengte van het tekstveld werkt.
Code:
    With Me.naamlijst
        .RowSource = strSQL
        .Requery
        If Len(Me.wat_te_zoeken.Text) > 3 Then
            .SetFocus
            .Dropdown
        End If
    End With
Maakt de last iets draaglijker :)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan