Gebruik Query om selectie mogelijkheden aan te passen

Status
Niet open voor verdere reacties.
@RobertJB66

Als er een oplossing aangeboden wordt en je gaf aan dat je allemaal begreep, dan mag je niet verwachten
dat wanneer je zelf zoiets gaat proberen en het niet lukt, dat we weer een oplossing gaan maken op een oplossing.

Geef alleen aan dat formulier frmEECSelectie geen recordbron heeft, hoe wil je filteren op niets.
Vervolgens zie ik een Query waar criteria's instaan die er niet horen.

Een filter in een formulier maakt zelf die criteria's aan.

Zou zeggen bekijk mijn voorbeeldt nog eens goed.


Groetjes,
 
@Pletter,

Sorry dat ik jouw tijd aan het verdoen ben.:o:o
Nu ik de juiste recordbron heb toegevoegd werkt het wel.
Dank je wel voor het duwtje in de juiste richting.:thumb:

grt Robert
 
Helpmij leden,

Hoe kan ik deze twee SELECT DISTINCT combineren?


Set rs = CurrentDb.OpenRecordset("SELECT DISTINCT Jaar FROM JMDQ WHERE Maand = " & sMaand & "")
Set rs = CurrentDb.OpenRecordset("SELECT DISTINCT Jaar FROM JMDQ ORDER BY Jaar DESC;")

Als ik het onderstaande probeer dan krijg ik een foutmelding :confused:


'Set rs = CurrentDb.OpenRecordset("SELECT DISTINCT Jaar FROM JMDQ WHERE Maand = " & sMaand & "" "ORDER BY Jaar DESC;")

bij voorbaat dank.
 
De bovenste is sowieso vreemd. Ofwel Maand is tekst, ofwel Maand is een getal. Dan heb je twee varianten:

Code:
[COLOR=#333333]Set rs = CurrentDb.OpenRecordset("SELECT DISTINCT Jaar FROM JMDQ WHERE Maand = """ & sMaand [/COLOR][COLOR=#333333]& """ ORDER BY Jaar DESC"[/COLOR][COLOR=#333333])[/COLOR]

voor tekst, en deze:
Code:
[COLOR=#333333]Set rs = CurrentDb.OpenRecordset("SELECT DISTINCT Jaar FROM JMDQ WHERE Maand = " & sMaand [/COLOR][COLOR=#333333]& " ORDER BY Jaar DESC"[/COLOR][COLOR=#333333])[/COLOR]
voor getallen.
 
I.p.v. hapklare brokken serveren, heb ik liever dat je snapt wat er stom is aan de eerste variant, en waarom jouw variant niet werkte. Zodat je deze fout de volgende keer niet maakt :d.
 
Dank je wel voor de uitleg.

Is er ook een bron waar veel van dit soort zaken op te zoeken zijn. Met mijn Google acties kom ik niet tot de gewenste resultaten:o
 
De bovenste is sowieso vreemd. Ofwel Maand is tekst, ofwel Maand is een getal. Dan heb je twee varianten:

Code:
[COLOR=#333333]Set rs = CurrentDb.OpenRecordset("SELECT DISTINCT Jaar FROM JMDQ WHERE Maand = """ & sMaand [/COLOR][COLOR=#333333]& """ ORDER BY Jaar DESC"[/COLOR][COLOR=#333333])[/COLOR]

voor tekst, en deze:
Code:
[COLOR=#333333]Set rs = CurrentDb.OpenRecordset("SELECT DISTINCT Jaar FROM JMDQ WHERE Maand = " & sMaand [/COLOR][COLOR=#333333]& " ORDER BY Jaar DESC"[/COLOR][COLOR=#333333])[/COLOR]
voor getallen.


Als aanvulling op de oplossing, indien de Maand een string is waar moet er hier dan nog bijkomen? :D

Set rs = CurrentDb.OpenRecordset("SELECT DISTINCT Jaar FROM JMDQ WHERE Maand = """ & sMaand & "")
 
@RobertJB66

Er zijn twee filters in je formulier.

Om het filter van het formulier uit te zetten zodat je alle records ziet gebruik je:

Me.Filter = ""
Me.FilterOn = False

of

DoCmd.RunCommand acCmdRemoveFilterSort

Om alle records te laten zien van de Query UpEECQ zal je er een Case bij moeten maken die een Select maakt zonder een WHERE voorwaarde.

Groetjes,

@Pletter,

Ik heb nu een filter erbij die heet Locatie. Dit is een String (text) geen Integer (getal)

sFilter = "Locatie =" & sLocatie

Welke notie moet dit dan krijgen om het 'Me.Filter = sFilter' te laten werken:rolleyes:
in sFilter staat de text van de plaats b.v. Hoorn, echter met deze filterinformatie blijft het form leeg terwijl met de andere zaken als jaar, maand en dag er wel keurig gefilterd wordt.

bvd. Robert
 
Nu maar hopen dat pletter je nog wil helpen, vooral omdat je het antwoord al hebt: dat heb ik je namelijk al op de duidelijkst mogelijke manier gegeven in bericht #24. Omdat ik het niet beter kan uitleggen, doe ik ook geen poging meer :).
 
Probeer te begrijpen waaróm de dubbele quotes zo gebruikt worden, dan is hij makkelijk aan te passen de gevraagde variant zónder Order By. Je kunt natuurlijk gewoon die versie uit #24 pakken en de overbodige tekst weghalen. Gaat echt wel werken. Maar het is beter als je het snapt :d.
 
Een tip: als je dingen uitprobeert kan je de SQL string eerst opbouwen en deze dan via het commando debug.print strSQL in de immediate pane afdrukken. Dan kan je nakijken wat de expressie geworden is. Je kan deze daar ook kopiëren en vervolgens in een leeg query - SQL venster plakken en de query (proberen) uitvoeren. Zo kan je eenvoudig testen en debuggen.
 
@RobertJB66

Geef u nog een nieuwe versie met de Locaties erin.
U mag zelf gaan proberen er iets anders van te maken, maar dan geef ik u echt geen reactie meer.

Bij het openen ziet u een knop (Alle Locaties), de Locatie van de knop veranderd wanneer u het scrollwiel beweegt maar niet boven de detailsectie, dus zeg maar in het donkere gedeelte.

Gemaakt met een resolutie 3840 x 2160

Bekijk bijlage MetKnoppen3.zip


Groetjes,
 
Laatst bewerkt:
@AccessGuru,

Ik waardeer jullie input :thumb:

sFilter = "Locatie = """ & sLocatie """" :d:d



weer een stapje verder:P
 
Bijna goed, al vermoed ik dat je een typefout hebt gemaakt uit enthousiasme:

Code:
[COLOR=#333333]sFilter = "Locatie = """ & sLocatie [B]&[/B] """"[/COLOR]

En dan nog een stukje uitleg, zodat je het nooit meer vergeet:

Code:
[COLOR=#333333]sFilter = "Locatie = " & sLocatie [/COLOR]
Als sLocatie een getal is, dan kun je dat gelijk in het filter zetten, zoals hierboven. Is sLocatie echter tekst, dan moet die tekst tussen Aanhalingstekens staan. Daarvoor mag je enkele gebruiken (') of dubbele ("). Beide varianten hebben voor- en nadelen. De énkele quoot heeft als grote nadeel dat je daarmee de fout in gaat als er in je variabele óók een enkel aanhalingsteken zit, zoals in plaatsnamen als s' Hertogenbosch.
Code:
[COLOR=#333333]sFilter = "Locatie = '" & sLocatie & "'"[/COLOR]
In de bovenste variant is je filterstring dan letterlijk:
Code:
[COLOR=#333333]sFilter = "Locatie = 's'[/COLOR]Hertogenbosch[COLOR=#333333]"[/COLOR]
Dat levert een foutmelding op, want alleen de 's' zit in het filter, en daarna volgt een voor Access onbegrijpelijke code. Beter is dus om de dubbele quoot te gebruiken. Maar die heeft als nadeel dat de dubbele quoot een beschermd teken is, dat wordt gebruikt om strings te definiëren. Kijk maar in het andere voorbeeld, waarin je de stringelementen tussen dubbele quoots hebt gezet. Daarom moet je iets extra's doen in je filter: je moet Access duidelijk maken dat de dubbele quoot een filterteken is, en geenbegin/ einde string. En dat doe je door het teken te herhalen. Dus daarom typ je het teken twee keer, de eerste keer is de aankondiging dat het volgende teken letterlijk gebruikt moet worden.
Code:
[COLOR=#333333]sFilter = "Locatie = "[/COLOR][COLOR=#ff0000][B]"[/B][/COLOR][COLOR=#333333]" & sLocatie & ""[/COLOR][COLOR=#ff0000][B]"[/B][/COLOR][COLOR=#333333]"[/COLOR]

Hier ("Locatie = """) begin je met een dubbele quoot, omdat je een stringvariabele begint, en eindig je met drie dubbele quoots. De eerste is de aankondiging van de tweede, en de derde sluit de string op de normale manier af. Omdat een tekstfilter moet eindigen met een dubbele quoot, moet je het proces daar herhalen. Nu dus door vier dubbele quoots te typen. De eerste opent de string, de tweede is de aankondiging, de derde is het feitelijke teken, en de vierde sluit de string af. In vergelijking met de eerste helft dus eigenlijk hetzelfde, want ook dáár zie je in totaal vier dubbele quoots staan. Alleen staat daar not tekst tussen de eerste en de tweede quoot.

Hoop dat het zo duidelijker is :). Veel mensen gebruiken overigens steevast de enkele quoots omdat die makkelijker zijn. Ik heb mezelf aangeleerd om altijd de dubbele te gebruiken, omdat die nooit fout gaan, en de enkele dus in sommige gevallen wel. En waarom zou je dat risico nemen? Het is snel gewend (vind ik).
 
Het gaat best lekker, dank zij de hulp van jullie :thumb:

Ik probeer zoveel mogelijk overzicht te houden en zou het prettig vinden als ik de filter data in een variabele kan zetten en deze dan kan gebruiken.

Ik probeer het onderstaande te realiseren, :o echter ik blijf een fout melding krijgen in het set rs = Current.etc verklaring.

Set iFilter as String
iFilter = "Locatie = """ & sLocatie & """ And Jaar = (" & sJaar & ") And Maand = (" & sMaand & ")"

Set rs = CurrentDb.OpenRecordset("SELECT DISTINCT Dag FROM JMDQ WHERE "iFilter"")

met ""iFilter""") krijg ik geen fout melding, maar wordt er niet gefilterd. :(

Welke speciale notatie moet ik hiervoor gebruiken?
 
Waarom zet je haakjes rond het jaar en de maand?
als je een select statement wil opbouwen
Aannemend dat jaar en maand strings zijn:
Code:
dim strFilter as String

strFilter = "Locatie = """ & sLocatie & """ And Jaar = """ & sJaar & """ And Maand = """ & sMaand  & """"

Set rs = CurrentDb.OpenRecordset("SELECT DISTINCT Dag FROM JMDQ WHERE " & strFilter)

als sJaar en sMaand getallen zijn:

Code:
dim strFilter as String

strFilter = "Locatie = """ & sLocatie & """ And Jaar = " & sJaar & " And Maand = " & sMaand  

Set rs = CurrentDb.OpenRecordset("SELECT DISTINCT Dag FROM JMDQ WHERE " & strFilter)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan