---
title: "Datumtraggel"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/70259-datumtraggel"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "peppar"
published: "2003-03-06T18:32:53.000Z"
updated: "2003-03-06T20:42:57.000Z"
replies: 27
views: 578
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/70259-datumtraggel"
---

# Datumtraggel

_Sida 1 av 2._

## #1 — peppar, 2003-03-06T18:32Z

Har varit uppe förut, men detta förbryllar mig en aning.

Jag vill ta ut veckonumret med hjälp av ett datum i formatet
**2003-03-07**. Använder just nu, där variabeln thisDate innehåller t.ex 2003-01-07

```
datepart("ww", thisDate,2)
```

Resultatet blir ju att 2003-01-01 blir vecka 0 (då det borde vara 1) och 2003-12-29 kan den alls med, då slutar scriptet helt att funger och inte ens ett felmeddelande kommer upp?

Vad är fel?

Permalänk: https://www.webforum.nu/p/70259

## #2 — @nders, 2003-03-06T18:35Z

Var kommer thisdate ifrån? Är du säker på att datumet verkligen är av subtypen datum?

Permalänk: https://www.webforum.nu/p/969405

## #3 — Sebbe, 2003-03-06T18:38Z

Som @nders sa, är den av subtypen datum? Annars kanske

```
DatePart("ww", CDate(thisDate), 2)
```

hjälper?

Permalänk: https://www.webforum.nu/p/969407

## #4 — peppar, 2003-03-06T18:38Z

Fungerar inte detta?

```
thisDate = cdate(request.form("byDate"))
```

Permalänk: https://www.webforum.nu/p/969409

## #5 — @nders, 2003-03-06T18:39Z

Jo, det ska det göra.

Mer kod? Hur ser resten av kodraden från första inlägget ut?

Permalänk: https://www.webforum.nu/p/969410

## #6 — peppar, 2003-03-06T18:43Z

```
	'## Hämta datumet som sökts och konvertera till dom variabler som behövs för att genomföra sökningen

	thisDate = cdate(request.form("byDate"))
	yearNo = left(cdate(thisDate),4)
	weekNo = datepart("ww", cdate(thisDate),2)
	Response.Write weekNo

	'## Loopa årets alla månader och kolla vilken vecka som hör med vilken från databasen
	y = 0 '## årets veckor
	xy= 0 '## databasens veckor
	
	do until y = 52
	
		y = y	+1
		xy = xy	+1
		
		if y = weekNo Then thisWeeksMenu = xy-1
		if xy > 3 then xy =1
		'Response.Write xy &", "& y &"<br>"
	
	loop 
	'response.write thisWeeksMenu 

	'## hämta datum aktuell vecka
	firstDate = cdate(getDateFromWeek(yearNo,weekNo))
	lastDate = firstDate + 6
	
	'## skall vi loopa ut hela veckan?
	weekAll = request.form("weekAll")
	'## loopa genom alla datum i veckan, men skriv bara ut det gällande
	
	'## hämta aktuell vecka från databasen
	sql1 = "select * from meny where menVecka = "& thisWeeksMenu &" "
	'response.write sql1
	set RSget = Conn.Execute(sql1)
```

Permalänk: https://www.webforum.nu/p/969412

## #7 — @nders, 2003-03-06T18:48Z

Prova detta:

```
	thisDate = cdate(request.form("byDate"))
	yearNo = year(thisDate)
	weekNo = datepart("ww", thisDate, 2, 2)
	Response.Write weekNo
```

Mvh

Permalänk: https://www.webforum.nu/p/969413

## #8 — peppar, 2003-03-06T18:52Z

Då vill den inte alls, får inte ens ett felmeddelande...! 

(?)

Är du med på vad jag vill åstadkomma? Skall jag förklara...? Om det hjälper?

Permalänk: https://www.webforum.nu/p/969415

## #9 — @nders, 2003-03-06T18:56Z

Börja med bara de fyra raderna, att få dem att fungera, så kan vi haka på resten sen.

Du har väl inte *on error resume next* på sidan? Exakt vad innehåller request.form("byDate")?

Permalänk: https://www.webforum.nu/p/969418

## #10 — peppar, 2003-03-06T19:04Z

Nej, jag har inte On Error.

Fick det att fungera, provade först på servern, sedan lokal och sedan mot servern igen och då ploppade det igång. 

Dina fyra rader fungerar... Själklart :e

Men nu räkar den fel veckor istället (tack vare ditt "rätta" sätt att kolla datumen  ;) )

Skall bena lite i det och se vad jag kan åstadkomma...

Permalänk: https://www.webforum.nu/p/969423

## #11 — @nders, 2003-03-06T19:06Z

Hur menar du med "räknar fel veckor"?

Permalänk: https://www.webforum.nu/p/969425

## #12 — peppar, 2003-03-06T19:10Z

Om scriptet tar emot datumet **2001-01-01** är kalenderveckan **01** och databasveckan *(kan endast vara 1,2 eller 3)* **0** , då databasveckan borde vara **1** 

så här borde det se ut:

db \| kalender
1 - 1
2 - 2
3 - 3
1 - 4 
2 - 5
3 - 6
1 - 7
2 - 8
3 - 9
osv... fram till kalendervecka 52

Är du med? är det luddigt?

Permalänk: https://www.webforum.nu/p/969427

## #13 — @nders, 2003-03-06T19:16Z

Jag vet inte om jag är helt med på vad du menar, men jag gör ett litet försök med operatorn *mod*. Prova detta: 

```
	'## Loopa årets alla månader och kolla vilken vecka som hör med vilken från databasen
	for y = 1 to 52
		thisWeeksMenu = y mod 3
		'Response.Write xy &", "& y &"<br>"
	next
```

 istället för

```
	'## Loopa årets alla månader och kolla vilken vecka som hör med vilken från databasen
	y = 0 '## årets veckor
	xy= 0 '## databasens veckor
	
	do until y = 52
	
		y = y	+1
		xy = xy	+1
		
		if y = weekNo Then thisWeeksMenu = xy-1
		if xy > 3 then xy =1
		'Response.Write xy &", "& y &"<br>"
	
	loop
```

Men, som sagt, lite klurigt, eftersom jag inte helt förstår vad du menar.

**r:/** Response.write-satsen i loopen får du gåra något med också. ;)

mvh

Permalänk: https://www.webforum.nu/p/969429

## #14 — peppar, 2003-03-06T19:43Z

Jag har ett tre-veckors (rullande) schema som ligger i en databas. Varje vecka (i databasen) har ett veckonummer 1,2 eller 3. Varje vecka har sju poster. Ingen av posterna (dagarna) är märkta med datum. Jag vill rulla detta schema över kalenderårets alla veckor. Inga bekymmer så långt.
Men, om jag nu vill titta vad som händer den 21:a maj till exempel så måste jag "manuellt" räkna framåt i veckorna som ligger i databasen eftersom dom inte är märkta med datum. Klurigt tycker jag, kanse borde det inte vara det...?

 :r Jag är väldigt dålig på att uttrycka/förklara i ord vad jag menar, men jag skickar en länk med PM till dig @nders så kan du titta på ett exempel på hur det fungerar i praktiken.

Permalänk: https://www.webforum.nu/p/969466

## #15 — @nders, 2003-03-06T19:49Z

Jag tror jag förstår hur du menar. Denna kod borde vara tillräcklig (att byta mot hela klabbet i tidigare inlägg):

```
	thisDate = cdate(request.form("byDate"))
	yearNo = year(thisDate)
	weekNo = datepart("ww", thisDate, 2, 2)

	intDatabaseWeek = weekNo mod 3 + 1

	'## hämta aktuell vecka från databasen
	sql1 = "select * from meny where menVecka = "& intDatabaseWeek
	set RSget = Conn.Execute(sql1)
```

Mvh,

Permalänk: https://www.webforum.nu/p/969468

## #16 — peppar, 2003-03-06T20:05Z

:r Så enkelt det kan vara. Men ändå inte. :x

Så här blir resultatet.

Kalender vecka 1 blir DBvecka 2
Kalender vecka 2 blir DBvecka 3
Kalender vecka 3 blir DBvecka 1
Kalender vecka 4 blir DBvecka 2

Borde vara

Kalender vecka 1 blir DBvecka 1
Kalender vecka 2 blir DBvecka 2
Kalender vecka 3 blir DBvecka 3
Kalender vecka 4 blir DBvecka 4

Den ligger ett steg före, eller vad man nu kan säga? Vad kan det bero på?

Permalänk: https://www.webforum.nu/p/969477

## #17 — @nders, 2003-03-06T20:10Z

Det är inte så konstigt att det blir så, eftersom koden ser ut som den gör. Jag slänger lite huvudbry och återkommer inom kort.

mvh,

Permalänk: https://www.webforum.nu/p/969478

## #18 — @nders, 2003-03-06T20:13Z

Hmm. Borde inte det här fjungera:

```
intDatabaseWeek = (weekNo-1) mod 3 + 1
```

Mvh,

Permalänk: https://www.webforum.nu/p/969482

## #19 — peppar, 2003-03-06T20:14Z

Men, hallå där!  :o 

Det är väl inte så konstigt att den ligger ett före

```
intDatabaseWeek = weekNo mod 3 [b]+ 1[/b]
```

Tog bort +1 och den dansar i takt. Har inte testet hur det blir mot vecka 52 osv, men det borde äl inte vara någon skillnad... eller?

Permalänk: https://www.webforum.nu/p/969483

## #20 — peppar, 2003-03-06T20:16Z

```
intDatabaseWeek = (weekNo-1) mod 3 + 1
```

 gerkalendervecka 1 och databasvecka 0

Permalänk: https://www.webforum.nu/p/969486

---

Tråden på webben: https://www.webforum.nu/amne/asp/70259-datumtraggel  
Nästa sida: https://www.webforum.nu/amne/asp/70259-datumtraggel/page2.md
