Avatar billede qurzyx Nybegynder
23. januar 2002 - 08:56 Der er 8 kommentarer og
1 løsning

Hvorfor virker "else" ikke?

Jeg har en side, som skal vise nogle poste fra en database, afhængig af datoen.. Kun poster med en dato større end datoen nu, skal vise... Det virker, men når der ikke vise nogle eks. skal der står "Ikke noget fortiden".. Men det kommer ikke frem:


<%
mode = Request.QueryString("mode")
' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("kalender.mdb")
Conn.Open DSN

strSQL = "Select * From kalender where check>now" ' where check>'" & FormatDateTime(Now, vbShortDate) & "'"
Set rs = Conn.Execute(strSQL)

DenneDag = FormatDateTime(Now, vbShortDate)

DO WHILE NOT rs.EOF
    check = rs("check")
    sted = rs("sted")
    dato = rs("dato")   
    if check <> FormatDateTime(Now, vbShortDate) then
        Response.Write("<TR><TD width='19%'><font size='2' face='Verdana'>&nbsp;&nbsp;" &  dato & "</td>")
        Response.Write("<TD width='81%'><font size='2' face='Verdana'>" &  sted & "</td></tr>")
    else
        Response.Write("<font size='2' face='Verdana'>Ikke noget fortiden..</font>")

    End if

    rs.MoveNext
Loop
  %>
<%
Conn.Close
Set Conn = Nothing
%>

<% if mode = "all" then
' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("kalender.mdb")
Conn.Open DSN

strSQL = "Select * From kalender"
Set rs = Conn.Execute(strSQL)

DO WHILE NOT rs.EOF
    check = rs("check")
    sted = rs("sted")
    dato = rs("dato")
   
    Response.Write("<TR><TD width='19%'><font size='2' face='Verdana'>&nbsp;&nbsp;" &  dato & "</td>")
    Response.Write("<TD width='81%'><font size='2' face='Verdana'>" &  sted & "</td></tr>")
   
    rs.MoveNext
Loop




end if %>
Avatar billede zeptic Nybegynder
23. januar 2002 - 09:11 #1
prøv at udskrive check og FormatDateTime(Now, vbShortDate) inden du undersøger om de er forskellige. Det er formentlig fordi disse to ikke stemmer overens (du tror de ser ud på en måde, men de repræsenteres nok anderledes).
Avatar billede qurzyx Nybegynder
23. januar 2002 - 09:13 #2
Det kan ikke passe, fordi hvis jeg sætter check i databasen til at være over FormatDateTime, så lbiver den post vist.... Men hvis den er under, visse <% else %> ikke
Avatar billede zeptic Nybegynder
23. januar 2002 - 09:24 #3
Dvs. at du kan godt se både then og else delen, det afhænger bare af hvordan du laver dit sql udtryk?
Avatar billede qurzyx Nybegynder
23. januar 2002 - 09:28 #4
Hmmm... Jeg kan godt se then - delen, men ikke else - delen
Avatar billede coltau Juniormester
23. januar 2002 - 09:50 #5
Hvis du har kontrollere at else bliver udført - men der vises ikke noget - så prøv med et par htmlkoder mere.

Erstat denne linie:
      Response.Write("<font size='2' face='Verdana'>Ikke noget fortiden..</font>")

med disse linier:
Response.Write("<TR><TD width='19%'><font size='2' face='Verdana'>&nbsp;&nbsp;</td>")
        Response.Write("<TD width='81%'><font size='2' face='Verdana'>Ikke noget fortiden.</td></tr>")
Avatar billede qurzyx Nybegynder
23. januar 2002 - 10:33 #6
Virker ikke.... Er der en der har ICQ, så kan jeg sende det til personen???
Avatar billede coltau Juniormester
23. januar 2002 - 12:05 #7
Det behøves ikke - jeg mener jeg kan se problemet.

Din SQL sætning finder kun de datoer der er større end. Hvis recordset er tom (Der ikke er nogen for tiden) så bliver while-løkken ikke udført.

Derfor skal kontrollen udføres først.

if RS.EOF then ' Ikke nogen for tiden
  Response.Write("<TR><TD width='19%'><font size='2' face='Verdana'>&nbsp;&nbsp;</td>")
  Response.Write("<TD width='81%'><font size='2' face='Verdana'>Ikke noget fortiden.</td></tr>") else
  DO WHILE NOT rs.EOF
    check = rs("check")
    sted = rs("sted")
    dato = rs("dato")   
    Response.Write("<TR><TD width='19%'><font size='2' face='Verdana'>&nbsp;&nbsp;" &  dato & "</td>")
    Response.Write("<TD width='81%'><font size='2' face='Verdana'>" &  sted & "</td></tr>")
    rs.MoveNext
  Loop
end if

Så skal der heller laves kontrol inde i while-løkken.
Avatar billede coltau Juniormester
23. januar 2002 - 12:06 #8
HOV "else" skal ned på næste linie.
Avatar billede jgp Nybegynder
23. januar 2002 - 14:39 #9
If (rs.eof Or rs.bof) Then
  Response.write "Intet nyt her"
Else
  While Not (rs.eof Or rs.bof)
    rs.movenext
  wend
End If
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