Filter

Status
Niet open voor verdere reacties.

slev

Gebruiker
Lid geworden
18 jan 2023
Berichten
23
Ik heb een database met daarin o.a. velden Datum en Weeknummer. Ik wil nu een query maken waarmee gefilterd wordt op een bepaalde weeknummer (bv week 23) en het weeknummer van de laatst ingevoerde record. Week 23 is een vaste waarde en kan onder Criteria ingevuld worden. De weeknummer van de laatst ingevoerde record is dus variabel. Ik heb iets geprobeerd met de functies Last en DatePart maar kom er niet uit. Wie helpt?
 
Het is onnodig om een weeknummer en een datum op te slaan (aannemende dat het weeknummer slaat op de datum). Als je een datum hebt kan je het weeknummer afleiden.

Om het laatst ingevoerde record te kunnen vinden, moet dat ergens aan te herkennen zijn. Bijvoorbeeld een hoogste nummer.

Tot slot is zoeke op weeknummer zonder jaar link. Elk jaar heeft een week 23.
 
Filteren op week nummers is per definitie een slecht idee, omdat elk jaar dezelfde weeknummers genereert. Je krijgt dus, behalve als je nog in het eerste gebruiksjaar van je db zit, altijd records uit meerdere jaren. Wél dan met de gevraagde weeknummers, dat dan weer wel.

Uiteraard sluit ik me bij xps351 aan: sla nooit redundante gegevens op, zoals én een datum, én een weeknummer, als dat weeknummer afgeleid is van het datumveld. als je wilt filteren op basis van een bepaald jaar en weeknummer, (wat vast het geval is) gebruik dan bijvoorbeeld de Format([Datumveld];”yyww”) opdracht om de twee criteria te vinden waartussen (Between als functie) je bereik moet liggen.

Sowieso hoef je, als je vanaf een bepaald punt wilt filteren t/m de laatste, maar één criterium op te geven.
 
Vraag niet duidelijk gesteld. Sorry!
Ik zoek alle records met weeknummer 23 en alle records met weeknummer van het laatst ingevoerde record
 
Dat las ik inderdaad letterlijk in je vraag, maar het is zó’n onlogische vraagstelling, dat ik (en Peter denk ik ook) hem automatisch ‘vertaalde’ naar iets dat database technisch wél logisch zou zijn :).

Als ik je vraag dus letterlijk opgaat, dan wil je in je selectie dus alle records van alle jaren zien die hetzelfde weeknummer hebben? Plus de records van de huidige week? Ik ben niet snel verbaasd, maar nu even wel :d.
 
Ik kan vervolgens b.v.het verschil van 2 velden tussen week 23 en de huidige week vergelijken met dezelfde periode van eerdere jaren.
 
Vraag niet duidelijk gesteld.

De vraag was min of meer duidelijk. Je herhaalt hem nu zo'n beetje letterlijk. Dat helpt dus niet echt. De wedervragen blijven dus staan:
  1. Hoe kan je aan de vastgelegde gegevens zien wat het laatst ingevoerde record is? We hebben te maken met een database, dus alles draait om data (gegevens).
  2. Wil je de gegevens selecteren ongeacht het jaar?
  3. Waarom sla je een datum en een weeknummer op?

We willen graag helpen, maar een beetje medewerking is wel zo prettig.
 
Laatst bewerkt:
De database is opgenomen in een VBA programma. In de database kan ik met behulp van een query de verschillen van velden per week volgen en in de VBA programma omvormen tot inzichtelijke data.
Ik heb nu de filter die ik nodig heb in de VBA programma ingebouwd maar om daar vervolgens de juiste vergelijkingsdata te genereren is behoorlijk wat omslachtiger dan in een acces-query met een aantal sql-regels. De invoer van de data is gerelateerd aan datum en vindt plaats met het VBA programma en hierbij wordt de weeknummer gegenereerd. Voor een beter visueel overzicht wordt weeknummer dan in de database mee opgenomen
 
Laatst bewerkt:
Ik geef het op.
 
Laatst bewerkt:
Ik doe nog een poging om de zaak weer los te trekken.

Als ik nu een record toevoeg aan de db dan krijgt deze de datum van 19-1-2023 mee en uiteraard de daarbij behorende weeknummer (3 dus)
Ik wil de query de db als voorbeeld laten filteren op week 23 en week 3, Dus ik ben geinteresseerd in alle waarden die nu en in het verleden die in de db staan van de genoemde weken.
Als bv in de db de productie van zonnepanelen staat, dan wil ik niet alleen weten wat er deze week is geproduceerd, maar ook hoe dat was in dezelfde week van voorgaande jaren en ik zou het dat ook bv willen weten over een bepaalde periode nu en in voorgaande jaren.
 
Laatst bewerkt:
Het is hopelijk duidelijk dat in de db-tabel niet de productie cijfers staan maar de meterstanden
 
We gaan de goede kant op. Je wilt dus inderdaad selecteren op weeknummer ongeacht jaar.

Laten we voor het gemak "het laatst ingevoerde record" interpreteren als het record met de hoogste datum. Dat geeft dan meteen een aanknopingspunt om de week van die datum te bepalen. Dat wordt dan iets als:
Code:
DatePart("ww", DMax("StandDatum" , "tblStand"))
Die expressie kan je als criterium in de query gebruiken. Omdat ik nu op een tablet werk heb ik het niet kunnen testen. De veld- en tabelnaam heb ik uiteraard verzonnen.

Ik blijf volharden in mijn mening dat het weeknummer in de tabel overbodig en onwenselijk (want potentieel inconsistent) is. Om het weeknummer zichtbaar te maken, hoef je het niet op te slaan.
 
