Week en dag van vandaag automatisch invoeren

Status
Niet open voor verdere reacties.

Jesse2

Gebruiker
Lid geworden
3 mei 2011
Berichten
340
in mijn tabel word gewerkt met week/dag bv. 233 de betekenis hiervan is week 23 dag 3.
De getallen worden aan elkaar geschreven bv: 144, 346 of 285

nu zou ik graag in een vakje automatisch de dag van vandaag willen invullen is dit mogelijk?
 
@husnu03: een vraag over een tabel in een Access forum: hoe groot is de kans dat die vraag over access gaat?

@Jesse: wat wil je precies opslaan? Ik zou de huidige datum als standaardwaarde in een datumveld zetten. Daar zet je dan de formule =Date(). Dan krijg je automatisch de juiste datum als je een nieuw record maakt. Elke andere variant (weeknummer+dag) moet via een functie, en kan je niet in een tabel regelen; dat zal dus via een formulier moeten.
 
hoe werkt dat dan in een formulier?
de datum van vandaag is natuurlijk handig maar het gaat mij er om dat automatisch de week en dag voor je word ingevoerd.
dit ga ik onder andere gebruiken voor mijn invoerformulier.
 
Ik neem aan dat je vraag te maken heeft met de andere vraag over het opzoeken van de prijs op basis van weeknummer en dag? Je maakt het jezelf op die manier niet erg gemakkelijk; een vastgelegde datum betekent namelijk automatisch dat de rest van de gegevens te berekenen is, dus er is geen enkele reden om niet met datums te werken. Bovendien kun je een datum makkelijk kiezen met een datumkiezer. Dus eigenlijk raad ik je ook aan om de hele constructie die je aan het bedenken bent eens tegen het licht te houden, en te kijken of het niet veel simpeler kan.... (antwoord: ja!)
 
automatische datum handig dat begrijp ik.
is het ook mogelijk om de automatische datum aan week/dag te koppelen?
het vervelende is dat het geen doorlopend getal is maar steeds eindigt bij 7 017 027 127
de constructie van week/dag naar een normale datum veranderen is geen optie.

Jesse
 
Je zult je weekcode toch moeten automatiseren (bijvoorbeeld met een functie) als je niet met een datum kunt werken. Die kun je uiteraard op basis van een datum wel maken.
 
ik mijn plan verandert
ik maak heb nu een tabel voor de waarde van wk/dag.
die moet dan wel iedere dag verandert worden maar dat is geen probleem.
wel vraag ik mij af met welke expressie kan ik de standaartwaarde van een veld laten importeren uit een andere tabel.
bij mijn uitvouwvakjes zit een dergelijke expressie, alleen deze lijkt niet te werken voor de standaardwaarde van mijn uitvouwvakje.
deze code werkt in de rijbron maar niet in de standaardwaarde : SELECT [Dag vandaag].[Dag vandaag] FROM [Dag vandaag];

de tabel heet Dag vandaag en het veld uit diezelfde tabel heet ook Dag vandaag.
in mijn duitvouwlijstje werkt hij gewoon maar niet in de standaardwaarde.

Jesse
 
Laatst bewerkt:
Klopt ook; een standaardwaarde is (zoals je wel kunt vermoeden) een Waarde; wat jij gebruikt is een (query)formule. En dat werkt niet. Keuzelijsten maken juist wel gebruik van queries, dus daar werkt hij prima! Overigens zou ik de hele code op het formulier inbouwen, en bijvoorbeeld toewijzen aan het tekstveld bij het aanmaken van een nieuw record. De code zelf is redelijk simpel:

Code:
WeekCode: Right("00" & Format$(Date();"ww";2;2);2) & Weekday(Date())

Probeer 'm maar eens uit in een query.
 
Jouw oorspronkelijke vraag is
nu zou ik graag in een vakje automatisch de dag van vandaag willen invullen is dit mogelijk?

Op basis van een tekenreeks met week(2 tekens)+dag (1 teken), zoals jij dat aangeeft, kan dat.
Hieronder code hoe je dat zou kunnen doen, uitgaande van een vooronderstellingen, 1ste week jaar wordt bepaald door tenminste 4 dagen van dat jaar in die week, en de week begint bij maandag
Code:
Function fBepaalDatumVanWeeknummer(sWeekDag As String) As Date
    Dim iStartWeek            As Integer
    Dim iStartDag             As Integer
    Dim iWeekNummer           As Integer
    Dim iDagNummer            As Integer

    'bepaal weeknummer
    iWeekNummer = Val(Left$(sWeekDag, 2))
    'bepaal dag van week
    iDagNummer = Val(Right$(sWeekDag, 1))

    'bereken de week waarin 1 januari ligt
    iStartWeek = Val(Format$(DateSerial(Year(Date), 1, 1), "ww", vbMonday, vbFirstFourDays))
    'corrigeer indien 1 januari niet in week 1 ligt
    If iStartWeek = 53 Then iStartWeek = 0
    'welke dag is 1 januari
    iStartDag = Weekday(DateSerial(Year(Date), 1, 1), vbMonday)
    'bereken de datum die precies het aantal weken na 1 januari ligt, en corrigeer dat naar dag van de week
    fBepaalDatumVanWeeknummer = DateAdd("ww", iWeekNummer, DateSerial(Year(Date), 1, 1)) + (iDagNummer - iStartDag)
End Function
Code kan natuurlijk nog wel wat korter, maar met deze tussenstapjes wellicht wat duidelijker.
 
even een vraagje waar voer ik die lange code precies in?
en op basis van welke velden is dit?

ik krijg het maar niet voor elkaar:confused:
 
ik heb de eerste code in de criteria van een query gezet maar ik krijg een melding over ongeldige tekens.
doe ik het (Weekcode) gedeelte weg dan krijg ik geen melding maar ik zie ook niks gebeuren in mijn query.
 
Zet de code, dus de hele functie, in een algemene module bij modules. Geef die module een naam die NIET gelijk is aan de functienaam
Maak in je query een extra veld, naam b.v. DatumVanWeeknummer en zet daar achter de functie met als argument de veldnaam van de week/dag.
Stel dat het week/dag veld heet... WeekDag, dan zet je in je query (als extra veld)
DatumVanWeeknummer: fBepaalDatumVanWeeknummer([WeekDag])

Opmerking:
Zie ook de vooronderstellingen in mijn eerdere bijdrage, en merk op dat de code gaat over week/dag in het lopende jaar
 
Het kan zijn dat je de komma gebruikt als scheidingsteken i.p.v. een puntkomma. Dus dat kan je nog proberen. Bij mij werkt hij in ieder geval prima in een query. Overigens krijg ik, als ik Harry zijn functie toepas op vandaag, als uitkomst: 4-4-2011.... Da's toch een andere datum als 14-6-2011. Mety mijn querycode maakt hij: 243. En volgens mij is dat wat je wilt. Of niet?
 
Code werkt hier prima op meerdere computers met Access XP Windows XP/7.
 

Bijlagen

  • WeekDag.JPG
    WeekDag.JPG
    24 KB · Weergaven: 70
Ik zit geloof ik precies andersom te denken (ook al door een andere vraag van TS), namelijk hoe je een week+dagcode moet maken vanuit een datum.... :) Overigens zou de hele vraag overbodig zijn, als TS gewoon een datumveld opneemt in zijn tabellen, en op basis daarvan (dan wel weer met mijn query ;) ) het weekgetal berekent. Maar waarom zou je makkelijk denken als het ook ingewikkeld kan....
 
Ik beantwoord heel gewoon de vraag van TS niet meer niet minder. Als hij die datum al heeft hoeft die vraag niet gesteld te worden. Wellicht komt die week/dag via een ander programma (Excel?)
Hoewel je dat niet met zoveel woorden zegt, begrijp ik dat je opmerking
Overigens krijg ik, als ik Harry zijn functie toepas op vandaag, als uitkomst: 4-4-2011.... Da's toch een andere datum als 14-6-2011
op niets gebaseerd is.
 
Die krijg je als je de datum van vandaag aanbiedt aan de functie. Noem dat maar niks... Overigens moet je maar hopen met de functie dat TS in zijn veld ook altijd twee cijfers gebruikt voor het weeknummer :) Ik zou zelf het zekere voor het onzekere nemen, en de dagwaarde er uit vissen. Hou je vanzelf 1 of twee cijfers over voor de week...
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan