Avatar billede mvk Nybegynder
06. september 2004 - 14:48 Der er 28 kommentarer og
1 løsning

Hjælp til ændring af kalender-kode

har denne kalender: http://www.because.dk/kalender.asp
men vil gerne have at den kun linker fra de datoer hvor der er et arrangement fra databasen. datoen er fra min database defineret ved 3 felter: 'date', 'maaned' og 'aar'. er der nogen som kan hjælpe ?

koden:
<% Session.LCID = 1030 %>
<html>
<head>
<title>Kalender</title>
<link href="include/because.css" rel="stylesheet" type="text/css">
</head>
<body>
<%
dtmDate = Request("date")
dtmToday = Date

If dtmDate = "" Then
dtmDate = Date
Else
dtmDate = CDate(dtmDate)
End if

intYear = Year(dtmDate)
strMonth = MonthName(Month(dtmDate))
intDayOfMonth = Day(dtmDate)
dtmFirstDate = DateAdd("d", (-intDayOfMonth)+1, dtmDate)
intFirstDay = Weekday(dtmFirstDate, vbMonday)
%>
<div align="center">
  <table cellspacing="0" cellpadding="2" border="0">
<tr align="center">
<td colspan="7" class="12BlackBold"><%=UCase(strMonth)%>&nbsp;<%=intYear%></td>
</tr>
<tr class="10BlackBold">
<td align="center" width="30" bordercolor="#000000">Man</td>
<td align="center" width="30" bordercolor="#000000">Tir</td>
<td align="center" width="30" bordercolor="#000000">Ons</td>
<td align="center" width="30" bordercolor="#000000">Tor</td>
<td align="center" width="30" bordercolor="#000000">Fre</td>
<td align="center" width="30" bordercolor="#000000">Lør</td>
<td align="center" width="30" bordercolor="#000000">Søn</td>
</tr>
<%
For y = 1 to 6
If blnLast <> True Then
Response.Write "<tr>"
For x = 1 to 7
Response.Write "<td align=center class=10BlackNormal><a href=kalender.asp?date=" & DateAdd("d", intLoopDay-intFirstDay, dtmFirstDate)+1 & ">"
intLoopDay = intLoopDay + 1
If intLoopDay >= intFirstDay Then
dtmCurDate = DateAdd("d", intLoopDay-intFirstDay, dtmFirstDate)
If Month(dtmCurDate) = Month(dtmFirstDate) Then
If dtmCurDate = dtmToday Then
Response.Write ""
End If
Response.Write Day(dtmCurDate)
Response.Write "</td>"
blnLast = False
Else
Response.Write "</td>"
blnLast = True
End If
Else
Response.Write "</td>"
blnLast = True
End if
Response.Write "</a>"
Next
End If
Next
Response.Write "</td></tr>"
%>
<tr>
<td colspan="3"><a href="kalender.asp?date=<%=DateAdd("m",-1,dtmFirstDate)%>">Forrige</a></td>
<td>&nbsp;</td>
<td colspan="3" align="right"><a href="kalender.asp?date=<%=DateAdd("m",1,dtmFirstDate)%>">Næste</a></td>
</tr>
</table>
</center></div>
</body>
</html>
Avatar billede phuc69 Juniormester
06. september 2004 - 15:14 #1
For x = 1 to 7

Her kan du jo lave en if sætning der spørger om der ligger noget i din database på denne dato

Response.Write "<td align=center class=10BlackNormal><a href=kalender.asp?date=" & DateAdd("d", intLoopDay-intFirstDay, dtmFirstDate)+1 & ">"

Hvis ja så link til en side hvor man kan se hvad det er
Hvis nej et link til en side hvor man kan lave input
Avatar billede eagleeye Praktikant
06. september 2004 - 15:15 #2
Prøv at rette:

Response.Write "<td align=center class=10BlackNormal><a href=kalender.asp?date=" & DateAdd("d", intLoopDay-intFirstDay, dtmFirstDate)+1 & ">"

Til dette:

dato=DateAdd("d", intLoopDay-intFirstDay, dtmFirstDate)+1
set rs=conn.execute("select * from kalender where dag=" & day(dato) & " and maaned = " & month(dato) & " AND aar = " & year(dato)
if not rs.EOF then
  Response.Write "<td align=center class=10BlackNormal><a href=kalender.asp?date=" & dato & ">"
else
  Response.Write "<td align=center class=10BlackNormal>" & dato
end if

Samt denne:
Response.Write "</a>"

til:
if not rs.EOF then Response.Write "</a>"
Avatar billede eagleeye Praktikant
06. september 2004 - 15:16 #3
ok SQL sætning skal være, såan her antager date indeholder dagen:

set rs=conn.execute("select * from kalender where [date]=" & day(dato) & " and maaned = " & month(dato) & " AND aar = " & year(dato)
Avatar billede eagleeye Praktikant
06. september 2004 - 15:16 #4
Du skal så havde en connection til din database som hedder conn
Avatar billede mvk Nybegynder
07. september 2004 - 10:02 #5
Microsoft VBScript compilation error '800a03ee'

Expected ')'

/kalender.asp, line 46

set rs=conn.execute("select * from kalender where [date]=" & day(dato) & " and maaned = " & month(dato) & " AND aar = " & year(dato)
------------------------------------------------------------------------------------------------------------------------------------^

jeg har bare sat en ekstra ) ind

min kode ser sådan ud:

<%@LANGUAGE="VBSCRIPT"%>
<!--#include file="Connections/because.asp" -->
<% Session.LCID = 1030 %>
<html>
<head>
<title>Kalender</title>
<link href="include/because.css" rel="stylesheet" type="text/css">
</head>
<body>
<%
dtmDate = Request("date")
dtmToday = Date

If dtmDate = "" Then
dtmDate = Date
Else
dtmDate = CDate(dtmDate)
End if

intYear = Year(dtmDate)
strMonth = MonthName(Month(dtmDate))
intDayOfMonth = Day(dtmDate)
dtmFirstDate = DateAdd("d", (-intDayOfMonth)+1, dtmDate)
intFirstDay = Weekday(dtmFirstDate, vbMonday)
%>
<div align="center">
  <table cellspacing="0" cellpadding="2" border="0">
<tr align="center">
<td colspan="7" class="12BlackBold"><%=UCase(strMonth)%>&nbsp;<%=intYear%></td>
</tr>
<tr class="10BlackBold">
<td align="center" width="30" bordercolor="#000000">Man</td>
<td align="center" width="30" bordercolor="#000000">Tir</td>
<td align="center" width="30" bordercolor="#000000">Ons</td>
<td align="center" width="30" bordercolor="#000000">Tor</td>
<td align="center" width="30" bordercolor="#000000">Fre</td>
<td align="center" width="30" bordercolor="#000000">Lør</td>
<td align="center" width="30" bordercolor="#000000">Søn</td>
</tr>
<%
For y = 1 to 6
If blnLast <> True Then
Response.Write "<tr>"
For x = 1 to 7
dato=DateAdd("d", intLoopDay-intFirstDay, dtmFirstDate)+1
set rs=conn.execute("select * from kalender where [date]=" & day(dato) & " and maaned = " & month(dato) & " AND aar = " & year(dato))


jeg connecter til databasen via: <!--#include file="Connections/because.asp" --> som ser sådan ud:

<%
' FileName="Connection_ado_conn_string.htm"
' Type="ADO"
' DesigntimeType="ADO"
' HTTP="true"
' Catalog=""
' Schema=""
Dim MM_because_STRING
MM_because_STRING = "Data Source=d:\\home\\becausedk\\db\db.mdb;Provider=Microsoft.Jet.OLEDB.4.0;"
%>
Avatar billede mvk Nybegynder
07. september 2004 - 10:48 #6
jeg har også prøvet som nedenstående men får fejl. hvor kommer (dato) fra i SQL'en ? og skal jeg ikke også bruge mit 'Dato' felt fra databasen et sted ? (undskyld mine dumme spørgsmål - jeg kan bare ikke gennemskue sql'en :)


<%@LANGUAGE="VBSCRIPT"%>
<!--#include file="Connections/because.asp" -->
<%
Dim rsKalender
Dim rsKalender_numRows

Set rsKalender = Server.CreateObject("ADODB.Recordset")
rsKalender.ActiveConnection = MM_because_STRING
rsKalender.Source = "select * from kalender where [date]=" & day(dato) & " AND Maaned = " & month(dato) & " AND Aar = " & year(dato) & ""
rsKalender.CursorType = 0
rsKalender.CursorLocation = 2
rsKalender.LockType = 1
rsKalender.Open()

rsKalender_numRows = 0
%>
<% Session.LCID = 1030 %>
<html>
<head>
<title>Kalender</title>
<link href="include/because.css" rel="stylesheet" type="text/css">
</head>
<body>
<%
dtmDate = Request("date")
dtmToday = Date

If dtmDate = "" Then
dtmDate = Date
Else
dtmDate = CDate(dtmDate)
End if

intYear = Year(dtmDate)
strMonth = MonthName(Month(dtmDate))
intDayOfMonth = Day(dtmDate)
dtmFirstDate = DateAdd("d", (-intDayOfMonth)+1, dtmDate)
intFirstDay = Weekday(dtmFirstDate, vbMonday)
%>
<div align="center">
  <table cellspacing="0" cellpadding="2" border="0">
<tr align="center">
<td colspan="7" class="12BlackBold"><%=UCase(strMonth)%>&nbsp;<%=intYear%></td>
</tr>
<tr class="10BlackBold">
<td align="center" width="30" bordercolor="#000000">Man</td>
<td align="center" width="30" bordercolor="#000000">Tir</td>
<td align="center" width="30" bordercolor="#000000">Ons</td>
<td align="center" width="30" bordercolor="#000000">Tor</td>
<td align="center" width="30" bordercolor="#000000">Fre</td>
<td align="center" width="30" bordercolor="#000000">Lør</td>
<td align="center" width="30" bordercolor="#000000">Søn</td>
</tr>
<%
For y = 1 to 6
If blnLast <> True Then
Response.Write "<tr>"
For x = 1 to 7
dato=DateAdd("d", intLoopDay-intFirstDay, dtmFirstDate)+1
if not rsKalender.EOF then
  Response.Write "<td align=center class=10BlackNormal><a href=kalender.asp?date=" & dato & ">"
else
  Response.Write "<td align=center class=10BlackNormal>" & dato
end if
intLoopDay = intLoopDay + 1
If intLoopDay >= intFirstDay Then
dtmCurDate = DateAdd("d", intLoopDay-intFirstDay, dtmFirstDate)
If Month(dtmCurDate) = Month(dtmFirstDate) Then
If dtmCurDate = dtmToday Then
Response.Write ""
End If
Response.Write Day(dtmCurDate)
Response.Write "</td>"
blnLast = False
Else
Response.Write "</td>"
blnLast = True
End If
Else
Response.Write "</td>"
blnLast = True
End if
if not rsKalender.EOF then Response.Write "</a>"
Next
End If
Next
Response.Write "</td></tr>"
%>
<tr>
<td colspan="3"><a href="kalender.asp?date=<%=DateAdd("m",-1,dtmFirstDate)%>">Forrige</a></td>
<td>&nbsp;</td>
<td colspan="3" align="right"><a href="kalender.asp?date=<%=DateAdd("m",1,dtmFirstDate)%>">Næste</a></td>
</tr>
</table>
</center></div>
</body>
</html>
<%
rsKalender.Close()
Set rsKalender = Nothing
%>
Avatar billede eagleeye Praktikant
07. september 2004 - 11:12 #7
ok der mangler lige lidt i denne:
set rs=conn.execute("select * from kalender where [date]=" & day(dato) & " and maaned = " & month(dato) & " AND aar = " & year(dato)


Sådan her:

set rs=conn.execute("select * from kalender where [date]=" & day(dato) & " and maaned = " & month(dato) & " AND aar = " & year(dato))
Avatar billede eagleeye Praktikant
07. september 2004 - 11:14 #8
nå den havde du løst :)

Du har heller ikke sat det ind som jeg forslog.
Avatar billede eagleeye Praktikant
07. september 2004 - 11:15 #9
Du skal indsætte det sådan som jeg har vist så den tjekker hver dag om der er noget i databasen.
Avatar billede eagleeye Praktikant
07. september 2004 - 11:21 #10
Prøv at slette disse linjer:


rsKalender.ActiveConnection = MM_because_STRING
rsKalender.Source = "select * from kalender where [date]=" & day(dato) & " AND Maaned = " & month(dato) & " AND Aar = " & year(dato) & ""
rsKalender.CursorType = 0
rsKalender.CursorLocation = 2
rsKalender.LockType = 1
rsKalender.Open()


Prøv at rette:

For x = 1 to 7
dato=DateAdd("d", intLoopDay-intFirstDay, dtmFirstDate)+1
if not rsKalender.EOF then
  Response.Write "<td align=center class=10BlackNormal><a href=kalender.asp?date=" & dato & ">"
else
  Response.Write "<td align=center class=10BlackNormal>" & dato
end if


Til dette:

For x = 1 to 7
'HER UDREGNRES DATO
dato=DateAdd("d", intLoopDay-intFirstDay, dtmFirstDate)+1
rsKalender.Open "select * from kalender where [date]=" & day(dato) & " AND Maaned = " & month(dato) & " AND Aar = " & year(dato) & "", MM_because_STRING, 1
if not rsKalender.EOF then
  Response.Write "<td align=center class=10BlackNormal><a href=kalender.asp?date=" & dato & ">"
else
  Response.Write "<td align=center class=10BlackNormal>" & dato
end if



Samt rette disse:
if not rsKalender.EOF then Response.Write "</a>"
Next

Til dette:

if not rsKalender.EOF then Response.Write "</a>"
rsKalender.Close
Next



SQL sætningen er ikke så svære igen. Du har gemt datoen i 3 felter date, maaned og aar så den SQL sætnigner tager datoen som skal vise og deler op i dag, måned, år og sammmenligner med databasen :)
Avatar billede mvk Nybegynder
07. september 2004 - 15:08 #11
Microsoft JET Database Engine error '80040e10'
No value given for one or more required parameters.

/kalender.asp, line 54

linie 54: rsKalender.Open "select * from kalender where [date]=" & day(dato) & " AND Maaned = " & month(dato) & " AND Aar = " & year(dato) & "", MM_because_STRING, 1


i min database kalder jeg:
Dato
Maaned
Aar

dato med O og ikke engelsk e - har det betydning for koden ?
Avatar billede mvk Nybegynder
07. september 2004 - 15:09 #12
undskyld dato kalder jeg 'Dag'
Avatar billede mvk Nybegynder
07. september 2004 - 15:26 #13
skal min datatype for felterne dag, maaned, aar været noget specielt ?
som det er nu er de sat til tekst
jeg bruger en access database
Avatar billede eagleeye Praktikant
07. september 2004 - 16:56 #14
Ok, som SQL sætnigen er lige nu er det til en tal kolonne.

Så kan SQL sætningen bare rettes til at have ' omkring. Står der så "09" eller "9" for september?

rsKalender.Open "select * from kalender where dato='" & day(dato) & "' AND Maaned = '" & month(dato) & "' AND Aar = '" & year(dato) & "'", MM_because_STRING, 1
Avatar billede mvk Nybegynder
07. september 2004 - 17:17 #15
:)
nu kan man se noget:
http://www.because.dk/kalender.asp

kigge på det senere, nu viser den også datoen
Avatar billede eagleeye Praktikant
07. september 2004 - 17:19 #16
Det skulle hvade været dagen :)

Så ret enne if sætning:

if not rsKalender.EOF then
  Response.Write "<td align=center class=10BlackNormal><a href=kalender.asp?date=" & dato & ">"
else
  Response.Write "<td align=center class=10BlackNormal>" & dato
end if


Til dette:


if not rsKalender.EOF then
  Response.Write "<td align=center class=10BlackNormal><a href=kalender.asp?date=" & day(dato) & ">"
else
  Response.Write "<td align=center class=10BlackNormal>" & day(dato)
end if
Avatar billede mvk Nybegynder
08. september 2004 - 08:56 #17
tak eagle

nu skriver den datoen 12 gange. prøv og se linket. er det ikke pga denne linie: Response.Write Day(dtmCurDate) ?
+ den tager dagene med for sidste måned 27, 28, 29, 30 august

i databasen har jeg et arrangement dag:15 maaned:09 aar:2004
vil man så kunne klikke på den 15. september ?
Avatar billede mvk Nybegynder
08. september 2004 - 09:06 #18
her kan man oprette arrangementer: http://www.because.dk/admin/kalender.asp
Avatar billede eagleeye Praktikant
08. september 2004 - 09:22 #19
Du har jo helt ret :)

Den if sætning jeg har lavet skal slet ikke udskrive datoen, prøv at rette den fra:

if not rsKalender.EOF then
  Response.Write "<td align=center class=10BlackNormal><a href=kalender.asp?date=" & day(dato) & ">"
else
  Response.Write "<td align=center class=10BlackNormal>" & day(dato)
end if

Til dette:

if not rsKalender.EOF then
  Response.Write "<td align=center class=10BlackNormal><a href=kalender.asp?date=" & dato & ">"
end if
Avatar billede eagleeye Praktikant
08. september 2004 - 09:22 #20
Datoen bliver korrekt udskrevet i den linje: Response.Write Day(dtmCurDate)
Avatar billede mvk Nybegynder
08. september 2004 - 09:29 #21
jeg har rettet måned til 9 i stedet for 09. så sker der noget - datoerne jeg har oprettet arrangement til vises ikke
Avatar billede mvk Nybegynder
08. september 2004 - 09:33 #22
undskyld det gør de ikke - det var fordi jeg havde prøvet og tage "Response.Write Day(dtmCurDate)" ud.
Avatar billede mvk Nybegynder
08. september 2004 - 09:51 #23
http://www.because.dk/kalender.asp
den smider datoerne op over tabellen nu
Avatar billede eagleeye Praktikant
08. september 2004 - 10:44 #24
Du skal beholde Response.Write Day(dtmCurDate)  da den skriver tallet inde i tabelen og rette if sætningen som vist 08/09-2004 09:22:03  så den ikke også udskriver tallet.
Avatar billede mvk Nybegynder
08. september 2004 - 10:55 #25
sådan tror jeg også det er nu. komplet kode:

<%@LANGUAGE="VBSCRIPT"%>
<!--#include file="Connections/because.asp" -->
<%
Dim rsKalender
Dim rsKalender_numRows
Set rsKalender = Server.CreateObject("ADODB.Recordset")
rsKalender_numRows = 0
%>
<% Session.LCID = 1030 %>
<html>
<head>
<title>Kalender</title>
<link href="include/kalender.css" rel="stylesheet" type="text/css">
</head>
<body>
<%
dtmDate = Request("date")
dtmToday = Date

If dtmDate = "" Then
dtmDate = Date
Else
dtmDate = CDate(dtmDate)
End if

intYear = Year(dtmDate)
strMonth = MonthName(Month(dtmDate))
intDayOfMonth = Day(dtmDate)
dtmFirstDate = DateAdd("d", (-intDayOfMonth)+1, dtmDate)
intFirstDay = Weekday(dtmFirstDate, vbMonday)
%>
<div align="center">
  <table cellspacing="0" cellpadding="2" border="0">
<tr align="center">
<td colspan="7" class="headline"><%=UCase(strMonth)%>&nbsp;<%=intYear%></td>
</tr>
<tr class="headline">
<td align="center" width="30" bordercolor="#000000">Man</td>
<td align="center" width="30" bordercolor="#000000">Tir</td>
<td align="center" width="30" bordercolor="#000000">Ons</td>
<td align="center" width="30" bordercolor="#000000">Tor</td>
<td align="center" width="30" bordercolor="#000000">Fre</td>
<td align="center" width="30" bordercolor="#000000">Lør</td>
<td align="center" width="30" bordercolor="#000000">Søn</td>
</tr>
<%
For y = 1 to 6
If blnLast <> True Then
Response.Write "<tr>"

For x = 1 to 7
'HER UDREGNRES DATO
dato=DateAdd("d", intLoopDay-intFirstDay, dtmFirstDate)+1
rsKalender.Open "select * from kalender where dag='" & day(dato) & "' AND Maaned = '" & month(dato) & "' AND Aar = '" & year(dato) & "'", MM_because_STRING, 1
'rsKalender.Open "SELECT * FROM kalender WHERE Dag=" & Day(dato) & " AND Maaned=" & Month(dato) & " AND Aar=" & Year(dato) & "", MM_because_STRING, 1
if not rsKalender.EOF then
  Response.Write "<td align=center><a class=normal href=kalender_specifik.asp?IDkalender=" & (rsKalender.Fields.Item("IDkalender").Value) & ">"
end if

intLoopDay = intLoopDay + 1
If intLoopDay >= intFirstDay Then
dtmCurDate = DateAdd("d", intLoopDay-intFirstDay, dtmFirstDate)
If Month(dtmCurDate) = Month(dtmFirstDate) Then
If dtmCurDate = dtmToday Then
Response.Write ""
End If
Response.Write Day(dtmCurDate)
Response.Write "</td>"
blnLast = False
Else
Response.Write "</td>"
blnLast = True
End If
Else
Response.Write "</td>"
blnLast = True
End if
if not rsKalender.EOF then Response.Write "</a>"
rsKalender.Close
Next
End If
Next
Response.Write "</td></tr>"
%>
<tr>
<td colspan="3"><a href="kalender.asp?date=<%=DateAdd("m",-1,dtmFirstDate)%>" class="headline">Forrige</a></td>
<td>&nbsp;</td>
<td colspan="3" align="right"><a href="kalender.asp?date=<%=DateAdd("m",1,dtmFirstDate)%>" class="headline">Næste</a></td>
</tr>
</table>
</center></div>
</body>
</html>
Avatar billede mvk Nybegynder
08. september 2004 - 11:44 #26
hvis jeg smider: else
  Response.Write "<td align=center class=10BlackNormal>" & day(dato)
på så virker det, men så skriver den datoerne 2 gange
Avatar billede mvk Nybegynder
08. september 2004 - 12:10 #27
ahhh.

if not rsKalender.EOF then
  Response.Write "<td align=center><a class=normal href=kalender_specifik.asp?IDkalender=" & (rsKalender.Fields.Item("IDkalender").Value) & ">"
else
  Response.Write "<td align=center class=normal>"
end if

så virker det :)
Avatar billede mvk Nybegynder
08. september 2004 - 12:43 #28
hvis jeg nu vil have et parameter mere med kan jeg så bare ikke gøre sådan:

rsKalender.Open "select * from kalender where dag='" & day(dato) & "' AND Maaned = '" & month(dato) & "' AND Aar = '" & year(dato) & "' AND IDkalender = '" & Request.QueryString("IDkalender") & "'", MM_because_STRING, 1
Avatar billede mvk Nybegynder
08. september 2004 - 12:43 #29
jeg lukker og slukker. tusinde tak for hjælpen :)
.
hvis du har tid må du gerne lure på min: 08/09-2004 12:43:02
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
Kurser inden for grundlæggende programmering

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