[Access] Rekenen met weeknummers

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

Acties:
  • 0 Henk 'm!

Anoniem: 195130

Topicstarter
Allereerst 'n bedankje voor de vele informatie die ik al op dit forum heb gevonden. d:)b
Maar voor mijn volgende probleem kan ik nog geen juiste oplossing vinden..

Op dit moment ben ik een access-database aan het programmeren voor een bibliotheek. Deze berekend € 0,20 per week voor een boek, ongeacht op welke dag het in die week wordt gehaald of teruggebracht. Wanneer een klant een boek leent, betaald het de eerste week vooruit. Dit alles wordt vastgelegd in de tabel: tblTransaction, waarin het veld TransactionPayedTill behoudt tot welke datum er betaald is.

Waneer een klant het boek retourneert wordt het huidige weeknummer uitgerekend, minus de week tot waneer er betaald is. Dit resulteerd dus is in het aantal nog onbetaalde weken, waarmee het te betalen bedrag berekend wordt. Tot zover gaat alles goed.

Het probleem gaat zich voordoen rond de jaarwisseling. Want week 200702 - week 200650 gaat niet helemaal goed.

Weeknummers bereken ik overigens met in de volgende functie:

Public Function fctBerekenenWeeknummer(Datum)
Dim Datum2
Dim Week
Dim Dag, Maand, Jaar
Datum2 = Datum

Dag = Format(Datum2, "dd")
Maand = Format(Datum2, "m")
Jaar = Format(Datum2, "yyyy")

Datum = Format(Datum2, "dd-mm-yyyy")
Week = Format([Datum], "ww", 0, 2)

If Week > 51 And Maand = 1 Then
Jaar = Jaar - 1
End If
If Week = 1 And Maand = 12 Then
Jaar = Jaar + 1
End If

Week = Week & Jaar

If Len(Week) = 5 Then
Week = "0" & Week
End If

fctBerekenenWeeknummer = Week
End Function

Ik heb mijn hersenen al aardig overbelast met dit probleem 8)7 , maar de oplossing laat nog naar zich raden. Wie heeft 'm? Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Waarom gebruik je niet gewoon de DateDiff("ww"....) functie? Verder mis ik van alle variabelen een variabele type, wat inhoud dat ze allemaal "variant" zijn waarin dan (worst-case) een string ofzo wordt gegooid waar je dan niet meer mee kunt rekenen etc. En die "worst-case" is bij jou zowieso al van toepassing omdat "Format" een string teruggeeft. Dat het uberhaupt nog (een beetje) werkt is al een wonder ;)
Als je een jaar, maand of dag van een datum wil bepalen kun je gewoon de Day(), Month() of Year() fuctie gebruiken.

Verder wil ik je even wijzen op het gebruik van code tags en "de oplossing" aandragen doen we hier zelden tot nooit; we wijzen je hooguit in de juiste richting ;) Bekijk even de Programming Beleid Quickstart alvorens je op GoT/PRG een topic opent, dat scheelt weer dit soort opmerkingen ;)

[ Voor 88% gewijzigd door RobIII op 30-10-2006 16:12 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Anoniem: 195130

Topicstarter
Bedankt voor je snelle reactie. En excuses voor het 'zooitje' dat ik ervan heb gemaakt. Ik neem je tips zeker ter harte! DateDiff was precies de functie die ik zocht!

Thanks!