Keuzelijst

Status
Niet open voor verdere reacties.

Sytse1

Gebruiker
Lid geworden
9 aug 2007
Berichten
584
Office versie
miDer
In mijn formulier heb ik o.m. een keuzelijst waarin ik de onderliggende query wil gaan filteren.
Deze keuzelijst moet, als deze de focus krijgt, de gefilterde lijst laten zien.
Het veld lid is een Ja/Nee veld.
Eerst heb ik getracht dit in de query zelf op te lossen.
Met Iif enz en het uitlezen van een een tekstveld in het formulier waarin de tekst wijzigt in: Leden of Niet Leden of Leden en niet Leden
Dit gebeurd door de gebruiker als hij/zij kiest om in het formulier alleen Leden of Niet Leden of beide wil zien.
De keuzelijst moet dan overeenkomstig het overzicht op het formulier zijn.

Als eerste heb ik met vba de volgende code gemaakt.
Code:
    Dim dbs As DAO.Database
    Dim rst As DAO.Recordset
    Dim strSQL As String
    Set dbs = CurrentDb()
    strSQL = " SELECT * From Qry_ZoekenVoornaam " _
    & "WHERE (((Qry_ZoekenVoornaam.Lid) = Ja));" _
    & "ORDER BY Qry_ZoekenVoornaam.[Voornaam]"
    Set rst = dbs.OpenRecordset(strSQL)
 
   'Alleen voor DAO code:
    rst.Close
    dbs.Close
De code geeft bij de uitvoering de volgende foutmelding.
Fout 3142
Er zijn tekens aangetroffen aan het einde van de SQL instructie
De volgende regel geeft dan de fout aan. Set rst = dbs.OpenRecordset(strSQL)
Geen idee wat deze foutmelding betekend.
 
Je hebt na de ; op het einde van de "WHERE .... ;" nog een "order by ..." geplaatst.
De punt-komma sluit de instructie af en moet als laatste staan.
 
De punt-komma sluit de instructie af en moet als laatste staan.
Dat "moet"-ie niet; sterker nog: als je hem weglaat werkt de query net zo goed. Ik zet 'm er in ieder geval nooit bij, of haal hem altijd gelijk weg.

Code:
strSQL = " SELECT * From Qry_ZoekenVoornaam WHERE Lid = Ja ORDER BY Voornaam"
is dus meer dan genoeg. Maak queries niet zo ingewikkeld...
 
NoellaG en Acceesguru beiden bedankt voor jullie reactie.
Ongetwijfeld zullen beide voorbeelden bij jullie werken.
Alleen bij beide krijg ik een foutmelding bij regel:
Set rst = dbs.OpenRecordset(strSQL)
Fout 3061 Er zijn te weinig parameters. Het verwachte aantal is 1

En zonder rst enz wordt er geen record getoond :d
Ik ga het met een query en Iif proberen op te lossen.
 
Laatst bewerkt:
Tenzij je een tekstveld gebruikt voor Ja/Nee, moet je een Boolean opgeven. Dus -1/0, Yes/No of True/False. En dit is meer dan genoeg:
Code:
Dim rst As DAO.Recordset, strSQL As String    strSQL = " SELECT * From Qry_ZoekenVoornaam WHERE Lid = True ORDER BY Voornaam"
    Set rst = CurrentDb.OpenRecordset(strSQL)
    MsgBox rst.RecordCount
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan