geboorte data uitdraai / overzicht

Status
Niet open voor verdere reacties.

Friend

Verenigingslid
Lid geworden
31 jan 2009
Berichten
1.128
Beste Forummers,

In een eerdere vraag had Octafish een mooie oplossing voor mij ivm het produceren van verjaardagen die jaar overschrijdend zijn.

https://www.helpmij.nl/forum/showthread.php/943813-geeft-niet-meer-verjaardagen-in-het-nieuwe-jaar

Ik stuit nu echter toch op een probleem. Zodra ik een leeg veld gebdat in een record heb krijg ik een fout melding

Heb 2 maal een test bestandje in de bijlage. de eerste werkt. (Heeft geen record met een leeg gebdat veld)
De 2e heeft dit wel en geeft dan de fout code.

Hoe is dit op te lossen?

Friend
 

Bijlagen

  • foutmelding.JPG
    foutmelding.JPG
    16,1 KB · Weergaven: 55
  • testdatum1.rar
    16,3 KB · Weergaven: 28
  • testdatum2.rar
    20,6 KB · Weergaven: 27
Goedemorgen,

Hierbij de SQL die wel werkt als de geboortedatum niet ingevuld is:

Code:
SELECT gebdatum.GebDat, IIf(IsNull([GebDat]),"",DateSerial(Year(Date())+Abs(Month(Date())>Month([Gebdat])),Month([Gebdat]),Day([Gebdat]))) AS Tabel
FROM gebdatum
WHERE (((IIf(IsNull([GebDat]),"",DateSerial(Year(Date())+Abs(Month(Date())>Month([Gebdat])),Month([Gebdat]),Day([Gebdat]))))>=Date()-7 And (IIf(IsNull([GebDat]),"",DateSerial(Year(Date())+Abs(Month(Date())>Month([Gebdat])),Month([Gebdat]),Day([Gebdat]))))<=Date()+90))
ORDER BY IIf(IsNull([GebDat]),"",DateSerial(Year(Date())+Abs(Month(Date())>Month([Gebdat])),Month([Gebdat]),Day([Gebdat])));

Mvg
Jan
 
JHDW,

hartelijk dank voor je reactie en code aanpassing :thumb:

Dat werkt mooi. Allen de sortering liep nog niet helemaal goed voor mij.

Dus ik heb in de regel Order de
Code:
IIf(IsNull([GebDat]),"",
eruit gehaald.

Dan werkt de sortering op maand en dag wel.

Hartelijk dank voor de oplossing ::thumb:

Friend
 
Goedemorgen,

Mooi dat het is opgelost.

Ik was iets te snel geweest met de code te posten. In mijn eigen versie had ik de sortering al wel op het veld "GebDat" gezet. Het andere veld "Tabel" is geen datumveld, sorteren op dit veld schiet dan ook niet op:).

Hieronder de code die ik had willen posten:

Code:
SELECT gebdatum.GebDat, IIf(IsNull([GebDat]),"",DateSerial(Year(Date())+Abs(Month(Date())>Month([Gebdat])),Month([Gebdat]),Day([Gebdat]))) AS Tabel
FROM gebdatum
WHERE (((IIf(IsNull([GebDat]),"",DateSerial(Year(Date())+Abs(Month(Date())>Month([Gebdat])),Month([Gebdat]),Day([Gebdat]))))>=Date()-7 And (IIf(IsNull([GebDat]),"",DateSerial(Year(Date())+Abs(Month(Date())>Month([Gebdat])),Month([Gebdat]),Day([Gebdat]))))<=Date()+90))
ORDER BY gebdatum.GebDat;

Mvg
Jan
 
Jan,

Hartelijk dank voor je aanvulling.

Toch nog een vraagje. Hij sorteert nu op gebdat dwz : geboortejaar, maand, dag

Maar ik zou hem graag willen laten sorteren op : maand, dag, jaar.

Is dat ook mogelijk?

Friend
 
Laatst bewerkt:
Dan wordt het zoiets:

Code:
SELECT gebdatum.GebDat, IIf(IsNull([GebDat]),"",DateSerial(Year(Date())+Abs(Month(Date())>Month([Gebdat])),Month([Gebdat]),Day([Gebdat]))) AS Tabel, Month([gebdat]) AS Maand, Day([gebdat]) AS Dag, Year([gebdat]) AS Jaar
FROM gebdatum
WHERE (((IIf(IsNull([GebDat]),"",DateSerial(Year(Date())+Abs(Month(Date())>Month([Gebdat])),Month([Gebdat]),Day([Gebdat]))))>=Date()-7 And (IIf(IsNull([GebDat]),"",DateSerial(Year(Date())+Abs(Month(Date())>Month([Gebdat])),Month([Gebdat]),Day([Gebdat]))))<=Date()+90))
ORDER BY Month([gebdat]), Day([gebdat]), Year([gebdat]);

Mvg
Jan
 
Wel heel veel haakjes gebruikt :). Sortering kan ook simpeler:
Code:
SELECT GebDat, IIf(IsNull([GebDat]),"",DateSerial(Year(Date())+Abs(Month(Date())>Month([Gebdat])),Month([Gebdat]),
Day([Gebdat]))) AS Tabel, Month([gebdat]) AS Maand, Day([gebdat]) AS Dag, Year([gebdat]) AS Jaar, Format([gebdat],"mmddyyyy") As Sorteersleutel
FROM gebdatum
WHERE (IIf(IsNull([GebDat]),"",DateSerial(Year(Date())+Abs(Month(Date())>Month([Gebdat])),Month([Gebdat]),Day([Gebdat])))>=Date()-7 
And (IIf(IsNull([GebDat]),"",DateSerial(Year(Date())+Abs(Month(Date())>Month([Gebdat])),Month([Gebdat]),Day([Gebdat]))))<=Date()+90)
ORDER BY Format([gebdat],"mmddyyyy")
 
Jan,

Nogmaals mijn hartelijke dank voor de fine tuning. Dat geeft de juiste sortering op maand.

:):)

Friend
 
OctaFish,

Hartelijk dank voor je reactie :thumb:

En ook voor jouw bijdrage aan de oplossing. De vraag begon vorig jaar bij jou en ging lang goed tot ik een leeg veld gebdat kreeg in een record.

Maar ja ik had toen er ook geen voorbeeld bestand bijgedaan, dus eigen schuld.;)

Veel dank

Friend
 
Jan en OctafIsh,

Een fine fine tuning vraag aan jullie beiden als dat mag.

Nu geeft de query keurig de volgorde van de maand. Dit betekent wel dat jan nu eerst staat en dan dec.

Maar eigenlijk zou de mooiste sorteer volgorde zijn dec (2019) en dan wie jarig is in jan (2020).

Normaal in het jaar heb je hier niet zoveel last van, de selecte is immers - 7 dagen en + 30 dagen gezien van vandaag, alleen bij de jaar wisseling valt dit op.

Is dat te verwezenlijken of spreek ik dan over iets onmogelijks?

Friend
 
Ik heb het draadje met enige verbazing van afstand bekeken, en snap er eerlijk gezegd steeds minder van :). Om te beginnen: waarom neem je records zonder geboortedatum überhaupt mee? Dat is toch zinloos? Filter ze er (in deze query) gewoon uit! Heb je dat probleem gelijk goed opgelost.
En je sorteer probleem? Als je verjaardagen genereert met mijn formule, staan ze altijd in de goede volgorde. Het zijn immers datums! Waarom je de maanden, jaren en dagen apart wilt zien, is mij eerlijk gezegd ook een raadsel. Wat moet je daar mee? En ja, als je eerst sorteert op maand, dan is het logisch dat je januari als eerste ziet. Daar is bar weinig aan te doen. Je krijgt de datums alleen op de juiste volgorde als je begint met jaar, en dan maand. Om met een Nederlandse (te vroeg overleden) filosoof te spreken: ‘Da’s logisch hè’ :).
 
OctaFish,

Hartelijk dank voor de reactie :thumb:

Het eruit filteren van de null records helemaal mee eens. Dat gaf Jan al mooi aan in zijn oplossing.

Misschien wat toelichting. Elke week word er via word/verzendlijsten een overzicht verstuurd van mensen die de afgelopen 7 dagen jarig zijn geweest en mensen die de komende 14 dagen jarig zijn.

dus bv:

Zo staat het dan in word:

afgelopen week:
maandag 16 dec : Jan
dinsdag 17 dec : Karel

komende week:
dinsdag 24 dec : Frits
donderdag 26 dec : Jaap

Maar als je dan te dicht, binnen 14 dagen van jan komt dan krijg je eerst januari bovenaan en dan pas december.

