---
title: "koppla kalender till databas"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/155919-koppla-kalender-till-databas"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Vinnaren"
published: "2007-01-12T20:13:01.000Z"
updated: "2007-01-14T16:08:41.000Z"
replies: 7
views: 651
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/155919-koppla-kalender-till-databas"
---

# koppla kalender till databas

## #1 — Vinnaren, 2007-01-12T20:13Z

Hej

Jag har en kalender som jag vill koppla till min databas. När man trycker på ett datum så ska aktuellt inlägg hämtas som postades då.
Koden jag har är:

```
			Function GetDaysInMonth(iMonth, iYear)
				Dim dTemp
				dTemp = DateAdd("d", -1, DateSerial(iYear, iMonth + 1, 1))
				GetDaysInMonth = Day(dTemp)
			End Function

			Function GetWeekdayMonthStartsOn(dAnyDayInTheMonth)
				Dim dTemp
				dTemp = DateAdd("d", -(Day(dAnyDayInTheMonth) - 1), dAnyDayInTheMonth)
				GetWeekdayMonthStartsOn = WeekDay(dTemp)
			End Function
			
			Function SubtractOneMonth(dDate)
				SubtractOneMonth = DateAdd("m", -1, dDate)
			End Function
			
			Function AddOneMonth(dDate)
				AddOneMonth = DateAdd("m", 1, dDate)
			End Function
			' ***End Function Declaration***
			
			
			Dim dDate     ' Date we're displaying calendar for
			Dim iDIM      ' Days In Month
			Dim iDOW      ' Day Of Week that month starts on
			Dim iCurrent  ' Variable we use to hold current day of month as we write table
			Dim iPosition ' Variable we use to hold current position in table
			
			
			' Get selected date.  There are two ways to do this.
			' First check if we were passed a full date in RQS("date").
			' If so use it, if not look for seperate variables, putting them togeter into a date.
			' Lastly check if the date is valid...if not use today
			If IsDate(Request.QueryString("date")) Then
				dDate = CDate(Request.QueryString("date"))
			Else
				If IsDate(Request.QueryString("month") & "-" & Request.QueryString("day") & "-" & Request.QueryString("year")) Then
					dDate = CDate(Request.QueryString("month") & "-" & Request.QueryString("day") & "-" & Request.QueryString("year"))
				Else
					dDate = Date()
					' The annoyingly bad solution for those of you running IIS3
					If Len(Request.QueryString("month")) <> 0 Or Len(Request.QueryString("day")) <> 0 Or Len(Request.QueryString("year")) <> 0 Or Len(Request.QueryString("date")) <> 0 Then
						Response.Write "<div id='saknas'>Det valda datumet är inte ett gilltigt datum!</div>"
					End If
				End If
			End If
			
			'Now we've got the date.  Now get Days in the choosen month and the day of the week it starts on.
			iDIM = GetDaysInMonth(Month(dDate), Year(dDate))
			iDOW = GetWeekdayMonthStartsOn(dDate)
			
			%>
			
			<table id="kalender_tabell">
				<tr>
					<td id="kalender_pil_vanster"><a href="./index.asp?do=blogg&amp;date=<%= SubtractOneMonth(dDate) %>">&lt;&lt;</a></td>
					<td id="kalender_aktuellt_datum" colspan="5"><%= MonthName(Month(dDate)) & "  " & Year(dDate) %></td>
					<td id="kalender_pil_hoger"><a href="./index.asp?do=blogg&amp;date=<%= AddOneMonth(dDate) %>">&gt;&gt;</a></td>
				</tr>
				<tr id="kalender_dagar">
					<td class="cell_storlek">Sö</td>
					<td class="cell_storlek">Mo</td>
					<td class="cell_storlek">Ti</td>
					<td class="cell_storlek">On</td>
					<td class="cell_storlek">To</td>
					<td class="cell_storlek">Fr</td>
					<td class="cell_storlek">Lö</td>
				</tr>
			<%
			' Write spacer cells at beginning of first row if month doesn't start on a Sunday.
			If iDOW <> 1 Then
				Response.Write vbTab & "<tr>" & vbCrLf
				iPosition = 1
				Do While iPosition < iDOW
					Response.Write vbTab & vbTab & "<td>&nbsp;</td>" & vbCrLf
					iPosition = iPosition + 1
				Loop
			End If
			
			' Write days of month in proper day slots
			iCurrent = 1
			iPosition = iDOW
			Do While iCurrent <= iDIM
				' If we're at the begginning of a row then write TR
				If iPosition = 1 Then
					Response.Write vbTab & "<tr>" & vbCrLf
				End If
				
				' If the day we're writing is the selected day then highlight it somehow.
				If iCurrent = Day(dDate) Then
					Response.Write vbTab & vbTab & "<td id='kalender_markeratdatum'>" & iCurrent & "</td>" & vbCrLf
				Else
					Response.Write vbTab & vbTab & "<td class='kalender_ejmarkeratdatum'><a href=""./index.asp?do=blogg&amp;date=" & Month(dDate) & "-" & iCurrent & "-" & Year(dDate) & """>" & iCurrent & "</a></td>" & vbCrLf
				End If
				
				' If we're at the endof a row then write /TR
				If iPosition = 7 Then
					Response.Write vbTab & "</tr>" & vbCrLf
					iPosition = 0
				End If
				
				' Increment variables
				iCurrent = iCurrent + 1
				iPosition = iPosition + 1
			Loop
			
			' Write spacer cells at end of last row if month doesn't end on a Saturday.
			If iPosition <> 1 Then
				Do While iPosition <= 7
					Response.Write vbTab & vbTab & "<td class='kalender_ejmarkeratdatum'></td>" & vbCrLf
					iPosition = iPosition + 1
				Loop
				Response.Write vbTab & "</tr>" & vbCrLf
			End If
```

 

När man trycker på ett datum så får det formatet 1-31-2006.

Hur löser man så att posten som är skriven då hämtas?
SQL satsen jag har är:

```
SELECT TOP 4 blogg.bloggID, blogg.bloggkatID, blogg.bloggRubrik, blogg.bloggMeddelande, blogg.bloggDatum, blogg_kategorier.bkatID, blogg_kategorier.bkatNamn FROM blogg_kategorier INNER JOIN blogg ON blogg_kategorier.bkatID = blogg.bloggkatID WHERE bloggDatum = ?????
```

 

Tacksam för all hjälp jag kan få   ;)

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

## #2 — @nders, 2007-01-12T21:03Z

> När man trycker på ett datum så får det formatet 1-31-2006.

Till att börja med, se till att skicka ett datum av ett vettigt datumformat, dvs åååå-mm-dd. Sedan plockar du in det i SQL-frågan med request.

```
strSQL = " ...... WHERE bloggDatum = #" & Request.Querystring("date") & "#"
```

Om du använder någon databas som inte heter Access (jag bara antog, eftersom du inte skriver vad du använder), så får du använda apostrofer istället runt datumet.

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

## #3 — Vinnaren, 2007-01-14T11:56Z

ok, har nu byggt om den till datumförmatet 2007-1-14.

Men jag får inte den att hämta en post när man trycker på ett datum då jag vet att det finns ett inlägg. anv. Access, datumformatet där är 2006-12-31 17:35:14.

Vad kan det vara som är fel?  x(

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

## #4 — @nders, 2007-01-14T12:48Z

Innehåller fältet i tabellen både datum och tid så får du använda datumfunktioner som year(), month() och day() i din sql-fråga för att bara hämta på rätt datum.

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

## #5 — Vinnaren, 2007-01-14T14:30Z

har försökt med följande:

```
WHERE Year(bloggDatum) = Year("&Request.Querystring("date")&") AND Month(bloggDatum) = Month("&Request.Querystring("date")&") AND Day(bloggDatum) = Day("&Request.Querystring("date")&")
```

 

men den hittar fortfarande inget  :OO

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

## #6 — emission, 2007-01-14T15:44Z

Du kan också...

```
WHERE bloggDatum BETWEEN #" & datumet & " 00:00:00# AND #" & datumet & " 23:59:59#
```

...och kom ihåg att skydda dig mot sql-injection.

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

## #7 — emission, 2007-01-14T15:47Z

> **Vinnaren skrev:**
>
> har försökt med följande:
>
>
> ```
> WHERE Year(bloggDatum) = Year("&Request.Querystring("date")&") AND Month(bloggDatum) = Month("&Request.Querystring("date")&") AND Day(bloggDatum) = Day("&Request.Querystring("date")&")
> ```
>
>  
> 
> men den hittar fortfarande inget  :OO

Du har använt funktionerna lite tokigt. Flytta ut Year etc. till VBScript..

```
Year(bloggDatum)=" & Year(datumet) & " AND ......
```

...eller datumet in till SQL:en

```
Year(bloggDatum)=Year(#" & datumet & "#) AND ......
```

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

## #8 — Vinnaren, 2007-01-14T16:08Z

tack, nu fungerar det. Nu undrar jag om det går att göra så bara de datumen som finns i databasen är markerade på något sätt (är klickbara), nu är alla klickbara. Hur löser jag detta??.

koden till kalendern är:

```

			Function GetDaysInMonth(iMonth, iYear)
				Dim dTemp
				dTemp = DateAdd("d", -1, DateSerial(iYear, iMonth + 1, 1))
				GetDaysInMonth = Day(dTemp)
			End Function

			Function GetWeekdayMonthStartsOn(dAnyDayInTheMonth)
				Dim dTemp
				dTemp = DateAdd("d", -(Day(dAnyDayInTheMonth) - 1), dAnyDayInTheMonth)
				GetWeekdayMonthStartsOn = WeekDay(dTemp)
			End Function
			
			Function SubtractOneMonth(dDate)
				SubtractOneMonth = DateAdd("m", -1, dDate)
			End Function
			
			Function AddOneMonth(dDate)
				AddOneMonth = DateAdd("m", 1, dDate)
			End Function
			' ***End Function Declaration***
			
			
			Dim dDate     ' Date we're displaying calendar for
			Dim iDIM      ' Days In Month
			Dim iDOW      ' Day Of Week that month starts on
			Dim iCurrent  ' Variable we use to hold current day of month as we write table
			Dim iPosition ' Variable we use to hold current position in table
			
			
			' Get selected date.  There are two ways to do this.
			' First check if we were passed a full date in RQS("date").
			' If so use it, if not look for seperate variables, putting them togeter into a date.
			' Lastly check if the date is valid...if not use today
			If IsDate(Request.QueryString("date")) Then
				dDate = CDate(Request.QueryString("date"))
			Else
				If IsDate(Request.QueryString("year") & "-" & Request.QueryString("month") & "-" & Request.QueryString("day")) Then
					dDate = CDate(Request.QueryString("year") & "-" & Request.QueryString("month") & "-" & Request.QueryString("day"))
				Else
					dDate = Date()
					' The annoyingly bad solution for those of you running IIS3
					If Len(Request.QueryString("year")) <> 0 Or Len(Request.QueryString("month")) <> 0 Or Len(Request.QueryString("day")) <> 0 Or Len(Request.QueryString("date")) <> 0 Then
						Response.Write "<div id='saknas'>Det valda datumet är inte ett gilltigt datum!</div>"
					End If
				End If
			End If
			
			'Now we've got the date.  Now get Days in the choosen month and the day of the week it starts on.
			iDIM = GetDaysInMonth(Month(dDate), Year(dDate))
			iDOW = GetWeekdayMonthStartsOn(dDate)
			
			%>
			
			<table id="kalender_tabell">
				<tr>
					<td id="kalender_pil_vanster"><a href="./index.asp?do=blogg&amp;date=<%= SubtractOneMonth(dDate) %>">&lt;&lt;</a></td>
					<td id="kalender_aktuellt_datum" colspan="5"><%= MonthName(Month(dDate)) & "  " & Year(dDate) %></td>
					<td id="kalender_pil_hoger"><a href="./index.asp?do=blogg&amp;date=<%= AddOneMonth(dDate) %>">&gt;&gt;</a></td>
				</tr>
				<tr id="kalender_dagar">
					<td class="cell_storlek">Sö</td>
					<td class="cell_storlek">Mo</td>
					<td class="cell_storlek">Ti</td>
					<td class="cell_storlek">On</td>
					<td class="cell_storlek">To</td>
					<td class="cell_storlek">Fr</td>
					<td class="cell_storlek">Lö</td>
				</tr>
			<%
			' Write spacer cells at beginning of first row if month doesn't start on a Sunday.
			If iDOW <> 1 Then
				Response.Write vbTab & "<tr>" & vbCrLf
				iPosition = 1
				Do While iPosition < iDOW
					Response.Write vbTab & vbTab & "<td>&nbsp;</td>" & vbCrLf
					iPosition = iPosition + 1
				Loop
			End If
			
			' Write days of month in proper day slots
			iCurrent = 1
			iPosition = iDOW
			Do While iCurrent <= iDIM
				' If we're at the begginning of a row then write TR
				If iPosition = 1 Then
					Response.Write vbTab & "<tr>" & vbCrLf
				End If
				
				' If the day we're writing is the selected day then highlight it somehow.
				If iCurrent = Day(dDate) Then
					Response.Write vbTab & vbTab & "<td id='kalender_markeratdatum'>" & iCurrent & "</td>" & vbCrLf
				Else
					Response.Write vbTab & vbTab & "<td class='kalender_ejmarkeratdatum'><a href=""./index.asp?do=blogg&amp;date=" & Year(dDate) & "-" & Month(dDate) & "-" & iCurrent & """>" & iCurrent & "</a></td>" & vbCrLf
				End If
				
				' If we're at the endof a row then write /TR
				If iPosition = 7 Then
					Response.Write vbTab & "</tr>" & vbCrLf
					iPosition = 0
				End If
				
				' Increment variables
				iCurrent = iCurrent + 1
				iPosition = iPosition + 1
			Loop
			
			' Write spacer cells at end of last row if month doesn't end on a Saturday.
			If iPosition <> 1 Then
				Do While iPosition <= 7
					Response.Write vbTab & vbTab & "<td class='kalender_ejmarkeratdatum'></td>" & vbCrLf
					iPosition = iPosition + 1
				Loop
				Response.Write vbTab & "</tr>" & vbCrLf
			End If
			%>
			</table>
```

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/155919-koppla-kalender-till-databas
