17. august 2005 - 13:08Der er
4 kommentarer og 1 løsning
Find bestemte uger mellem 2 datoer
Hejsa Jeg er interesseret i at kende ugenumrene på fx. hver tredje uge i en bestemt periode, fx
Startdato = 03-10-2005 Slutdato = 10-02-2006
startugen er i ovenstående uge 40 2005 og slutugen er uge 6 2006 ****************** startdato = CDate(rs("Dato")) startuge = DatePart("ww", startdato, vbMonday, vbFirstFourDays) slutdato = CDate(rs("DatoSlut")) slutuge = DatePart("ww", slutdato, vbMonday, vbFirstFourDays) udskrivtekst_hver_x_uge = 3 'rs("xuge") tekst = rs("beskrivelse") ******************
I ovenstående exsempel vil jeg gerne udskrive "tekst" hver tredje uge i perioden. Jeg har en løkke der tager en given måned ad gangen og gennem løber ugerne, men hvordan ved jeg om jeg har fat i en uge der er "hver tredje" i ovenstående periode.
I eksemplet vil jeg altså gerne udskrive "tekst" når jeg i min løkke har fat i uge: 40,43,46,49,52 i år 2005 og i uge 3,6 år 2006
Jeg forestiler mig en løsning, hvor man først får et array ud med "ugenumrene på hver tredje uge" i perioden også bagefter kan man tjekke om den aktuelle uge er i arrayet.
Jeg ved bare ikke helt hvordan... og hvordan holder man styr på gentagende ugenumre i arrayet, hvis nu perioden er over flere år fx 5 år kan et ugenummer jo godt være i arrayet flere gange...
Jeg er kommet lidt videre jeg har fået udfyldt 2 array med uger og år: ************** xuge = CInt(xuge) tempStartdato = startdatofor_aktuelt_arrangement Dim arUge() Redim arUge(1) Dim arAar() Redim arAar(1) arTaeller = 0
arUge(arTaeller) = DatePart("ww", tempStartdato, vbMonday, vbFirstFourDays) arAar(arTaeller) = Year(tempStartdato) naesteUgeTilArray = DatePart("ww", tempStartdato+(xuge*7), vbMonday, vbFirstFourDays) Do until CDate(tempStartdato) > CDate(slutdatofor_aktuelt_arrangement) tempStartdato = CDate(tempStartdato)+7 tempUge = DatePart("ww", tempStartdato, vbMonday, vbFirstFourDays) tempAar = Year(tempStartdato) if tempUge = naesteUgeTilArray then arTaeller = arTaeller + 1 Redim Preserve arUge(arTaeller) Redim Preserve arAar(arTaeller) arUge(arTaeller) = DatePart("ww", tempStartdato, vbMonday, vbFirstFourDays) arAar(arTaeller) = Year(tempStartdato) naesteUgeTilArray = DatePart("ww", tempStartdato+(xuge*7), vbMonday, vbFirstFourDays) end if Loop ************************ Nu skal jeg så bare finde ud af at bruge dem :-)
Do until CDate(tempStartdato) > CDate(slutdatofor_aktuelt_arrangement) tempUge = DatePart("ww", tempStartdato, vbMonday, vbFirstFourDays) tempAar = Year(tempStartdato) tempKikefter = tempUge&"_"&tempAar if tempUge = naesteUgeTilArray then vaerdi_til_array = DatePart("ww", tempStartdato, vbMonday, vbFirstFourDays) &"_"&Year(tempStartdato) if vaerdi_til_array = kikefter then udskriv = true exit do else naesteUgeTilArray = DatePart("ww", tempStartdato+(xuge*7), vbMonday, vbFirstFourDays) end if end if tempStartdato = CDate(tempStartdato)+7 Loop ******************
Håber andre måske nyde godt af ovenstående - jeg fik jo selv opgaven :-)
Synes godt om
Ny brugerNybegynder
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.