Avatar billede mortenbock Nybegynder
01. marts 2006 - 15:29 Der er 3 kommentarer og
1 løsning

Udskriv kalender

Hej eksperter

Jeg skal have ASP til at udskrive en kalender i en tabel. Der er én række pr. måned, så det ser nogenlunde sådan her ud:

<tr><td>December 2006</td><td>1</td><td>2</td> ......
<tr><td>Januar 2007</td><td>1</td><td>2</td> ......
<tr><td>Februar 2007</td><td>1</td><td>2</td> ......

Ved hver dag skal der så være mulighed for at teste om datoen er i en database, og i det tilfælde sætte et kryds.

Jeg forestiller mig noget a'la denne pseudo kode:

for i 0 to 5 //Udskriv 6 måneder
<tr><td> MonthName(DateAdd("m", i, Date)) </td>
  for j 1 to 31
    <td>j</td> //Her skal så testes om datoen findes i databasen
  next
</tr>
next

Hvordan gør jeg lige det?
Avatar billede Slettet bruger
01. marts 2006 - 17:32 #1
umiddelbart ser jeg to metoder...
- du kan lave en function som tjekker i databasen...
- eller du kan lave en ny "select-sætning" for hver dato...
Men skal dit ovenstående script ikke snarere se således ud?:
<%
for i=0  to 5
%>
<tr><td> <%="" & MonthName(DateAdd("m",i,Date)) & ""%> </td>
<%
for j=1 to 31
%>
<td><%="" & j & ""%></td>
<%
next
%>
</tr>
<%
next
%>

- om ikke andet så kommer der lige en lille function her:
function finddato(streng)
finddato = streng
if isdate(finddato) then
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("DinDataBase.mdb")
strSQL = "select * from kalender WHERE dato='" & date(finddato) & "'"
set rs = Conn.execute(strSQL)
if NOT rs.EOF then
finddato = "KRYDS SÆTTES!"
else
finddato = "INTET KRYDS!"
end if
rs.close
set rs=nothing
Conn.close
set Conn=nothing
else
finddato = ""
end if
end function

- og så kunne dit kalde for eksempel se således ud:
<%="" & finddato(j & "-" & i & "-2006") & ""%>

I denne function skal du nok lige ændre navnet på databasen samt navnet på tabellen og navnet på kollonnnen vi skal kigge i...
det er også forudsat at kollonnen vil kigger i har datatypen "Dato og klokkeslæt"...

\Dan
Avatar billede Slettet bruger
01. marts 2006 - 17:44 #2
SORRY! Den function skal se lidt anderledes ud, for at være bedre:
<%
function finddato(streng)
finddato = streng
if isdate(finddato) then
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("DinDataBase.mdb")
strSQL = "select * from kalender WHERE day(dato)=" & day(finddato) & " AND month(dato)=" & month(finddato) & " AND year(dato)=" & year(finddato) & ""
set rs = Conn.execute(strSQL)
if NOT rs.EOF then
finddato = "KRYDS SÆTTES!"
else
finddato = "INTET KRYDS!"
end if
rs.close
set rs=nothing
Conn.close
set Conn=nothing
else
finddato = ""
end if
end function
%>

\Dan
Avatar billede mortenbock Nybegynder
27. september 2006 - 20:19 #3
smid et svar
Avatar billede Slettet bruger
08. november 2006 - 16:18 #4
OK! Her et svar...

\Dan
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