Toon posts:

[sql] verjaardagskalender

Pagina: 1
Acties:
  • 146 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
voor een klein bedrijfje ben ik bezig om uit de access personeelslijst een verjaardagskalender voor op het intranet te maken. Ik heb nu een kalender die de verjaardagen van deze maand + de verjaardagen van volgende maand weergeeft. Ik zou graag een kalender hebben die de verjaardagen van vandaag t/m vandaag + 30 dagen weergeeft maar mijn sql kennis is ietwat ontoereikend :) Dit is mijn code tot nu toe:


strsql = "select voornaam, tussen,achternaam,initialen,geboortedatum "
strsql = strsql & "from medewerkers where month(geboortedatum) between month(now) and month(now)+1 order by month(geboortedatum),day(geboortedatum)"
set rs = server.CreateObject("ADODB.recordset")
rs.Open strsql,conn, 3,3
rs.movelast
rs.movefirst

Verwijderd

Je moet zoiets hebben als:

code:
1
sql = "SELECT * FROM [mederwerkers] WHERE [datum] >= " & day & " AND [datum] < " & day + 30

  • PrinsEdje80
  • Registratie: Oktober 2001
  • Laatst online: 01-01 15:26

PrinsEdje80

Holographic, not grated...

Dat gaat niet echt helemaal werken, want je krijgt alleen maar de mensen in een bepaalde maand. Je moet zorgen dat je het dagnummer van de verjaardagen krijgt en die +30 doen. Er moet daar een functie voor zijn, maar die weet ik niet zo uit het hoofd... Ook iets in de trant van month()...

Used to be Down Under... Foto gallery


  • whoami
  • Registratie: December 2000
  • Laatst online: 19:58
Verwijderd schreef op 24 september 2002 @ 09:53:
voor een klein bedrijfje ben ik bezig om uit de access personeelslijst een verjaardagskalender voor op het intranet te maken. Ik heb nu een kalender die de verjaardagen van deze maand + de verjaardagen van volgende maand weergeeft. Ik zou graag een kalender hebben die de verjaardagen van vandaag t/m vandaag + 30 dagen weergeeft maar mijn sql kennis is ietwat ontoereikend :) Dit is mijn code tot nu toe:


strsql = "select voornaam, tussen,achternaam,initialen,geboortedatum "
strsql = strsql & "from medewerkers where month(geboortedatum) between month(now) and month(now)+1 order by month(geboortedatum),day(geboortedatum)"
set rs = server.CreateObject("ADODB.recordset")
rs.Open strsql,conn, 3,3
rs.movelast
rs.movefirst



Ik denk dat jij vooral een SQL Tutorial of cursus nodig hebt.
SQL Tutorial

https://fgheysels.github.io/


  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 14-07 14:28

thomaske

» » » » » »

Dit is mijn code tot nu toe
..
En waar gaat het fout?
Lees dit even door en edit je beginpost om het wat duidelijker te maken!

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Verwijderd

Topicstarter
thomaske schreef op 24 september 2002 @ 09:59:
[...]


En waar gaat het fout?
Lees dit even door en edit je beginpost om het wat duidelijker te maken!
Het gaat niet fout. Deze code werkt prima. Ik wil alleen de code aanpassen zodat ik niet meer de verjaardagen van de huidige plus de volgende maand krijg maar de verjaardagen vanaf vandaag tot over 30 dagen.

  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Dat je SQL hier tekort schiet vind ik eerlijk gezegd niet zo heel erg vreemd. Dit soort berekeningen is niet leuk in Access. Ik heb onderhand toch behoorlijk wat SQL ervaring, maar ik kan hiervoor ook nog eventjes geen oplossing uit mijn mouw schudden. (Ik ga hier nog even over nadenken.)
In Access heb je functies als DateDiff, DatePart en DateAdd die je hiervoor kunt gebruiken.
Het probleem is alleen dat de geboortedatum de nodige jaren geleden is, waardoor een DateDiff functie altijd een kolossaal getal oplevert.

Je huidige query werkt volgens mij in december niet helemaal meer zoals je dat zou willen.

Never underestimate the power of


  • Sircuri
  • Registratie: Oktober 2001
  • Niet online

Sircuri

Volledig Appelig

Om dit soort problemen aan te pakken werk ik altijd in miliseconde om de tijd te berekenen.. heb je ook geen last van de overgang van december naar januari.

Signature van nature


Verwijderd

Ik had iets wat iedereen weergeeft vanaf nu tot gisteren (het volgende jaar ;)) Wellicht helpt het.
In het kort: Je moet (niets moet...) het jaar er af halen:
Je zal de format$ even moeten nakijken, dat werk volgens mij niet helemaal correct (dit was gebaseerd op Access 97)

SELECT DISTINCTROW Format$([Geboorte datum],"d mmmm") AS Verjaardag, [Voornaam] & " " & [Toevoegsel] & " " & [Achternaam] AS Naam, [Personen].ID, [Personen].[Geboorte datum], IIf(Format$([Geboorte datum],"mm dd")>=Format$(Now(),"mm dd"),Format$(Now()+1," yy") & Format$([Geboorte datum],"mm dd"),Format(Now()," yy")+1 & Format$([Geboorte datum],"mm dd")) AS Expr2
FROM [Personen]
WHERE ((([Personen].[Geboorte datum]) Is Not Null))
ORDER BY IIf(Format$([Geboorte datum],"mm dd")>=Format$(Now(),"mm dd"),Format$(Now()+1," yy") & Format$([Geboorte datum],"mm dd"),Format(Now()," yy")+1 & Format$([Geboorte datum],"mm dd"))
WITH OWNERACCESS OPTION;
Pagina: 1