Kalender met weeknummers

Status
Niet open voor verdere reacties.

Jacobusje

Gebruiker
Lid geworden
15 apr 2021
Berichten
89
Dag,

We maken gebruik van diverse databases waarin overal gebruik word gemaakt van datumvelden.
Op het moment dat je op een datumveld klikt verschijnt er een icoontje waarmee de kalender geopend kan worden.

We hebben er niet echt een probleem mee, maar ik zit meer te denken aan een verbetering, of dat mogelijk is weet ik dus niet.
Nu moeten we een datum kiezen in een bepaalde week, we praten hier altijd over productieweken, leverweken enz.

Bij de kalender die wordt geopend via het datumveld zijn er echter geen weeknummers zichtbaar.
Nu moeten we steeds op de papieren kalender kijken welke datums er in die week vallen.
Bestaat het dat er weeknummers zichtbaar worden in de kalender of is daar een oplossing voor?

Ideeën zijn welkom.
 

Bijlagen

  • Kalender.png
    Kalender.png
    5,7 KB · Weergaven: 34
Welke database wordt gebruikt? Of is het in Excel. Waar komt de kalender vandaan. Een invoegtoepassing.
Ik denk dat je meer info moet geven.
 
@Sytse1:
Dit is het Access forum.
Lijkt me een duidelijke aanwijzing ;)
 
Laatst bewerkt:
Ja het gaat hier inderdaad over een Access database.

Je kan bij de eigenschappen van een onderdeel kiezen om de kalender zichtbaar te maken. (zie bijlage)
 

Bijlagen

  • Kalender1.png
    Kalender1.png
    18,2 KB · Weergaven: 31
Bestaat het dat er weeknummers zichtbaar worden in de kalender of is daar een oplossing voor?
Simpel antwoord: nee. De DatePicker heeft dat niet. Wil je die wél, dan zul je zelf een formulier moeten maken. Of bijvoorbeeld een tekstveldje op je formulier zetten dat het weeknummer berekent op basis van de datum, zodat je een indicatie hebt.
 
Jammer, het weeknummer wordt wel vanuit de datum via VBA gegenereerd en zichtbaar na het invullen van de datum.

Toch bedankt.
 
Veel ontwerpers denken vanuit de mogelijkheden van het [l]programma[/i], en niet vanuit het proces. Wat bedoel ik daarmee? Je hebt een (lever)datum nodig, dus een datumveld. Je maakt dus een datumveld met den DatePicker, want dat zit in het programma. Om een datum te kiezen, heb je minstens drie handelingen nodig: 1) datum-veld selecteren, 2) DatePicker aanklikken, 3) datum selecteren. Vermoedelijk nog meer, als de te kiezen datum een maand later is. En dan heb ik het dus niet eens over je oorspronkelijke ‘probleem’ (welke week is dat dan?).

Ik denk: Als jullie vanuit weken (weeknummers) werken, moet je het proces daar ook op inrichten. Ik zou het dan ongeveer zo doen: stel dat 99% van de te kiezen datums binnen 10 weken na de huidige datum liggen. Dan maak ik op het formulier 10 kleine knoppen, die elk een weeknummer laten zien. Klik je op een week, dan zie je in de erbij horende keuzelijst de 5 (of 7) datum’s uit die week. Je klikt op een datum, en je bent klaar.

Voordeel? Je hebt altijd een kleine keuze uit beschikbare datums, het werkt super snel, en je kunt de keuzelijst met mogelijke datums nog ‘opschonen’ door niet-beschikbare datums eruit te laten. Stel dat je een bezorg datum wilt invoeren; dan ben je afhankelijk van beschikbare chauffeurs. Is er op een bepaalde datum geen chauffeur meer beschikbaar, dan filter je die datum weg uit de lijst. Dat principe kun je óók loslaten op de knoppen: zijn alle datums uit een week op, dan werkt de knop van die week niet meer.

Je ziet: door anders naar je proces te kijken, kun je vaak veel betere oplossingen voor vraagstukken bedenken :).
 
Dan nog een andere poging / omweg....

Nu vul ik van de betreffende week altijd de datum van maandag in.
Na bijwerken zet VBA in een volgend vak de datum van de vrijdag van van die week er in.
Met onderstaande code wordt de datum van maandag omgezet naar een weeknummer.
Met VBA wordt uit dat tekstveld het weeknummer gehaald en in het juiste vakje geplaatst

Code:
=CInt(Format$([Datum];"ww";2;2))

In de rapporten komt alles dus wel op de juiste manier naar voren.

Is er ook VBA-code die een weeknummer omzet naar een datum op maandag?
Waarschijnlijk zit je dan met het probleem dat elk jaar week 1 t/m 52 heeft.
 
Welk land leef jij? Wij hebben in Nederland ook jaren met 53 weken :). Maar daar zijn heel veel vragen over gesteld, vooral in het Excel forum. De functies die je daar vindt kun je vrij makkelijk omzetten naar Access.
 
OctaFish
Welk land leef jij?

Is dit een Excel forum of Access, of gaat u overlopen?
Beetje zoeken in Acces voor het juiste weeknummer geeft diverse oplossingen, bv:


Code:
Public Function Weeknummer(dDatum As Variant) As Integer
 
  Dim iWeekNummer As Integer

  If CStr(Format(dDatum, "DD:MM:JJ")) = "" Then
    Exit Function
  End If
 
  iWeekNummer = Format(dDatum, "ww", vbMonday, vbFirstFourDays)
  If iWeekNummer > 52 Then
    If Format(dDatum + 7, "ww", vbMonday, vbFirstFourDays) = 2 Then
      iWeekNummer = 1
    End If
  End If

  Weeknummer = iWeekNummer

End Function

Zo kan je ook met een beetje zoeken een DatePicker vinden, waar je zelf nog de procedure voor moet schrijfen voor de weeknummers.

Gr. Cor
 
Is er ook VBA-code die een weeknummer omzet naar een datum op maandag?
@pletter: in mijn land krijg je ook leesonderwijs. TS vraagt om een procedure die een weeknummer omzet naar een datum (de maandag van die week). Andersom interesseert 'm op dit moment niet.
 
Ik leef onder een Nederlandse steen en kom daar af en toe onderuit :)

Maar het gaat mij juist om een weeknummer invullen en een datum (op maandag van die week) terug krijgen.
Als het überhaupt kan zal de input een weeknummer met een jaartal moeten zijn. (denk ik)

Of zoals met een datum invullen met 4-10, pakt hij zelf het huidige jaartal.
Is het een datum voor een ander jaar moet je 4-10-22 invullen.

Dus voor weeknummer zou het dit kunnen/moeten zijn:
Huidig jaar is de input 40
Ander jaar is de input 40-2022
 
Als het überhaupt kan zal de input een weeknummer met een jaartal moeten zijn. (denk ik)
Zoals ik al schreef: natuurlijk kan het. Ook in Access. Wat betreft het jaartal: dat moet je inderdaad ergens vandaan halen. Hoe, is ook weer (heb je 'm weer) afhankelijk van je proces. Als het gaat om toekomstige afspraken, is het logisch dat je nooit een jaar pakt dat in het verleden ligt. En, tenzij je heel ver in de toekomst plant, lijkt mij het huidige jaar en het volgende jaar voldoende. Al kun je met onderstaande procedure óók datums genereren die een jaar verder liggen. Dan moet je dus het aantal weken met een volledig jaar verhogen.

Code:
Private Sub txtWeekNummer_AfterUpdate()
Dim Jaar As Integer, WeekNum As Integer

    Jaar = Year(Date)
    WeekNum = Int((Date - Weekday(Date, 2) + 4 - DateSerial(Year(Date - Weekday(Date, 2) + 4), 1, 1)) / 7) + 1
    If CInt(Me.txtWeekNummer) < WeekNum Then Jaar = Jaar + 1
    Me.txtDatum = DateSerial(Jaar, 1, -2) - Weekday(DateSerial(Jaar, 1, 3)) + Me.txtWeekNummer * 7
End Sub

Met deze code krijg je (vandaag) met ingevuld weeknummer de volgende datums:
wk 39: 26-9-2022
wk 40: 4-10-2021
wk 92: 3-10-2022

Lijkt mij dat je daar wel even mee vooruit kan. Ik heb jouw db niet, dus ik heb een inputveld met de naam txtWeeknummer gemaakt en gebruikt. Die naam zul je wel moeten aanpassen, net als de naam van het datumveld.
 
Na bijwerken zet VBA in een volgend vak de datum van de vrijdag van van die week er in.
En de vrijdag kun je natuurlijk ook gelijk meenemen in de code:
Code:
Private Sub txtWeekNummer_AfterUpdate()
Dim Jaar As Integer, WeekNum As Integer

    Jaar = Year(Date)
    WeekNum = Int((Date - Weekday(Date, 2) + 4 - DateSerial(Year(Date - Weekday(Date, 2) + 4), 1, 1)) / 7) + 1
    If CInt(Me.txtWeekNummer) < WeekNum Then Jaar = Jaar + 1
    Me.txtStartDatum = DateSerial(Jaar, 1, -2) - Weekday(DateSerial(Jaar, 1, 3)) + Me.txtWeekNummer * 7
    Me.txtEindDatum = Me.txtStartDatum + 4
End Sub
 
Ik heb de code in 1 deel van de database ingebouwd en dat werkt heel mooi.
Mocht het een keer voorkomen dat we meer dan een jaar vooruit plannen moet ik de datum een keer handmatig invullen.
Op ander plaatsen pas ik dat ook aan als ik er tijd voor heb.

Iedereen bedankt!
 
n dat we meer dan een jaar vooruit plannen moet ik de datum een keer handmatig invullen.
Heb je goed gelezen? Ik schreef namelijk: wil je nóg een jaar verder vooruit, dan tel je dat jaar erbij op. Ik gaf als voorbeeld week 92: dat levert een datum op in 2022. Dus niks handmatig de datum invullen, hersens gebruiken en hoofdrekenen:)
 
Hopelijk plannen we weinig verder dan 52/53 weken.
Want.....
Wat moet ik met een planningsoverzicht voor de productie met leveren in week 92 ;)
 
Iemand die héél zeker wil zijn dat-ie de spullen op tijd geleverd krijgt :d.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan