Keuzelijst doorlopendformulier

Status
Niet open voor verdere reacties.

Nico84

Gebruiker
Lid geworden
21 jul 2011
Berichten
191
Heb een doorlopend formulier met een aantal keuzelijsten.
Als een keuze gemaak wordt, wordt het doorlopendformulier gefilterd.

Wil ik weer alle records zien dan moet ik de tekst weghalen met de backspace of een knop maken.
Maar is het ook mogelijk om een tekst "alles" in de keuzelijst toe te voegen, zodat de selectie van die keuzelijst opgeheven wordt.

Dus bijvoorbeeld een keuzelijst met:
[Alles]
Ja
Nee
 
Dat wiel bestaat al een tijdje, dus dat hoef je inderdaad niet zelf uit te vinden :)
 
Bedankt OctaFish. Het is gelukt en het werkt.
De code aangepast voor als (alles) geselecteerd is.


Code:
If Me.txtZoekType = "(Alles)" Then
ElseIf Me.txtZoekType <> "" Then
        sFilterType = "[TypeRecord] Like '" & Me.txtZoekType & "'"
    If Len(sFilter) > 0 Then sFilter = sFilter & " AND "
    sFilter = sFilter & sFilterType
End If

Wil je nog een blik werpen op mijn vraag:
Afwijkende prijzen
 
Doe ik vanavond; ik heb hier alleen een versie van jouw bestand zonder de functie die ik thuis aan het maken ben. En om alles nou twee keer te doen...
Hoe heb je de keuzelijst nu gevuld? Want dat is relevanter voor de vraag dan wat de keuzelijst moet doen :)

Overigens hoef je geen LIKE te gebruiken, want je keuzelijst pakt automatisch al een gehele waarde:
Code:
sFilterType = "[TypeRecord] = '" & Me.txtZoekType & "'"
Bovendien geef je geen wildcard mee, dus hij zoekt toch al de hele waarde.
 
Alles 2 keer doen is zonde van je tijd.


Like en de wildcard is een gevalletje kopieeren plakken.
En dan heb ik toch tekort kennis dat ik dat in 1 oog opslag zie.


De query achter de keuzelijst:
Code:
SELECT tbl_Debiteuren.TypeRecord FROM tbl_Debiteuren GROUP BY tbl_Debiteuren.TypeRecord UNION SELECT '(Alles)' FROM tbl_Debiteuren ORDER BY tbl_Debiteuren.TypeRecord;

En bij standaardwaarde van de keuzelijst "(Alles)" ingevuld
 
Toch nog iets wat niet wil werken.
Ik wil op een Ja/nee veld filteren, maar onderstaande code werkt niet.

Code:
If Me.txtZoekActief <> "" And Not Me.txtZoekActief = "(All)" Then
    sFilterActief = "[Actief] ='" & Me.txtZoekActief & "'"
    If Len(sFilter) > 0 Then sFilter = sFilter & " AND "
        sFilter = sFilter & sFilterActief
end if

Wat doe ik fout?
 
En wat is je Ja/Nee veld? Een Boolean veld, of een tekstveld met Ja of Nee er in?
 
Boolean veld.
En als notatie op het doorlopend formulier ja/nee
 
Hoi Octafish. Nog meer problemen met mijn filter.

En ik kom er niet echt meer uit. Hij plakt overal "and" achter.
Dat zit hem in Len(me.txt....text) >0 maar bij het ene veld gaat het goed en bij de ander weer niet.

Filter ik op veld Organisatie pakt hij het veld debiteurnr niet mee als er wat staat.

Wil jij er a.u.b. een blik op werpen?
 
Laatst bewerkt:
Om enigszins onduidelijke redenen, check je bij een aantal filteropties op .Text. Dat zorgt ervoor dat je check niet meer klopt, en het filter dus wordt uitgebreid met het woord AND. Haal overal .Text weg, en je filter doet het weer.
 
Had jouw voorbeeld Filteren V_1 op mijn computer staan. Daar zag ik dat je bij de opbouw van het filter .text achter plaatst.

In mijn voorbeeld moet ik voor het veld debiteurnr wel .text gebruiken, anders filtert hij 1 teken achteraf.
Dus als ik 1 in typ gebeurt er niks typ ik 13 dan filtert hij op 1 enz. enz.


Nu blijft voor mij nog wel het probleem bij het veld actief.

-Zonder de Union (veld "all" toevoegen) filterde hij niet. In de keuzelijst stond netjes "All", Ja, nee. Maar klikte ik op "Ja" dan stond
in de msgBox van het filter [Actief]= True

-Met de Union in de query van mijn keuzelijst filtert hij wel. In de keuzelijst staat dan "All", 0, -1.
0 en -1 werken dan wel maar klik ik op "All" dan wordt deze invoer niet geaccepteerd. Komt waarschijnlijk omdat "All" tekst is en 0 en -1 numeriek.

Hoe krijg ik het voor elkaar dat hij bij selecteren van "All" alles laat zien.
hoe krijg ik netjes all, ja, nee in mijn keuzelijst i.p.v. All, 0, -1


Wil jij hier nog naar kijken OctaFish? nieuwe voorbeeld heb ik bijgevoegd.
 

Bijlagen

Op .Text filteren lukt prima bij een tekstvak. Bij een keuzelijst heeft dat geen zin, omdat je altijd een volledige waarde selecteert. Het verschil is dat je bij een Tekstvak met de optie .Text de letterlijke input uit het tekstvak uitleest. Dat werkt echter alleen als het tekstvak de focus heeft, oftewel: je bent op dat moment in een tekstvak iets aan het typen. Dat werkt dus alleen maar fatsoenlijk op een tekstvak waarin je daadwerkelijk aan het typen bent.
Als je een filter aan het maken bent, kun je maar in één tekstvak tegelijk werken, de andere zijn per definitie niet actief. Op dat actieve tekstvak kun je dus met .Text de getypte tekst afvangen. Andere tekstvakken en keuzelijsten zijn op dat moment niet actief, maar kunnen wel een eigen filterwaarde hebben. Die waarden vang je af met .Value. Logischerwijze kan die invoer niet veranderen, omdat je al een tekstvak actief hebt.
En dat is dus de achtergrond achter het verschil tussen .Text en .Value. Vanwege het intrinsieke karakter van de twee, kun je .Text alleen gebruiken als het object de focus heeft. Je kunt dus meerdere objecten met .Text uitlezen, als je ze eerst met .Focus activeert. Nogmaaals: veel zin heeft dat niet, omdat je maar één echt actief object hebt.
 
Bedankt voor de uitleg octafish.

Voor het zoeken van een plaats staat deze code in het filter.
Deze werkt ook zonder .value erachter te plakken en filtert ook als ik aan het typen in het teksvak txtZoekPlaats.


Code:
If Len(Me.txtZoekPlaats) > 0 Then
        If sFilter <> "" Then
            sFilter = sFilter & " AND " & "[Plaats] Like '" & Me.txtZoekPlaats & "*'"
        Else
            sFilter = "[Plaats] Like '" & Me.txtZoekPlaats & "*'"
        End If
End If

Als ik .value zal gebruiken voor het zoeken op debiteur nr gebeurt er niks. Hiervoor moet ik .text gebruiken.
Heeft dit dan toch te maken dat debiteur nr nummeriek is?



Maar ik weet nog niet hoe ik dat van het veld actief (ja/nee) moet oplossen.
Wil je hier nog naar kijken als je tijd heb.
 
Laatst bewerkt:
Voor het Ja/nee veld heb ik het op deze manier opgelost.

Code:
If sFilter <> "" Then
        If Me.txtZoekActief = "Ja" Then
            sFilter = sFilter & " AND " & "[Actief] =" & -1
        ElseIf Me.txtZoekActief = "Nee" Then
            sFilter = sFilter & " AND " & "[Actief] =" & 0
        End If
Else
        If Me.txtZoekActief = "Ja" Then
            sFilter = "[Actief] =" & -1
        ElseIf Me.txtZoekActief = "Nee" Then
            sFilter = "[Actief] =" & 0
        End If
End If
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan