Maandweergave probleem

Status
Niet open voor verdere reacties.

remmie63

Gebruiker
Lid geworden
4 jan 2011
Berichten
380
Hallo,
ik heb een rapportje gemaakt met een tekstvak waarin de maand vermelding staat d.m.v. =Month(Now()). Dit werkt prima alleen kreeg ik niet de naam van de maand maar het cijfer "1" (van januari de eerste maand neem ik aan??). Om toch de maand naam te krijgen heb ik in het eigenschappen venster de notatie verandert in mmmm. Nu verschijnt inderdaad de naam van de maand alleen het is de verkeerde maand nl. december. Ik was in de veronderstelling dat de expressie =Month(Now()) de kalender van de computer hiervoor gebruikt.
Wat doe ik verkeerd?
 
Je gooit een paar zaken door elkaar.... Om te beginnen: met Month(Now()) pak je inderdaad de getalwaarde van de maand. Dit is, zoals je weet, een getal tussen de 1 en 12. Vervolgens probeer je dat getal op te maken als een datum. Alleen: het getal 1 is geen datum! Sterker nog; door de opmaak 'mmmm' toe te passen op het getal, interpreteert Access het getal wèl als een datum... Ik vermoed, dat je de datum 31-12-1899 zult zien als je het veld de juiste datumopmaak geeft; dit dan op basis van de formule die je hebt gebruikt.
Je zult dus een andere formule moeten gebruiken, en wel: =Format(Date();"mmmm"). En dan uiteraard de opmaak gewoon op tekst laten staan...
 
Beste Octafish,

Bedankt! Ik ga ermee aan de slag. Is dat het gegeven (ben even gaan snuffelen in de literatuur) dat de datum start op 01-01- "ergens ver in het verleden" (=0). En dat "1" 100 nanoseconden voorbij dat punt is en "2" weer 100 nanoseconden verder is. Wat dus voor dit moment een erg groot getal geeft.
Wederom bedankt.
 
Ik snap het nanoseconden verhaal niet helemaal.... Wat bedoel je daar mee?
 
Nanoverhaal

Wat ik snel even erover gelezen heb is dat de datum in VB begint op 01-01-1798 (of zoiets). Die dag (01-01-1798) begint de datumteller voor VB op "0", 100 nanoseconden later staat de datum teller op "1", weer 100 nanoseconden later op "2" enz. Als je al die 100 nanosecondes dan doorrekent naar 28-01-2011 heb je een ongelofelijk groot nummer wat de dag van vandaag (of in ieder geval binnen de 100 nanoseconden) vertegenwoordigt hier is, voor ons, niet mee te werken is. VB zou dit nummer op de achtergrond wel gebruiken.
Dit is overigens informatie waar je volgens mij ook verder niks mee kunt.
 
Nee, daar doe ik niet zoveel mee :)
Ik weet wel dat Office pakketen (en derhalve ook vba) rekenen vanaf 1-1-1900. Dus het getal 1 komt overeen met 1 januari 1900, 41 is dan 4 februari 1900 etc. Het getal 0 kan ook nog: dat is 0 januari 1900. En daar maakt Access dan 31-12-1899 van, oftwel: de opmaak 'mmmm' op een formule =Month(Now()) levert per definitie een getal op tussen 1-12. Overigens gebruik ik nooit Now() voor een datum, maar altijd Date(). Waarom zou je constant de tijd bijwerken als je alleen een datum wilt weten?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan