Avatar billede fun22 Nybegynder
30. juli 2005 - 11:43 Der er 26 kommentarer og
1 løsning

Der mangler et LOOP men jeg ved ikke hvor?

Hej

Jeg har det her kalender system som jeg er ved at udbygge. Det henter fra en database og hvis der er en dato i databasen for den pågældene måned gør den en ting ellers noget andet.

Men den tager kun den første post i databasen.

I kan se det her: http://bs.jtponline.dk Kalenderen er til højre.
Der er to datoer grønne. Men det er kun den første post i databasen. Den tager ikke alle post'ne..

Her er koden:

<br><font color="#000080"><b>Udlejning af materialegården</b></font>
<%
dtmDate = Request.QueryString("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" valign="top" style="border: 1px solid rgb(0,0,0)">
<tr>
<td colspan="7" align="center" bgcolor="#000080"><b><font color=#ffffff><%=Ucase(left((strMonth),1))&Mid(strMonth,2)%></font></b></td>
</tr>
<tr>
<td align="center">Man</td>
<td align="center">Tir</td>
<td align="center">Ons</td>
<td align="center">Tor</td>
<td align="center">Fre</td>
<td align="center">Lør</td>
<td align="center">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>"
      intLoopDay = intLoopDay + 1
      If intLoopDay >= intFirstDay Then
        dtmCurDate = DateAdd("d", intLoopDay-intFirstDay, dtmFirstDate)
        If Month(dtmCurDate) = Month(dtmFirstDate) Then
       
          SQL = "SELECT * FROM bs_kalender"
          Set rs = Conn.Execute(SQL)
         
          If NOT(Rs.BOF AND Rs.EOF) Then
         
          start = rs("start")
          slut = rs("slut")
       
          If dtmCurDate = dtmToday Then
            Response.Write "<strong>"
          End If
         
          if rs("godkendt") = "1" then
              if dtmCurDate >= cdate(start) AND dtmCurDate <= cdate(slut) then
              Response.Write "<font color=#00CC00><a href='java script:alert(""Beklager men materielgården er desværre udlejet i den pågældende periode. Kontakt venligst viseværten på 38 87 51 95, hvis du har spørgsmål."")' class=calender2>"&Day(dtmCurDate)&"</a></font>"
              else
              Response.Write "<a href='udlej.asp' class=calender>"&Day(dtmCurDate)&"</a>"
              end if             
          else
              if dtmCurDate >= cdate(start) AND dtmCurDate <= cdate(slut) then
              Response.Write "<font color=#ff0000><a href='java script:alert(""Beklager men materielgården er desværre udlejet i den pågældende periode. Kontakt venligst viseværten på 38 87 51 95, hvis du har spørgsmål."")' class=calender1>"&Day(dtmCurDate)&"</a></font>"
              else
              Response.Write "<a href='udlej.asp' class=calender>"&Day(dtmCurDate)&"</a>"
              end if 
          end if

            else
              Response.Write Day(dtmCurDate)
          end if
       
          Response.Write "</strong></td>"
          blnLast = False
        Else
          Response.Write "-</td>"
          blnLast = True
        End If
      Else
        Response.Write "-</td>"
        blnLast = True
      End if
    Next
  End If
Next
Response.Write "</font></td></tr>"
%>
<tr>
<td bgcolor="#000080" colspan="3"><b>
<font color=#ffffff>
<a href="?date=<%=DateAdd("m",-1,dtmFirstDate)%>">Forrige</a></b></td>
<td bgcolor="#000080">&nbsp;</td>
<td bgcolor="#000080" colspan="3" align="right"><b><a
href="?date=<%=DateAdd("m",1,dtmFirstDate)%>">Næste</a></b>
</font>
</td>
</tr>
</table>
</div>

Er der en der kan se hvor der mangler noget?
Avatar billede hemberg Forsker
30. juli 2005 - 11:55 #1
Hmmm. Er ingen Haj. Men kan ikke se nogen problemer i det du har sendt. Hvordan ser din SQL ud. Er der nogen begrænsninger i den ??
Avatar billede nielle Nybegynder
30. juli 2005 - 12:01 #2
Du aksl have rettet din SQL:

SQL = "SELECT * FROM bs_kalender"

- sådan at den trækker posterne ud fra den pågældende dato:

SQL = "SELECT * FROM bs_kalender WHERE ditDatoFelt = ??"

- her skal ?? så erstates med den dato som svare til den aktuellet dato beregnet ud fra værdierne af y og x (foruden året):

For y = 1 to 6
    ...
        For x = 1 to 7
Avatar billede hemberg Forsker
30. juli 2005 - 12:06 #3
Ja, man kunne jo lukke øjnene op og selv se efter......:-) Troede nok det var noget i den retning...
Avatar billede fun22 Nybegynder
30. juli 2005 - 12:21 #4
nielle >> Jeg har to dato felter. Et felt for hvornår udlejningen starter og når den slutter.. Hvordan får man det til at virke?
Avatar billede nielle Nybegynder
30. juli 2005 - 12:27 #5
Du kan jo f.eks. lave en SQL over denne skabelon:

SELECT * FROM bk_kalender WHERE stattDato<=Date() AND Date()<=slutDato
Avatar billede fun22 Nybegynder
30. juli 2005 - 12:49 #6
nu viser den slet ikke noget.. Jeg har lavet det sådan her:
SQL = "SELECT * FROM bs_kalender WHERE start<="&dtmCurDate&" AND "&dtmCurDate&"<=slut"
Avatar billede nielle Nybegynder
30. juli 2005 - 12:50 #7
Der skal stå nogle helt konkrete datoer i stedet for bare "start" og "slut".
Avatar billede fun22 Nybegynder
30. juli 2005 - 12:57 #8
det gør der også.. i Start står der f.eks. 14-07-2005 og i slut står der 15-07-2005.. Og det er samme format som dtmcurdate er i.. start og slut er to felter i databasen.
Avatar billede nielle Nybegynder
30. juli 2005 - 13:01 #9
Datoformater i et SQL-kald skal som regel være sådan her: yyyy-mm-dd. Desuden skal der enten være enkelt-pinger rundt om eller #-tegn:

SQL = "SELECT * FROM bs_kalender WHERE '2005-07-14'<=" & dtmCurDate & " AND " & dtmCurDate & "<='2005-07-15'"

- og dtmCurDate skal selvfølgelig følge samme format.
Avatar billede fun22 Nybegynder
30. juli 2005 - 13:03 #10
start og slut er text felter så derfor står det som 14-07-2005...
Avatar billede nielle Nybegynder
30. juli 2005 - 13:09 #11
Meget muligt, men det vil databasen altså ikke acceptere. Du er nødt til at omformatere dem.
Avatar billede fun22 Nybegynder
30. juli 2005 - 13:19 #12
du er det dato felter og det står som 2005-07-14 Men den viser stadig ingen ting...
SQL = "SELECT * FROM bs_kalender WHERE start<="&dtmCurDate&" AND "&dtmCurDate&"<=slut"
Avatar billede nielle Nybegynder
30. juli 2005 - 13:22 #13
Prøv, som debug, at udskrive SQL-sætningen før at du udføre den:

SQL = "SELECT * FROM bs_kalender WHERE start<="&dtmCurDate&" AND "&dtmCurDate&"<=slut"
Console.Write SQL & "<br>"
Avatar billede fun22 Nybegynder
30. juli 2005 - 13:52 #14
så skriver den sådan her:
SELECT * FROM bs_kalender WHERE start<=01-07-2005 AND 01-07-2005<=slut
Avatar billede nielle Nybegynder
30. juli 2005 - 13:58 #15
Hvis den gør det, så har du jo heller ikke indsat de konkrete sdatoer i stedet for "start" og "slut", du har heller ikek omgivet dem med enkelt-pinger og din dtmCurDate er ikke i det korrekte yyyy-mm-dd format.

Det den skulle have skrevet ud, skulel have set sådan her ud:

SELECT * FROM bs_kalender WHERE '2005-07-14'<='2005-07-01' AND '2005-07-01'<='2005-07-15'
Avatar billede nielle Nybegynder
30. juli 2005 - 14:01 #16
Ahh, de mener at start og slut er felter i databasen? Misforstod dig der.

Ok, men så skal de være at typen datetime (ikke tekst som du skriver i 30/07-2005 12:57:39).

Desuden så skal feltet dtmCurDate formateres som yyyy-mm-dd:

SELECT * FROM bs_kalender WHERE start<='2005-07-01' AND '2005-07-01'<=slut
Avatar billede fun22 Nybegynder
30. juli 2005 - 14:13 #17
kan de ikke bare være af typen date??
Hvordan formatere jeg nemmest dem om?
Avatar billede nielle Nybegynder
30. juli 2005 - 14:15 #18
Jo, de kan også være at typen date.
Avatar billede nielle Nybegynder
30. juli 2005 - 14:25 #19
Hvis du har brug for at formatere dtmCurDate til yyyy-mm-dd så kan du f.eks. bruge funktionen FormatDateTime - sådan her:

FormatDateTime(dtmCurDate, vbGeneralDate)

Læs mere her:

http://www.w3schools.com/vbscript/func_formatdatetime.asp
Avatar billede nielle Nybegynder
08. august 2005 - 19:34 #20
Har du fået kigget på det?
Avatar billede nielle Nybegynder
16. august 2005 - 18:06 #21
?
Avatar billede fun22 Nybegynder
16. august 2005 - 18:29 #22
Du må lige undskylde at jeg ikke skriver, men er ved at flytte s der går lige lidt tid inden der kommer internet på...

Men jeg vender tilbage hurtigst muligt...
Avatar billede nielle Nybegynder
16. august 2005 - 18:31 #23
Cool :^)
Avatar billede fun22 Nybegynder
11. december 2005 - 12:58 #24
lukker.. Du må gerne få pointsne hvis du vil for den hjælp du har bidraget med....
Avatar billede nielle Nybegynder
11. december 2005 - 16:26 #25
Skal vi ikke gøre spørgsmålet færdigt?
Avatar billede fun22 Nybegynder
11. december 2005 - 16:28 #26
Så må du gerne kigge her: http://exp.dk/spm/671286 For koden har ændret sig lidt men problemet er det samme...
Avatar billede nielle Nybegynder
20. december 2005 - 19:03 #27
Husk nu lige at lukke her :^)
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