Laten we voor het gemak en de duidelijkheid dan even een paar zaken vaststellen: 1) je gebruikt een datum om de meterstanden vast te leggen en 2) meterstanden zijn altijd oplopend.Tenzij het om tanks gaat, waarbij de inhoud wordt afgenomen en aangevuld. Maar dan zou je deze query niet nodig hebben, want dan heb je nutteloze gegevens. Ik vermoed dat óók xps351 meters heeft waarvan de getallen alleen maar oplopen, en waar hij dus óók heel simpel de laatste records van weet. Maar ik hoor graag van slev wat er in die tabel staat :). Overigens heb ik een prachtige voorbeeld database met meterstanden, dus wellicht dat daar belangstelling voor is als basis? Al heb ik veel liever een voorbeeld bestand van TS, aangezien we nog steeds, en we zijn toch al een paar dagen aan het rondzwemmen in een zwembad met maskers op, graag willen zien wat er dan zo moeilijk is aan de situatie :). En meterstanden lijken mij nou niet zó privacy gevoelig dat je die niet kunt delen, of vervangen door dummy data.
 
Ik vermoed dat óók xps351 meters heeft waarvan de getallen alleen maar oplopen, en waar hij dus óók heel simpel de laatste records van weet.
Volgens mij maakt het in mijn opzetje niet uit of de getallen al dan niet oplopen. TS wil het weeknummer van het laatst ingevoerde record weten. Daartoe kijk ik naar de hoogste datum en niet naar het hoogste getal.

We weten verder inderdaad onvoldoende om een definitieve oplossing op te hoesten. Om jaren te kunnen vergelijken, lijken verbruikscijfers me zinvoller dan standen.
 
Laatst bewerkt:
Reactie op XPS351: Veronderstel dat ik op filter op datum. De huidige datum (ddmm) staat niet in de db van voorgaande jaren; de query retourneert dan alleen de datum van dit jaar en dat is niet wat ik wil. De oplossing die aangedragen wordt, had ik al geprobeerd, maar waarschijnlijk zit daar een syntax fout in. Ga ik in de loop van de middag even checken.
Reactie op OctaFish: ik zie niet in waarom we sinds gisteravond rondzwemmen in een zwembad met masker op. Ik ken de uitdrukking niet; is wel origineel.
 
Omdat ik vannacht aan deze casus lag te denken heb ik een opzetje gemaakt. Het doet mogelijk wat je bedoelt.
Als je een nieuw record hebt opgeslagen moet je nog wel even Formulier 1 afsluiten en opnieuw openen.
Dit is vanzelfsprekend ook anders op te lossen, maar had er even de tijd niet meer voor.
Vanzelfsprekend zijn er nog wel een aantal verbetering te doen.
Ik hoop dat het met de ZIp-file gelukt is.
 

Bijlagen

  • Filter.zip
    161,9 KB · Weergaven: 16
Veronderstel dat ik op filter op datum.
De huidige datum (ddmm) staat niet in de db van voorgaande jaren.
Ik veronderstelde dat je zou filteren op het weeknummer van de datum (DatePart()) en dat de datum een volledige datum is (met jaar).

Je gaat ons nu toch hopelijk niet vertellen dat je een database per jaar hebt? Dat is niet alleen een slechte oplossing, maar ook een aspect dat je niet eerder genoemd hebt. Bewijst al met al maar weer de noodzaak van een duidelijke en volledige vraagstelling (iets met een zwembad :D) en de wenselijkheid van het meesturen van een voorbeeld database.
 
Laatst bewerkt:
Was mij ook al opgevallen :). Lijkt mij ook een superslecht idee, dat volledig voorbij gaat aan het nut van een database. Namelijk dat je alle informatie op één plek opslaat, en vervolgens dan de informatie eruit haalt die je dan nodig hebt. Wat ik nu heb begrepen (ik heb even mijn blinddoek afgedaan ;)) is dat TS dus een selectie wil opgeven (een weeknummer) en dat dan alle overzichten van die week te zien zijn, inclusief de data van de laatst ingevoerde week. Omdat dat makkelijk te maken was in mijn meterstanden database, heb ik die met deze insteek uitgebreid. Was nog tijdrovend, omdat ik alleen data had voor maandcijfers (logisch bij meterstanden als gas en water), maar dank zij een beetje goochelen in Excel wat data kunnen produceren waar wat mee te stoeien is.

In bijgaande database start er dus een formulier op dat eerst een weeknummer vraagt. Vervolgens krijg je totalen te zien voor een aantal entiteiten (gas, water, electra) uitgesplitst op jaar en dat weeknummer, plus de gegevens van de laatst ingevoerde week. Ik heb vast voorwerk gedaan voor 2013, dus je kunt daar wel even mee vooruit hoop ik. Nu maar hopen dat dit ongeveer is wat TS in gedachte had.... Ben na 17 berichten wel toe aan een afronding en rust :).
 

Bijlagen

  • Meterstanden.zip
    61,9 KB · Weergaven: 11
Ik heb een voorbeeld db bijgevoegd. De eerste query levert datgene wat ik wil. In de andere query is alleen als criteria week 2 ingegeven en moet voor de andere criteria nog de gevraagde code ingevuld worden.

Wat doen jullie steeds moeilijk. Jullie weten helemaal niet wat ik wil, maar geven wel constant commentaar
Ik vind dat vreemd!
 
Ik zie geen voorbeeld.

Als je zegt dat we niet weten wat je wilt, is dat waarschijnlijk toch aan jouw gebrekkige en onvolledige uitleg te wijten. Telkens komen er weer nieuwe konijnen uit de hoge hoed. Nu heb je het ineens weer over week 2 als vast criterium terwijl dat eerst 23 was.
Dat je ondanks al onze pogingen en twee voorbeeld databases durft te beweren dat we moeilijk doen is helemaal het toppunt.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan