Access zoekfunctie in form ?

Status
Niet open voor verdere reacties.

VennaS

Gebruiker
Lid geworden
29 feb 2016
Berichten
19
Dag allen,

Ik zou graag in een form op snelle wijze kunnen zoeken naar een bepaald record. Ik weet dat dit kan door onderaan de zoekfunctie van Access zelf te gebruiken, of met Ctrl+F of met een combobox waarin je de gewenste waarde kan aanduiden. Nu had ik echter van iemand gehoord dat het ook mogelijk is om in een bepaald vakje bepaalde gegevens in te vullen, en dat er onder dat vakje dan bepaalde "mogelijkheden" tevoorschijn komen waaruit je er één kan selecteren die dan automatisch in het recordveld wordt ingevuld.

Dus bvb: ik heb een tabel met 100 werknemers die allemaal 1 bepaald profiel hebben. Ik heb daarnaast ook een lijst met deze 15 profielen. Ik heb een formulier waarin ik bovenaan het profiel zie. De gebruikers die dit profiel hebben worden onderaan in een subform weergegeven.
Ik wil in een vakje kunnen intypen: (bvb) "ma" en dan zou er onder het intypvakje een lijst met mogelijke profielen moeten komen te staan; bvb magazijnier, manager, assistent manager, nacht magazijnier, ...

Dus niet alleen de profielen die met "ma" beginnen, maar alle profielen waarin "ma" voorkomt.

Wie kan mij helpen? Ik heb me reeds sufgezocht maar tot hiertoe vind ik niets.

Alvast bedankt !
 
Allereerst welkom op HelpMij :).
Nu had ik echter van iemand gehoord dat het ook mogelijk is om in een bepaald vakje bepaalde gegevens in te vullen, en dat er onder dat vakje dan bepaalde "mogelijkheden" tevoorschijn komen waaruit je er één kan selecteren die dan automatisch in het recordveld wordt ingevuld.
Dit is nieuw voor mij, en dat zeg ik niet snel :). Ik vermoed dat die persoon zelf iets gemaakt heeft, want dat is niet zo heel lastig. Om te beginnen heb je een keuzelijst (want uit je beschrijving te zien heb je het daar over) nodig die alle profielen bevat. En daarboven zet je dan een tekstvak waarin je het filter gaat typen. Die keuzelijst moet je filteren op basis van wat je in het tekstvak typt. Hier een voorbeeldcode waar je wellicht wat mee kunt. Uiteraard wel de bron sql en de namen van de objecten aanpassen.

Code:
Private Sub txtZoeken_Change()
Dim sFilter As String
Dim strSQL As String

    strSQL = "SELECT [actietype_id], [actietype_naam] FROM [type_actie] "
    If Not Me.txtZoeken & "" = "" Then
        sFilter = " WHERE [actietype_naam] Like ""*" & Me.txtZoeken.Text & "*"""
        strSQL = strSQL & sFilter & " ORDER BY [actietype_naam]"
    Else
        strSQL = "SELECT [actietype_id], [actietype_naam] FROM [type_actie] ORDER BY [actietype_naam];"
    End If
    Me.lstProfielen.RowSource = strSQL
    Dim tmp
    tmp = InputBox("", "", strSQL)
    Me.lstProfielen.Requery
End Sub
 
Hi OctaFish! Bedankt voor je snelle antwoord.

Bedoel je met deze keuzelijst een combo box?
Hoe moet ik dan precies de macro eraan koppelen?

PS zoals je merkt ben ik concerning Access en VBA nog maar een groentje, sorry :)
 
Een combobox (je gebruikt zeker de Engelse versie?) heet in het Nederlands 'keuzelijst met invoervak'. En een 'keuzelijst' is dan weer een Listbox. En over de laatste variant had ik het :).
 
Dag OctaFish,

Ik heb het uiteindelijk gedaan door een qry te maken met als criterium bij de profielenkolom Like "*" & (wat er ingevuld is in het vakje in de form) & "*". Op deze qry is de keuzelijst dan gebaseerd. Er moest wel nog aan het keuzevakje een macro "Refresh" worden toegevoegd; de ge-update lijst verschijnt dus niet tijdens het typen maar alleen nadat er op Enter wordt gedrukt.

Ik kon aan je code toch niet zo goed uit maar dat ligt aan mij :)

Toch bedankt!!
 
Min variant doet het 'live' en gruwt (net als ik) van macro's. Heb je echt niet nodig als je de juist procedure volgt.
Als je een prima oplossing krijgt aangereikt die je niet aan de praat krijgt, stuur dan een voorbeeldje mee. Onhandige workarounds verzinnen kan nooit de bedoeling zijn...
 
Dag OctaFish

Het probleem is dat ik niet weet waar ik deze vba moet ingeven. Ik maak een keuzelijst. En dan? Moet ik dan ergens die vba ingeven via een event procedure? Aan welk object moet ik die vba code dan koppelen?
Ik heb een alternatieve oplossing bedacht omdat ik geen antwoord kreeg op de vraag hoe ik de twee dan koppelen en ik wou je niet spammen. Verder was ik trouwens wel fier dat ik mijn variant gevonden heb na maar 4 dagen met access te werken.
 
In mijn eerste bericht geef ik het eigenlijk al aan. Ik heb een tekstvak (txtZoeken) waar de code aan hangt uit het bericht. Dat tekstvak filtert de keuzelijst lstProfielen. Met die keuzelijst gebeurt verder niks. Alles zit dus op het tekstvak.
 
Dag OctaFish, Oké dus ik moet de code dan op het tekstvak invoeren met de "Code Builder" ?
Wat bedoel je met [actietype_id], [actietype_naam] en [type_actie] ?
 
Ik heb jouw database niet, dus ik moest wel een eigen voorbeeldje gebruiken. Daar staan dan uiteraard mijn eigen veldnamen in die ik in mijn keuzelijst gebruik. Die code moet je dus ombouwen naar jouw keuzelijst en tekstvak. Met <Alt>+<F11> kom je in het VBA venster; daar maak je dan de code voor het tekstvak. Je kunt ook op je tekstvak gaan staan, en in de eigenschap bij <Gebeurtenis> de knop met de 3 puntjes gebruiken achter <Bij wijzigen>. Dan kies je daar <Gebeurtenis (geloof ik; ik krijg de keuze nooit vanwege een instelling in Opties>. In ieder geval nooit Macro kiezen :).
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan