webForumDet fria alternativet

Alternativ visning

ASP

7 svar · 408 visningar · startad av Biasse

Medlem sedan aug. 2003480 inlägg
Frågan#1

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"))%>&nbsp;<%=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"))%>&nbsp;<%=RS("rubrik")%></a></td>
   </tr>
 
<%
RS.MoveNext 
Loop 
RS.Close 
Set RS = Nothing
END IF 
%>
Medlem sedan nov. 20014 054 inlägg
#2
' ... 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!

Medlem sedan juni 200032 967 inlägg
#3
...
Set RS = Conn.Execute("SELECT TOP 5 * FROM pagang ORDER BY DATUM ASC") 

if RS.EOF then
     ' tomt!
end if

Do Until RS.EOF
...
Medlem sedan aug. 20002 272 inlägg
#4
<%
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"))%>&nbsp;<%=RS("rubrik")%></a></td>
    </tr>
    <%
    RS.MoveNext 
  Loop 
[B]End If[/B]
RS.Close : Set RS = Nothing
%>
Medlem sedan aug. 2003480 inlägg
#5

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">&nbsp;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"))%>&nbsp;<%=RS("rubrik")%></a></td>
   </tr>
 
<%
RS.MoveNext 
Loop 
RS.Close 
Set RS = Nothing
END IF 
%>
Medlem sedan juni 200032 967 inlägg
#6

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).

Medlem sedan aug. 2003480 inlägg
#7

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"))%>&nbsp;<%=RS("rubrik")%></a></td>
   </tr>
 
<%
RS.MoveNext 
Loop 
END IF
END IF
RS.Close 
Set RS = Nothing
%>
Medlem sedan juni 200032 967 inlägg
#8

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.

278 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
135 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
138 ms — ändringar (db)