Logisch, zeg jij, want zo sorteer je ook. Ben ik helemaal met je eens.
Alleen daar zoek ik nu juist een oplossing voor, anders dan knippen en plakken in word.

Friend
 
Het eruit filteren van de null records helemaal mee eens. Dat gaf Jan al mooi aan in zijn oplossing.
Dat lees ik nergens in terug, en zie ik ook niet in zijn code. Wil je dat gaan doen, dan moet je in de WHERE opnemen dat lege velden er niet in moeten zitten (WHERE [GebDatum] NOT IS NULL bijvoorbeeld).

Ik blijf bij mijn oorspronkelijke antwoord: sorteer op de Verjaardagsdatum, en niet op maand. Als je van je bestand een zip kan maken, kan ik straks wel even kijken. Gisteren had ik problemen met mijn laptop; ik kreeg geen bestanden opgeslagen. Anders had ik het denk ik gisteren al wel voor je opgelost.
 
OctaFish,

Dat lees ik nergens in terug, en zie ik ook niet in zijn code. Wil je dat gaan doen, dan moet je in de WHERE opnemen dat lege velden er niet in moeten zitten (WHERE [GebDatum] NOT IS NULL bijvoorbeeld).

Dat staat toch hier in? of lees ik het verkeerd?

jhdw
Dan wordt het zoiets:

Code:
SELECT gebdatum.GebDat, IIf(IsNull([GebDat]),"",DateSerial(Year(Date())+Abs(Month(Date())>Month([Gebdat])),Month([Gebdat]),Day([Gebdat]))) AS Tabel, Month([gebdat]) AS Maand, Day([gebdat]) AS Dag, Year([gebdat]) AS Jaar
FROM gebdatum
WHERE (((IIf(IsNull([GebDat]),"",DateSerial(Year(Date())+Abs(Month(Date())>Month([Gebdat])),Month([Gebdat]),Day([Gebdat]))))>=Date()-7 And (IIf(IsNull([GebDat]),"",DateSerial(Year(Date())+Abs(Month(Date())>Month([Gebdat])),Month([Gebdat]),Day([Gebdat]))))<=Date()+90))
ORDER BY Month([gebdat]), Day([gebdat]), Year([gebdat]);

In de bijlage het voorbeeld bestand.

Fijn als je er even naar kan kijken.

Hartelijk dank

Friend
 

Bijlagen

  • testdatum1.rar
    26,1 KB · Weergaven: 21
Dat staat toch hier in? of lees ik het verkeerd?
Lees je inderdaad verkeerd :). Hij vervangt slechts een leeg veld, maar filtert er niet op. Als het wél werkt, is het veel te omslachtig :). Ik kijk wel even naar je bijlage.
Overigens had ik om een zipje gevraagd, geen rar bestand. Want dat kan ik dus nu niet openen.
 
OctaFish,

Tja ... het verschil tussen een hobbyist en en specialist ;)

Bij deze als zip bestand.

Friend
 

Bijlagen

  • testdatum1.zip
    30,9 KB · Weergaven: 35
Probeer deze query eens.
PHP:
SELECT GebDat, IIf(IsNull([GebDat]),0,DateSerial(Year(Date())+Abs(Month(Date())>Month([Gebdat])),Month([Gebdat]),Day([Gebdat]))) AS Tabel, 
Day([gebdat]) AS Dag, Month([gebdat]) AS Maand, Year([gebdat]) AS Jaar
FROM gebdatum
WHERE (GebDat Is Not Null AND IIf(IsNull([GebDat]),0,DateSerial(Year(Date())+Abs(Month(Date())>Month([Gebdat])),
Month([Gebdat]),Day([Gebdat])))>=Date()-7 And IIf(IsNull([GebDat]),0,DateSerial(Year(Date())+Abs(Month(Date())>Month([Gebdat])),
Month([Gebdat]),Day([Gebdat])))<=DateSerial(Year(Date()),Month(Date())+1,Day(Date())))
ORDER BY DateDiff("d",Date(),DateSerial(Year(Date())+Abs(Month(Date())>Month([Gebdat])),Month([Gebdat]),Day([Gebdat])),2,2);
 
OctaFish,

Wat is iets mooi als het helemaal werkt :)

Dit is precies wat ik graag wilde bewerkstelligen.

Heel hartelijk dank :thumb:

Friend

Ps :
Tja ... het verschil tussen een hobbyist en en specialist
de hobbyist was ik natuurlijk!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan