---
title: "Loopa igenom dagar."
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/126343-loopa-igenom-dagar"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Hulth"
published: "2005-04-13T19:41:45.000Z"
updated: "2005-04-15T08:34:29.000Z"
replies: 16
views: 600
page: 1
pages: 1
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/126343-loopa-igenom-dagar"
---

# Loopa igenom dagar.

## #1 — Hulth, 2005-04-13T19:41Z

Först och främst vill jag be om ursäkt för den luddiga rubriken, men kommer inte på något bättre att kalla det.

Jag har 2 input-fält. I dessa ska man skriva två datum, tex 2005-05-20 och 2005-10-13.

Då ska scriptet:
1\. Räkna ut hur många dagar det är mellan de två datumen
2\. Göra en loop som ska hämta varje dag ifrån en databas och bearbeta lite information som finns i den.

Har inte en aning över hur jag ska göra detta, är inte heller så insatt i hur DateAdd funkar, men är ganska säker på att den behövs?

Tacksam för förslag, hjälp, kodsnuttar osv :)

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

## #2 — Guffa, 2005-04-13T20:44Z

1\. Använd DateDiff.

2\. Det är nog bättre om du hämtar alla dagar som finns mellan datumen, och loopar igenom resultatet. Annars blir det ju en väldig massa databasfrågor.

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

## #3 — Hulth, 2005-04-14T06:17Z

Den bearbetning som ska göras är redan ganska tung, och det rullar på en dedikerad kraftigb burk enbart till detta syfte, så varför inte använda maskineriet lite? ;)

Dom funderar jag har haft har baserat sig på att man skriver in två datum, kollar med DateDiff hur många dagar det skiljer sig mellan datumen, sen loopar igenom en viss kod det antal dagar som skiljer.

Då måste den ju i varje loop veta vilken dag det är, och då kan man väl lägga det första datumet i en variabel, sen kör man DateAdd på den i loopen?

Ursäkta luddigheten, har inte fått min kaffe än...

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

## #4 — Palle, 2005-04-14T06:35Z

Re: Loopa igenom dagar.

> **Hulth skrev:**
>
> Då ska scriptet:
> 1\. Räkna ut hur många dagar det är mellan de två datumen
> 2\. Göra en loop som ska hämta varje dag ifrån en databas och bearbeta lite information som finns i den.

1\.

```
[red]<%= DateDiff("d","2005-05-20","2005-10-13") %>[/red]
```

2\.

```
[red]select * from table where field between '2005-05-20' and '2005-10-13'[/red]
```

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

## #5 — Hulth, 2005-04-14T08:28Z

Palle:

Den tackar jag för.. ska exprimentera lite med den när jag kommer hem ifrån skolan.

Ungefär såhär är det jag vill göra: 

```
Dim strDate1, strDate2, strNumberOfDays, strWorkingDay
Dim strThisDay, strSQL

strDate1 = Request.Form("Date1")
strDate2 = Request.Form("Date2")

strNumberOfDays = DateDiff("d",strDate1,strDate2)

For strWorkingDay = 1 To strNumberOfDays

If strThisDay = "" Then
strThisDay = strDate1
End If

strSQL = "Select * from db where date = #" & strThisDay & "#"
' öppna tabellen...

' Skriva ut lite info om denna dagen osv, inget som berör databasen.

Do Until objRecSet1.EOF
' bearbeta en massa tjaffs
Next

strThisDay = DateAdd(strThisDay,[B]lägg till en dag[/B])

Loop
```

Lite osäker på hur man använder DateAdd-funktionen, men kan detta vara rätt sätt?
strBlabla = DateAdd(datum,antal,vad) ??

antal = hur många av "vad" som ska läggas till
vad = dag, månad, timme, minut, år osv osv

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

## #6 — J.N., 2005-04-14T08:41Z

HEJ!

> **Hulth skrev:**
>
> ...Lite osäker på hur man använder DateAdd-funktionen, men kan detta vara rätt sätt?
> strBlabla = DateAdd(datum,antal,vad) ??
> 
> antal = hur många av "vad" som ska läggas till
> vad = dag, månad, timme, minut, år osv osv

Ja, det är rätt:
DateAdd(Interval, Number, Date)

<http://www.devguru.com/Technologies/vbscript/quickref/dateadd.html>

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

## #7 — Hulth, 2005-04-14T09:20Z

> **J.N. skrev:**
>
> HEJ!
>
> > **Hulth skrev:**
> >
> > ...Lite osäker på hur man använder DateAdd-funktionen, men kan detta vara rätt sätt?
> > strBlabla = DateAdd(datum,antal,vad) ??
> > 
> > antal = hur många av "vad" som ska läggas till
> > vad = dag, månad, timme, minut, år osv osv
>
> Ja, det är rätt:
> DateAdd(Interval, Number, Date)
> 
> <http://www.devguru.com/Technologies/vbscript/quickref/dateadd.html>

Enligt din sida är ju mitt "exempel" fel då.. :p

DateAdd(vad,antal,datum) ska det ju vara då :)

Då borde ju denna koden fungera:

```
Dim strDate1, strDate2, strNumberOfDays, strWorkingDay
Dim strThisDay, strSQL

strDate1 = Request.Form("Date1")
strDate2 = Request.Form("Date2")

strNumberOfDays = DateDiff("d",strDate1,strDate2)

For strWorkingDay = 1 To strNumberOfDays

If strThisDay = "" Then
strThisDay = strDate1
End If

strSQL = "Select * from db where date = #" & strThisDay & "#"
' öppna tabellen...

' Skriva ut lite info om denna dagen osv, inget som berör databasen.

Do Until objRecSet1.EOF
' bearbeta en massa tjaffs
Next

strThisDay = DateAdd("D",1,strThisDay)

Loop
```

Då har jag lärt mig hur DateAdd funkar, nu är det bara och vänta på att skolan ska sluta så man kan komma hem och prova..

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

## #8 — J.N., 2005-04-14T09:39Z

HEJ!

> **Hulth skrev:**
>
> Enligt din sida är ju mitt "exempel" fel då.. :p

Ja, helt rätt. Citerade dig för att få ett utförligare svar, och sedan läste jag inte ordentligt. :OO

Men, du har faktiskt skrivit rätt på strNumberOfDays, förvillades nog av den. (fast fel funktion)

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

## #9 — Hulth, 2005-04-14T09:50Z

> **J.N. skrev:**
>
> HEJ!
>
> > **Hulth skrev:**
> >
> > Enligt din sida är ju mitt "exempel" fel då.. :p
>
> Ja, helt rätt. Citerade dig för att få ett utförligare svar, och sedan läste jag inte ordentligt. :OO
> 
> Men, du har faktiskt skrivit rätt på strNumberOfDays, förvillades nog av den. (fast fel funktion)

Jodå, DateDiff lärde jag mig tidigare i tråden :)

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

## #10 — @nders, 2005-04-14T09:53Z

Varför prefixar du alla variabler med *str* även om de inte är strängar?

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

## #11 — Hulth, 2005-04-14T10:51Z

> **@nders skrev:**
>
> Varför prefixar du alla variabler med *str* även om de inte är strängar?

Ful gammal vana.. Kör str framför dom flesta variablar av nån anledning..

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

## #12 — @nders, 2005-04-14T10:57Z

Ok, sluta upp med den ovanan då. :)

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

## #13 — Hulth, 2005-04-14T11:12Z

> **@nders skrev:**
>
> Ok, sluta upp med den ovanan då. :)

Ska man lägga nåt annat prefix på variablar?

Kan inte dra mig till minnes varför jag började använda str i det sammanhanget, nu sitter det bara där och blir så automatiskt när man programmerar... :(

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

## #14 — @nders, 2005-04-14T11:17Z

Ungersk notation innebär att du ger variabelnamnen ett prefix som indikerar variabelns typ. Strängar kan du då prefixa med s eller str, heltal i / int (eller l / lng), boolean b / bln, etc.

Ska man prefixa så ska man väl kunna motivera prefixet, eller? :)

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

## #15 — missModesty, 2005-04-14T11:23Z

Ett prefix för datum är dt. Finns säkert andra som används. Men det är bättre att helt slopa prefix än att använda samma till allt. Blir lurit för andra annars...

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

## #16 — Guffa, 2005-04-14T15:46Z

> **Hulth skrev:**
>
> Den bearbetning som ska göras är redan ganska tung, och det rullar på en dedikerad kraftigb burk enbart till detta syfte, så varför inte använda maskineriet lite? ;)

Varför använda maskineriet i onödan? Om bearbetningen redan är tung så blir det ju knappast bättre av att köra en fruktansvärd massa databasfrågor?

Varför ställa hundratals databasfrågor när det räcker med en enda?

Hämta alla poster mellan de två datumen och loopa igenom posterna:

```
Dim datDate1, datDate2
Dim strSQL

datDate1 = CDate(Request.Form("Date1"))
datDate2 = CDate(Request.Form("Date2"))

strSQL = "Select * from db where date between #" & datDate1 & "# and #" & datDate2 & "# order by date"
' öppna tabellen...

Do Until objRecSet1.EOF

' Skriva ut lite info om denna dagen osv, inget som berör databasen.

' bearbeta en massa tjafs

Loop
```

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

## #17 — Hulth, 2005-04-15T08:34Z

> **Guffa skrev:**
>
> Varför använda maskineriet i onödan? Om bearbetningen redan är tung så blir det ju knappast bättre av att köra en fruktansvärd massa databasfrågor?
> 
> Varför ställa hundratals databasfrågor när det räcker med en enda?
> 
> Hämta alla poster mellan de två datumen och loopa igenom posterna:
> 
>
>
> ```
> Dim datDate1, datDate2
> Dim strSQL
> 
> datDate1 = CDate(Request.Form("Date1"))
> datDate2 = CDate(Request.Form("Date2"))
> 
> strSQL = "Select * from db where date between #" & datDate1 & "# and #" & datDate2 & "# order by date"
> ' öppna tabellen...
> 
> Do Until objRecSet1.EOF
> 
> ' Skriva ut lite info om denna dagen osv, inget som berör databasen.
> 
> ' bearbeta en massa tjafs
> 
> Loop
> ```

Jo, det är ju också ett alternativ, men i och med att det ska göras en del mellan varje hämtning ifrån databasen, och för att jag ska slippa sitta 20+ timmar och göra om bearbetningen är det "smidigaste" sättet för mig att loopa det så som jag har tänkt mig.

Säg att vi hämtar 1 dag, då görs det (ungefär) 4600 bearbetningar av informationen som finns i databasen.

Men håller på att studera dom (minst) två sätten detta är möjligt att genomföra, sen får jag väl slänga in en timer och kolla vilken som går snabbast, och den blir det.

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/126343-loopa-igenom-dagar
