Helpmij.nl
Helpmij.nl
Helpmij.nl
Steun Helpmij.nl! Klik hier     Computerprobleem? Klik hier!

Quote

Weergeven resultaten 1 tot 14 van 14

Onderwerp: ACCES VBA: Eén Filter voor meerdere kolommen - kan dit?

  1. #1
    Member
    Verenigingslid

    Geregistreerd
    31 augustus 2017
    Locatie
    Antwerpen
    Afstand tot server
    ±185 km
    Vraag is opgelost

    ACCES VBA: Eén Filter voor meerdere kolommen - kan dit?

    In mijn doorlopend formulier (frm_sollicitant_zoek_functie) heb ik een keuzelijst met invoervak staan (cboZoekFunctie) waarachter in VBA een filter-functie staat.
    Op het doorlopende formulier worden de volgende gegevens weergegeven: ID - NAAM - VOORNAAM - GEBOORTEDATUM - TEL/GSM-NUMMER - EMAIL - FUNCTIE1 - FUNCTIE2 - FUNCTIE3 - SELECTIEVAKJE.

    De code voor het filteren van een bepaalde functie werkt perfect voor één kolom. Kan dit uitgebreid worden naar meerder kolommen. 3 Apparte keuzelijsten is niet de bedoeling:

    Ik verklaar:
    Persoon A kan bv uitvoerder (=functie1) of tekenaar (=functie2) of technieker(=functie3) zijn. Persoon B kan bv tekenaar (=functie1) - uitvoerder(=functie2) - tester(=functie3) zijn.
    Als ik "uitvoerder" selecteer via m'n keuzelijst zou ik in principe 2x een persoon (1x uit functie1) & (1x uit functie2) te zien moeten krijgen.


    Code:
    Private Sub cboZoekFunctie_AfterUpdate()
        Me.Filter = "[FUNCTIE1_SOLLICITANT] = """ & Me.cboZoekFunctie & """"
        'Me.Filter = "[FUNCTIE2_SOLLICITANT] = """ & Me.cboZoekFunctie & """"
        'Me.Filter = "[FUNCTIE3_SOLLICITANT] = """ & Me.cboZoekFunctie & """"
        Me.FilterOn = True
    End Sub
    Heeft er iemand hiervoor een oplossing of iemand die me op weg kan helpen?

  2. #2
    Ik ben al een aantal jaren uit Acces, maar wat ik deed om 1 userform met verschillende tabellen te benaderen was een query maken waar de 3 tabellen in zaten en van daar uit maakte ik een nieuwe tabel die door de query gevuld werd en die vulde weer het userform. Ik kan mij voorstellen dat zoiets ook voor een filter werkt.
    Het leven is geen krentebol.
    Life is like a box of chocolates, lastig als je op dieet bent.

  3. #3
    Member
    Verenigingslid

    Geregistreerd
    31 augustus 2017
    Locatie
    Antwerpen
    Afstand tot server
    ±185 km
    hellboy01: De functie (invoervak) komt uit één en dezelfde tabel. Momenteel zijn er 87 functies (records) in gedefinieerd en er komen functies op geregelde basis bij. Dit geeft momenteel bijna 650.000 verschillende combinaties verdeeld over drie kolommen (functie1 - functie2 - functie3). Zoveel queries ga ik echt niet maken. Stel je voor dat ik een bijkomende functiekolom (functie4) moet toevoegen dan ben ik al aan 53,4 miljoen combinaties.
    Laatst aangepast door fde : 12 oktober 2017 om 19:42

  4. #4
    Mega Honourable Senior Member
    Geregistreerd
    2 maart 2013
    Kort door de bocht nee dat kan niet. (Tenzij je middels VBA een nieuwe recordset opbouwt)

    Mij lijkt jouw opzet niet goed. Zoek maar eens op 'database normaliseren'

    Voor deze vraag heb je 3 tabellen nodig:
    TblNamen;
    TblFuncties;
    TblKoppelNamenFuncties.

    In de koppeltabel knoop je de naam en de functie aan elkaar. In deze tabel zet je bv NaamId, FunctieID, Vanaf, Tm. Als je dit op orde hebt is het opvragen van wat dan ook geen enkel probleem.

    Nb. Het gebruik van Capslock aan voor kolomnamen is niet echt van deze tijd en het gebruik van 'rare' tekens zou ik ook niet gebruiken in kolomnamen.
    Je kan een paard naar het water leiden, maar je kan het niet dwingen te drinken.

  5. #5
    Member
    Verenigingslid

    Geregistreerd
    31 augustus 2017
    Locatie
    Antwerpen
    Afstand tot server
    ±185 km
    Dit antwoorden is "uit te zoeken waard"
    Ik kom er later op terug VenA

  6. #6
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Afstand tot server
    ±151 km
    Het antwoord van VenA (Kort door de bocht nee dat kan niet) is niet correct, want het kan wel. Maar je zult een kleine aanpassing moeten doen aan de query die je voor het formulier gebruikt, je moet daar namelijk een veld aan toevoegen. Dat veld gebruik je om de drie functies (ik zie geen grote normalisatieprobleem; ik vermoed dat één persoon op 3 functies kan solliciteren en die wil je dan vastleggen. Ideaal is het niet, maar praktisch wel werkbaar) samen te voegen, dus je krijgt dan iets als: Zoekveld: [FUNCTIE1] & [FUNCTIE2] & [FUNCTIE3]. Vervolgens gebruik je de keuzelijst om op dat nieuwe veld ([Zoekveld] dus te filteren.
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  7. #7
    Member
    Verenigingslid

    Geregistreerd
    31 augustus 2017
    Locatie
    Antwerpen
    Afstand tot server
    ±185 km
    Beste OctaFish,

    Ik had eerst de VBA code aangepast in dezelfde stijl zoals je geschreven had:
    Me.Filter = "[FUNCTIE1_SOLLICITANT]&[FUNCTIE2_SOLLICITANT]&[FUNCTIE3_SOLLICITANT] = """ & Me.cboZoekFunctie & """"
    Hier kreeg ik geen enkel foutmelding op (in VBA - na uitproberen van het formulier) doch het werkt niet compleet. Dit probeersel geeft alleen "FUNCTIE1" weer.

    Dan heb ik jouw wijze uitgeprobeerd:

    Qry aanpassing - kolom bijgevoegd zoals hierbij beschreven: ZOEKEN: [FUNCTIE1_SOLLICITANT] & [FUNCTIE2_SOLLICITANT] & [FUNCTIE3_SOLLICITANT]
    VBA aanpassing: Me.Filter = "[ZOEKEN] = """ & Me.cboZoekFunctie & """" i.p.v. Me.Filter = "[FUNCTIE1_SOLLICITANT] = """ & Me.cboZoekFunctie & """"

    Deze oplossing geeft ook geen foutmelding maar evengoed geeft niet de juiste waarde. Ik had bij één persoon een "zelfde" functie bijgevoegd in de kolom "FUNCTIE3" waarvan er reeds 23 personen zijn benoemd in de kolom "FUNCTIE1" ; doch nr.24 werd/wordt niet getoond.

    Heb ik iets foutief geïnterpreteerd in jouw uitleg? Dat kan best want m'n VBA-kennis is echt abominabel.
    Laatst aangepast door fde : 16 oktober 2017 om 00:47

  8. #8
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Afstand tot server
    ±151 km
    Op het moment dat je een zoekveld maakt met waarden uit meerdere velden, is het resultaat in dat veld een string met alle waarden uit die velden. Je keuzelijst laat één functie zien, die nu dus op meerdere plekken in de zoekstring kan voorkomen. In de oude zoeksituatie was dat geen probleem omdat de zoekwaarde volledig terugkwam in het zoekveld, maar nu is dat dus niet meer het geval. Je kunt dus niet meer met "=" zoeken, maar je moet met wildcards zoeken. Dus met LIKE.
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  9. #9
    Member
    Verenigingslid

    Geregistreerd
    31 augustus 2017
    Locatie
    Antwerpen
    Afstand tot server
    ±185 km
    Ik heb LIKE uitgeprobeerd. Maar blijkbaar werkt het niet goed of heb ik iets niet goed gedaan.
    Als ik de qry aanpas via de recordbron van het formulier heb ik gemerkt als je met een samengevoegde string werkt dat je in de criteria een * voor en na de functie dient te plaatsen, wil je de complete reeks van personen van de desbetreffende functie weer te geven. Dus: LIKE "*functieomschrijving*"
    Ik heb geprobeerd om dit te doen in VBA te zetten, maar daar loopt het blijkbaar mis.

  10. #10
    Member
    Verenigingslid

    Geregistreerd
    31 augustus 2017
    Locatie
    Antwerpen
    Afstand tot server
    ±185 km
    Beste OctaFish,

    Na opzoek- en probeer werk heb ik een oplossing gevonden die werkt.

    Code:
    Private Sub cboZoekFunctie_AfterUpdate()
        Me.Filter = "[ZOEKEN] like '*" & Me.cboZoekFunctie & "*'"
        Me.FilterOn = True
    End Sub
    Met dank om me op weg te helpen met de "LIKE".
    Laatst aangepast door fde : 17 oktober 2017 om 00:23

  11. #11
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Afstand tot server
    ±151 km
    Je kunt het beter zo doen:
    Code:
         Me.Filter = "[ZOEKEN] like ""*" & Me.cboZoekFunctie & "*"""
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  12. #12
    Member
    Verenigingslid

    Geregistreerd
    31 augustus 2017
    Locatie
    Antwerpen
    Afstand tot server
    ±185 km
    Kan je me aub uitleggen wat het verschil is met al die quotes want dat begrijp ik echt niet; ' " ---- " ' " of " " " ---- " " " "

  13. #13
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Afstand tot server
    ±151 km
    In beginsel kun je een tekststring op twee manieren 'vastleggen'. Met enkele quootjes (zoals net gedaan) of met dubbele quoots. Dus "vastleggen". De tweede methode is robuuster en veiliger omdat je daarmee ook namen kunt benoemen als: 's Gravenhage. Zou je plaatsnamen filteren, dan loopt jouw code daarop vast, en gaat mijn code gewoon door. Dat komt doordat de string ''s Gravenhage' wordt gezien als feitenlijk twee strings: '' (een lege string) en Gravenhage' en dat is dan weer een foute string omdat er wel een eindquootje is, maar geen beginquoot. De string "'s Gravenhage" is dus wél correct. Ik gebruik dus nooit de eerste variant, maar altijd de tweede. Maar er zit een addertje onder het gras: " is een beschermd teken. Daarom moet je, als je het teken ook als stringdivider wilt gebruiken, het teken herhalen.
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  14. #14
    Member
    Verenigingslid

    Geregistreerd
    31 augustus 2017
    Locatie
    Antwerpen
    Afstand tot server
    ±185 km
    Met dank voor deze verhelderende uitleg. Nu begrijp ik ook waar en waarom het in het verleden mis ging met die quoots.

Berichtenregels

  • U mag geen nieuwe vragen starten.
  • U mag niet reageren op berichten.
  • U mag geen bijlagen versturen.
  • U mag uw berichten niet bewerken.
  •  
Helpmij.nl
Helpmij.nl

Helpmij.nl en business

Partners
Sponsoren
Aanbiedingen