23. januar 2002 - 08:56Der 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'> " & 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'> " & dato & "</td>") Response.Write("<TD width='81%'><font size='2' face='Verdana'>" & sted & "</td></tr>")
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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).
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
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'> </td>") Response.Write("<TD width='81%'><font size='2' face='Verdana'>Ikke noget fortiden.</td></tr>")
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'> </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'> " & 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.
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
Synes godt om
Ny brugerNybegynder
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.