Avatar billede sunesune Nybegynder
16. maj 2002 - 12:10 Der er 17 kommentarer og
1 løsning

Dato

Jeg skal bruge en formel der virker, enten i ASP kode eller i en forespørgsel, der på baggrund af et ugenummer og en ugedag kan generere en dato.. nogen der kan hjælpe?
Avatar billede hansk Nybegynder
16. maj 2002 - 12:35 #1
Okay, den var lidt tricky:

DateAdd("d", d, DateAdd("ww", ww, DateValue(y & "-01-01")))
hvor d=dagens nummer i ugen(1=søndag, 2=mandag ...)
ww er ugenummer
og y er årstal.
Avatar billede hansk Nybegynder
16. maj 2002 - 12:36 #2
oops, kan du bruge dateadd funktionen i ASP?
Avatar billede hansk Nybegynder
16. maj 2002 - 12:39 #3
Funktionen er valid i en SQL sætning mod access.
Avatar billede terry Ekspert
16. maj 2002 - 12:59 #4
You will also need a Year or you cant!
I have maybe something!
Avatar billede terry Ekspert
16. maj 2002 - 13:05 #5
hansk>Monday is ALWAYS th efirst day of the week!
Avatar billede hansk Nybegynder
16. maj 2002 - 13:05 #6
den skal modificeres lidt for dagen:

DateAdd("d", d - Weekday(DateValue(y & "-01-01")), DateAdd("ww", ww, DateValue(y & "-01-01")))
Avatar billede hansk Nybegynder
16. maj 2002 - 13:06 #7
Terry> access assumes sunday to be the first day of the week.
Avatar billede terry Ekspert
16. maj 2002 - 13:11 #8
Yes I know and thats why you have to do something about it or you  MAY NOT get the correct date!
Avatar billede hansk Nybegynder
16. maj 2002 - 13:13 #9
Men hvis man hellere vil have mandag som dag 1, så:

DateAdd("d", d + 1 - Weekday(DateValue(y & "-01-01")), DateAdd("ww", ww - 1, DateValue(y & "-01-01")))
Avatar billede hansk Nybegynder
16. maj 2002 - 13:16 #10
Denne formel har mandag som dag 1, og ugen hvor 1. januar befinder sig er uge 1.
ww=20, d=4, y=2002 giver 16/5/2002 (idag). Pheew.
Avatar billede terry Ekspert
16. maj 2002 - 13:28 #11
Now its OK :o)
hansk as I said Monday is always the first day of the week, I should have also said in DK, I think it is actually sunday in the USA!
Avatar billede hansk Nybegynder
16. maj 2002 - 13:31 #12
That's right, yankees like to be a bit ahead of the rest of us.
Avatar billede terry Ekspert
16. maj 2002 - 13:42 #13
Just a little correction to your code hansk, not that it deosnt work, I just think its more correct.

DateAdd("d", d - Weekday(DateValue(y & "-01-01"), vbMonday), DateAdd("ww", w - 1, DateValue(y & "-01-01")))
Avatar billede hansk Nybegynder
16. maj 2002 - 14:03 #14
Okay, then let's wrap it in nicely in a general function:

Public Function GenerateDate(iYear As Integer, iWeek As Integer, iWeekday As Integer) As Date
    GenerateDate = DateAdd("d", iWeekday - Weekday(DateValue(iYear & "-01-01"), vbMonday), DateAdd("ww", iWeek - 1, DateValue(iYear & "-01-01")))
End Function
Avatar billede terry Ekspert
16. maj 2002 - 14:12 #15
I have! also one to return a date from y and week number only (moday being first day of week):o)

'Return a date from a given year and week
Function yw2Date(y As Integer, w As Integer) As Date
'1 = monday (vbMonday = 2)
    yw2Date = ywd2Date(y, w, 1)

End Function

'Return a date from a given year week and day of week.
Function ywd2Date(y As Integer, w As Integer, d As Integer) As Date
    ywd2Date = DateAdd("d", d - Weekday(DateValue(y & "-01-01"), vbMonday), DateAdd("ww", w - 1, DateValue(y & "-01-01")))

End Function
Avatar billede nih Novice
16. maj 2002 - 14:27 #16
Jeg har også en ;)

Function getDate(intUge As Integer, intAar As Integer, intDag As Integer) As Date
  Dim tempDato As Date

  tempDato = DateSerial(intAar, 1, 4) - WeekDay(DateSerial(intAar, 1, 4), vbMonday) + 1
  getDate = tempDato + (7 * (intUge - 1)) + intDag - 1
End Function

Niels
Avatar billede sunesune Nybegynder
17. maj 2002 - 12:41 #17
Den krævede lidt tilretning, men ellers så virker den...så mange tak, også til jer andre..:)
Avatar billede hansk Nybegynder
17. maj 2002 - 12:46 #18
Takker selv.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester