query van jaar week naar datum

Status
Niet open voor verdere reacties.

tepke

Gebruiker
Lid geworden
3 okt 2004
Berichten
231
hoi

Ik heb een tabel waar ik een bestand importeer van uit een erp systeem.
in de tabel heb ik een jaar-week (201732) deze wil ik ombuigen naar een datum. helaas zit er geen datum in het systeem. ik zou dan een dag in de week standaard op de dinsdag zetten voor die week.

is er iemand die weet of dit mogelijk is
 
Ik denk dat iedereen wel weet (jij dus ook ) dat het mogelijk is. Dus dat antwoord is eigenlijk niet wat je wil horen. Ik neem aan dat je de oplossing wilt zien :). Hoe ziet je proces er uit?
 
ik weet dat er van alles mogelijk is binnen access, maar ben maar een beginneling

tot nu toe heb ik het volgende naam van veld heet planwknr bestaat informatie is 201732 in veld

in query he ik staan test: Week2Date(201732) 201732 moet vervangen worden door [planwknr]
Code:
Public Function Week2Date(WeekNo As Long) As Date
 'Source:  http://www.accessmonster.com/Uwe/Forum.aspx/access/93048/Convert-week-number-to-a-date
     Dim Jan1             As Date
     Dim Sub1             As Boolean
     Dim Ret              As Date

    Jan1 = DateSerial(Year(Date), 1, 1)
     'Sub1 = (VBA.Format(Jan1, "ww", VBA.vbMonday, VBA.vbFirstFourDays) = 1)
     Sub1 = (Format(Jan1, "yyyyww", vbUseSystem, vbUseSystem) = 1)
     Ret = DateAdd("yyyyyww", WeekNo + Sub1, Jan1)
     Ret = Ret - Weekday(Ret) + 7
     Week2Date = Ret
 End Function

Ik heb yyyy voor ww gezet omdat voor mijn week jaar staat.
 
Mij lijkt dit voldoende:
Code:
Public Function WeekStart(JaarWeek As String, Optional intStartDay As Integer = vbMonday) As Date
Dim dat As Date
Dim intD As Integer
Dim Jaar As Integer, Week As Integer
    
    Jaar = CInt(Left(JaarWeek, 4))
    Week = CInt(Right(JaarWeek, 2))

    'calc first day of year of datFld
    dat = DateSerial(Jaar, 1, 1)
    intD = Weekday(dat, intStartDay)
    Select Case intD
        Case 1
            dat = dat + 1
        Case Else
            'subtract 2 to get first Monday
            dat = dat - (intD - 2)
    End Select
    'add number of weeks minus 1 to first monday
    WeekStart = DateAdd("ww", Week - 1, dat)
End Function
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan