Toon posts:

[Access] Filteren met een parameter in VBA

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ben bezig met een soort adresboek in Access, omdat er ondertussen zo'n 1600 records inzitten is het wel handig om te kunnen filteren...
Bijvoorkeur zou ik het doen door middel van het aanroepen van een functie in VBA.

Deze krijgt dan een string van een dropdownbox welke aangeeft op welk veld moet worden gefilterd (voornaam, achternaam, etc)

Nadat er is gekozen voor een veld, moet er een pop-up komen met de vraag op welke string er gefilterd moet worden.

Maar nu komt het probleem hoe kan ik filteren op het moment dat ik maar een halve naam invoer..

Op dit moment heb ik het opgelost door een ParameterQuery als recordsource in te stellen. Deze vraagt dan om welke naam dit gaat.
Dit is wel een aardige oplossing, maar heeft zeer slechte uitbreidingsmogelijkheden.

Alle hulp is welkom!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 19-08 12:58

NMe

Quia Ego Sic Dico.

Zowel VBA- als Access-vragen horen in Officesuites en -software. :)

PW>>OFF

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Boss
  • Registratie: September 1999
  • Laatst online: 22:38

Boss

+1 Overgewaardeerd

Ik heb daar een keer een leuke oplossing voor gemaakt: een popup formuliertje met bovenin een textbox en daaronder een listbox. Na iedere keypress in de textbox wordt de listbox gevuld met
SQL:
1
"SELECT id, bla FROM blatabel WHERE bla like '*"& txtFilterVeld & "*'"


En vervolgens bij de dubbelklik van de listbox het record naar het juiste ID verplaatsen. Met een ORDER BY kan je het nog zo maken dat bijvoorbeeld alleen eerst de items worden getoond die beginnen met de filterwaarde en daarna pas de items die de filterwaarde ergens bevatten.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


Verwijderd

Topicstarter
@Boss

Hartstikke bedankt voor je tip.. het lijkt me wel wat met die listbox ben een beetje aan het experimenteren geweest, maar hoe roep je de SQL-statement aan en vooral hoe krijg ik die uitvoer daarna in mijn listbox??

Alvast bedankt

  • Boss
  • Registratie: September 1999
  • Laatst online: 22:38

Boss

+1 Overgewaardeerd

Voor de box met het veld waarop je kan filteren 2 kolommen: 1 met de naam van het veld en eentje met de SQL om de 2e box te vullen, bijvoorbeeld:

De eerste: cboZoekVeld
code:
1
2
3
Achternaam | Select PersoonID, Achternaam from Personen ORDER BY Achternaam
Woonplaats | Select PersoonID, Woonplaats & " ("& Achternaam & ")" ORDER BY Woonplaats, Achternaam
etc.


Bij een na_bijwerken daarvan:
code:
1
2
cboZoekWaarde.RowSource = cboZoekVeld.Column(2)
cboZoekWaarde.Requery


Zo kan je het aantal zoekvelden heel makkelijk uitbreiden. Je zou zelfs de waarden automatisch kunnen laten vullen door met wat code allte controls van het veld af te gaan.

En achter de cboZoekWaarde de standaard code om naar een record te gaan aan de hand van een gekozen ID.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.