Zoekfunctie Access 2010

Status
Niet open voor verdere reacties.

Crizke

Gebruiker
Lid geworden
11 feb 2013
Berichten
51
Hallo

Ik zou op mijn formulier een zoekfunctie moeten plaatsen. Iets zoals een keuzelijst met invoervak...
Maar ik zou bij het typen van letter alles moeten zien waar die letter invoorkomt, en niet enkel als dit de beginletter is... Dus hoe meer letters ik krijg, hoe specifieker het wordt en hoe minder records ik kan vinden...

Bedankt
 
Dat gaat niet met een keuzelijst met invoervak; die zoekt altijd vanaf de eerste letter. Wil je meer fuzzy zoeken in een keuzelijst, dan zul je een extra tekstvak moeten maken dat de keuzelijst dynamisch aanpast. Je moet dan dus met dat tekstvak eerst de Recordbron van de keuzelijst filteren, voordat je in de keuzelijst gaat zoeken.
 
Dat gaat niet met een keuzelijst met invoervak; die zoekt altijd vanaf de eerste letter. Wil je meer fuzzy zoeken in een keuzelijst, dan zul je een extra tekstvak moeten maken dat de keuzelijst dynamisch aanpast. Je moet dan dus met dat tekstvak eerst de Recordbron van de keuzelijst filteren, voordat je in de keuzelijst gaat zoeken.

En hoe begin ik hier dan aan? Ik koppel mijn tekstvak aan de lijst waar ik uit wil zoeken, en dan? Gegevens aanpassen bij de eigenschappen dat ik ertussen kan zoeken enz???
 
Er is iets met nieuwe gebruikers en de Quote knop... Nog vandaag heb ik ook al een andere nieuwe gebruiker op de vingers getikt :)
Je hoeft een berichtje waar je op reageert niet te quooten; dat is een knop die voor nieuwe forumgebruikers op de één of andere manier een onweerstaanbare aantrekkingskracht heeft, maar het maakt het draadje alleen maar onleesbaarder. Niet meer doen dus! Lees ook de huisregels er op na.
Het is niet overdreven eenvoudig, omdat je de Bron van de keuzelijst moet aanpassen. Je zult dus moeten gaan programmeren, en ik weet niet in hoeverre je dat zelf kunt?
 
Om je een beetje op weg te helpen: hier een draadje waarin dezelfde vraag voorbij kwam. (En ja, die had je zelf ook kunnen vinden ;) )
 
Mijn excuses voor het gebruik van de "quote-knop" :-)

Mijn kennis van programmeertaal is redelijk basisgericht... Dus dit levert op zich enkele problemen mee ... :-)
Ik vorm mijn tekstvak en keuzelijst. Mijn keuzelijst koppel ik aan de tabel ( in mijn geval TNaamlijst) waaruit ik de gegevens wil halen. Het tekstvak TekstFilter koppel ik dan op zijn beurt via programmeertaal aan de keuzelijst.

Code:
Private Sub TekstFilter()
    StrSql = " SELECT TNaamlijst.Naam FROM TNaamlijst " & "WHERE TNaamlijst.Naam LIKE '*" & Me.TekstFilter.Text & "*'" & "ORDER BY TNaamlijst.Naam"
    Me.Keuzelijst239.RowSource = StrSql
    Me.Keuzelijst239.Requery
End Sub
Dit geeft nogsteeds een foutmelding, en bij het opzoeken in het tekstvak gebeurt er niets in de keuzelijst, en bij het klikken op de keuzelijst is deze leeg...
 
Laatst bewerkt:
Je keuzelijst zou ik niet koppelen aan een tabel of query, omdat je de keuzelijst dynamisch opbouwt middels vba. De Sub overigens gaat zo niet werken, omdat die niet aan een gebeurtenis is gekoppeld. Ik zou hem koppelen aan de gebeurtenis <Bij wijzigen>, omdat je dan 'live' filtert. Dus iets als:

Code:
Private Sub Form_Open(Cancel As Integer)
    strSQL = "SELECT DISTINCT PlaatsID, Plaats FROM Plaats ORDER BY Plaats "
    Me.cboPlaats.RowSource = strSQL
End Sub
Om de keuzelijst Plaats te vullen bij openen van het formulier. En
Code:
Private Sub txtFilter_Change()
    strSQL = "SELECT DISTINCT PlaatsID, Plaats FROM Plaats "
    strSQL = strSQL & "WHERE Plaats LIKE '*" & Me.txtFilter.Text & "*' "
    strSQL = strSQL & "ORDER BY Plaats "
    Me.cboPlaats.RowSource = strSQL
    Me.cboPlaats.Requery
End Sub
Om de keuzelijst te filteren.
 
Code:
Private Sub Form_Open(Cancel As Integer)

    StrSql = "SELECT DISTINCT TNaamlijst.Naam, TNaamlijst FROM TNaamlijst ORDER BY TNaamlijst"
    Me.cboTNaamLijst.RowSource = StrSql
        
End Sub

EN

Code:
Private Sub Tekst251_Change()
    StrSql = "SELECT DISTINCT TNaamlijst.Naam, TNaamlijst FROM TNaamlijst"
    StrSql = StrSql & "WHERE TNaamlijst LIKE '*" & Me.TekstFilter.Text & "*'"
    StrSql = StrSql & "ORDER BY TNaamlijst"
    Me.cboTNaamlijst.RowSource = StrSql
    Me.cboTNaamlijst.Requery
End Sub

Zo heb ik ze nu dus ingegeven, en dan krijg ik de melding dat hij (bij Sub Form_Open) Me.cboTNaamlijst.RowSource niet kent...
Moet ik dit nog ergens bijzetten of geef ik iets fout in?
 
Laatst bewerkt:
Als de naam van je keuzelijst klopt, zit er misschien iets anders fout in de db. Dat kan ik zonder de db te zien niet zeggen.
Zou je trouwens de code kunnen
opmaken met de CODE knop? Maakt hem een stuk leesbaarder.
 
Laatst bewerkt:
Dit zijn de dingen die ik zo uit de db gehaald heb... Als ik "cbo" weglaat,, krijg ik geen foutmelding, maar gebeurt er natuurlijk niets.

Bij men tekstvak en keuzelijst staat dan [Gegevensprocedure] bij <Bij wijzigen> ... Dat van keuzelijst verschijnt automatisch, en bij tekstvakt moet ik het er zetten... Maar welk is dan de procedure die de keuzelijst volgt?

Oke, volgende keer zal ik de code gebruiken... Sorry hiervoor.
 
Laatst bewerkt:
Oke, ik heb de dingen aangepast, en daar krijg ik geen melding meer over. De foutmelding die ik nu krijg is dat hij mijn keuzelijst niet kent...

Moet ik voor mijn tekstvak zijn eigenschappen niet aanpassen en deze koppelen aan de keuzelijst of aan de tabel waar ik de namen uit wil halen???
 
Laatst bewerkt:
De keuzelijst moet natuurlijk wel bestaan met die naam. Ik zou zeggen: pas de naam aan, of je code.
 
Ik heb nu dus mijn keuzelijst "Plaats" genoemd en tekstvak "txtFilter" ...
Programmacode die je voorstelde letterlijk overgenomen.
En dan komt die foutmelding weer van cboPlaats...

:d
 
Bij mij heet een keuzelijst altijd cbo met een naam. Dus de keuzelijst heet letterlijk cboPlaats. En bij jou dus niet...
 
Ha, ik heb het opgelost gekregen... Het lag dus idd aan mijn gegevenseigenschappen en enkele verbindingen...

Alles werkt, nu nog enkel verfijnen !!! ;-)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan