' ... kod..
If Rs.EOF Then
' Meddelande om tabellen är tom!
' ...
Else
Do Until Rs.EOF
' Om den inte är det...
Rs.MoveNext
Loop
End if
' .... kod...
Typ!
7 svar · 408 visningar · startad av Biasse
Jag försöker få till koden så den visar "Inget på gång nu" när databasen är tom. Men det funkar inte så bra. Har provat enligt följande:
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbnamn
Set RS = Conn.Execute("SELECT TOP 5 * FROM pagang ORDER BY DATUM ASC")
Do Until RS.EOF
%>
<tr>
<td>Inget är på gång just nu</td>
</tr>
<%else%>
<tr>
<td><a target="underst" href="kalender/nyheter/nyheter.asp?id=<%=RS("id")%>"><%=Day(RS("datum"))%>/<%=Month(RS("datum"))%> <%=RS("rubrik")%></a></td>
</tr>
<%
RS.MoveNext
Loop
RS.Close
Set RS = Nothing
END IF
%>
Så jag behöver lite hjälp med det här har jag förstått..
Nuvarande kod ser ut så här:
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbnamn
Set RS = Conn.Execute("SELECT TOP 5 * FROM pagang ORDER BY DATUM ASC")
Do Until RS.EOF
%>
<tr>
<td><a target="underst" href="kalender/nyheter/nyheter.asp?id=<%=RS("id")%>"><%=Day(RS("datum"))%>/<%=Month(RS("datum"))%> <%=RS("rubrik")%></a></td>
</tr>
<%
RS.MoveNext
Loop
RS.Close
Set RS = Nothing
END IF
%>
' ... kod..
If Rs.EOF Then
' Meddelande om tabellen är tom!
' ...
Else
Do Until Rs.EOF
' Om den inte är det...
Rs.MoveNext
Loop
End if
' .... kod...
Typ!
...
Set RS = Conn.Execute("SELECT TOP 5 * FROM pagang ORDER BY DATUM ASC")
if RS.EOF then
' tomt!
end if
Do Until RS.EOF
...
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbnamn
Set RS = Conn.Execute("SELECT TOP 5 * FROM pagang ORDER BY DATUM ASC")
[B]If RS.Eof Then
Response.Write("<tr><td>Inget på gång nu</td></tr>")
Else[/B]
Do Until RS.EOF
%>
<tr>
<td><a target="underst" href="kalender/nyheter/nyheter.asp?id<%=RS("id")%>"><%=Day(RS("datum"))%>/<%=Month(RS("datum"))%> <%=RS("rubrik")%></a></td>
</tr>
<%
RS.MoveNext
Loop
[B]End If[/B]
RS.Close : Set RS = Nothing
%>
Koden kör igenom med såhär men visar ingen txt. Blir samma resultat med JAreMANNEN:s tips.
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbnamn
Set RS = Conn.Execute("SELECT TOP 5 * FROM pagang ORDER BY DATUM ASC")
if RS.EOF then
%>
<div align="center">
<tr>
<td class="rubrik" align="center"> Inget är på gång just nu</td>
</tr>
<%
end if
Else
Do Until RS.EOF
%>
<tr>
<td width="230"><font color="#f4f4f4" face="Verdana" size="1"><a target="underst" href="kalender/nyheter/nyheter.asp?id=<%=RS("id")%>"><%=Day(RS("datum"))%>/<%=Month(RS("datum"))%> <%=RS("rubrik")%></a></td>
</tr>
<%
RS.MoveNext
Loop
RS.Close
Set RS = Nothing
END IF
%>
Den där koden borde ge dig ett felmeddelande (för du har väl inte on error resume next högre upp i koden?), inte "ingen txt". Du får välja vilket av ovanstående tips du ska använda dig om - inte blanda dem. Antingen tar du bort "Else" precis ovanför loopstarten, och det felplacerade "end if", eller så tar du bara bort det "end if" som står ovanför "Else", och flyttar det understa "end if" till rätt ställe - dvs så det bara kapslar in själva loopen (do ---> loop).
Endast det som står i mdb syns. Tar jag bort allt i den skriver den inte ut "Inget på gång nu" hur jag än provar era förslag.
<%
Dim dbnamn
dbnamn = Server.MapPath("lagret/digelo.mdb") ' Databasens sökväg
Sub DeleteSiten
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbnamn
Conn.Execute("DELETE FROM pagang WHERE datum <= dateadd('d', -1, date())")
Conn.Close
Set Conn = Nothing
End sub
DeleteSiten
IF Request.Querystring("vad") = "femsenaste" THEN
%>
<div style="position:absolute;top:44%;left:45px">
<font color="#ff3300" face="Verdana" size="2">På Gång Snart...</font>
<table width="200" border="0" cellpadding="0" cellspacing="0" bordercolor="#000000">
<div align="center">
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbnamn
Set RS = Conn.Execute("SELECT TOP 5 * FROM pagang ORDER BY DATUM ASC")
If RS.Eof Then
Response.Write("<tr><td>Inget på gång nu</td></tr>")
Else
Do Until RS.EOF
%>
<tr>
<td width="230"><font color="#f4f4f4" face="Verdana" size="1"><a target="underst" href="kalender/nyheter/nyheter.asp?id=<%=RS("id")%>"><%=Day(RS("datum"))%>/<%=Month(RS("datum"))%> <%=RS("rubrik")%></a></td>
</tr>
<%
RS.MoveNext
Loop
END IF
END IF
RS.Close
Set RS = Nothing
%>
Du behöver ju inte hålla på och ta bort saker från tabellen bara för att testa - det räcker ju med att ställa ett villkor i SQL-frågan som inte uppfylls.
Set RS = Conn.Execute("SELECT TOP 5 * FROM pagang WHERE 1=2 ORDER BY DATUM ASC")
I övrigt: du får inte ha <div> direkt under <table> - men det är ju en helt annan sak.