webForumDet fria alternativet

Om databasen är tom, skriv ut det i text.

ASP

15 svar · 441 visningar · startad av hallmert

Medlem sedan dec. 2004182 inlägg
Frågan#1

Hej!

Här kommer en lång kod för att skriva ut gästboksinlägg med paging. Vart någonstanns och VAD ska jag skriva för att få följande meddelande: "Du har inga gästboksinlägg". Tycker det kunde vara grant med en sådan funktion, annars får jag bara en ASP-felsida när man tar bort alla inlägg.

<%
	Set MinCon = Server.CreateObject("ADODB.Connection")
	Set rs = Server.CreateObject("ADODB.Recordset")
	MinCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/fanclub.mdb")
	
	Const perSida = 10
	Sidan = Request.QueryString("sida")
	If Sidan = "" then 
	sida = 1 
	Else 
	sida = Sidan 
	
	End If 
	
	MinCon.execute("update gb set readed=1 where tillid = "&Session("id") ) 
	
	SQL = "Select * From gb Where tillID = "&Request.QueryString("tillid") &" Order By ID DESC"
	
	With rs
	  .CursorLocation = 3
	  .CacheSize = perSida 
	End With
	
	
	
	rs.Open SQL, MinCon
	
	With rs
	  .MoveFirst 
	  .PageSize = perSida 
	  .AbsolutePage = sida
	End With
	
	Sidor =  rs.PageCount
	
	Count = 0 
	
	color = "#9A8C81"
	Do While Not rs.EOF And Count < rs.PageSize 
	If color = "#786B61" Then
	color = "#9A8C81"
	Else
	color = "#786B61"
	End If	
	
%>
Medlem sedan dec. 200012 464 inlägg
#2
rs.Open SQL, MinCon
if  rs.eof then
   response.write "Du har inga gästboksinlägg <br>" 
else
  'utskrifter enligt nuvarande
end if
Medlem sedan dec. 2004182 inlägg
#3
	<%
	Set MinCon = Server.CreateObject("ADODB.Connection")
	Set rs = Server.CreateObject("ADODB.Recordset")
	MinCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/fanclub.mdb")
	
	Const perSida = 10
	Sidan = Request.QueryString("sida")
	If Sidan = "" then 
	sida = 1 
	Else 
	sida = Sidan 
	
	End If 
	
	MinCon.execute("update gb set readed=1 where tillid = "&Session("id") ) 
	
	SQL = "Select * From gb Where tillID = "&Request.QueryString("tillid") &" Order By ID DESC"
	
	With rs
	  .CursorLocation = 3
	  .CacheSize = perSida 
	End With
	
	rs.Open SQL, MinCon
	if rs.eof then
	   response.write "Du har inga gästboksinlägg <br>" 
	else
		
	With rs
	  .MoveFirst 
	  .PageSize = perSida 
	  .AbsolutePage = sida
	End With
	
	Sidor =  rs.PageCount
	
	Count = 0 
	
	color = "#9A8C81"
	Do While Not rs.EOF And Count < rs.PageSize 
	If color = "#786B61" Then
	color = "#9A8C81"
	Else
	color = "#786B61"
	End If	
	
	end if
	
	
%>

Det här fungerade inget bra!

Fick följande fel:

Error Type:
Microsoft VBScript compilation (0x800A0400)
Expected statement
/jobb/theevents.net/read_gb.asp, line 67

Line 67:

	end if
Medlem sedan dec. 200012 464 inlägg
#4

Du har inte avslutat din do while korrekt. Det saknas loop

do while ...

loop

Om du indenterar din kod så ser du sådana saker mycket enklare.

Medlem sedan dec. 2004182 inlägg
#5

LarsG skrev:

Du har inte avslutat din do while korrekt. Det saknas loop

do while ...

loop

Om du indenterar din kod så ser du sådana saker mycket enklare.

Förklara lite bättre hur jag ska göra, jag är itne så duktig på det här :/

Medlem sedan juni 200032 967 inlägg
#6

Du saknar ett "loop" att höra ihop med din "do while". När du indenterar din kod ser du sådana fel lättare. Indenteringsexempel:

If detena = detandra then
     do while stuff = true
          If detandra = dettredje then
               Response.write "weeee"
          End if
     loop
Else
     Dosomeotherstuff
End if
Medlem sedan dec. 2004182 inlägg
#7

@nders skrev:

Du saknar ett "loop" att höra ihop med din "do while". När du indenterar din kod ser du sådana fel lättare. Indenteringsexempel:

If detena = detandra then
     do while stuff = true
          If detandra = dettredje then
               Response.write "weeee"
          End if
     loop
Else
     Dosomeotherstuff
End if

Vart jag än sätter loopen så fungerar det inte ?!
Vart skall den vara egentligen?

Medlem sedan juni 200032 967 inlägg
#8

Tja, vad vill du ska utföras i loopen?

Medlem sedan dec. 200012 464 inlägg
#9

Den kod du har postat är inte fullständig. Inuti din do while behövs det mer kod för att göra utskrifter mm. Strukturellt bör det se ut så här.

if rs.eof then
  response.write "Du har inga gästboksinlägg <br>" 
else
  With rs
   .PageSize = perSida 
   .AbsolutePage = sida
  End With
	
  Sidor =  rs.PageCount
	
  Count = 0 
  color = "#9A8C81"
  Do While Not rs.EOF And Count < rs.PageSize 
     If color = "#786B61" Then
	color = "#9A8C81"
     Else
        color = "#786B61"
     End If
'här saknas kod för att göra utskrifter, 
'räkna upp count och gå till nästa post i rs
  loop
end if
Medlem sedan dec. 2004182 inlägg
#10

Sorry, det är jag som har varit otydlig, jag har kod för utskrift och paging längre ner, har bara inte haft med det, sorry!

Nu får jag fel på detta iaf, vad skall göras för att få det att fungera?

Fel: Line 77
...som är:

<%
	Count = Count + 1
	rs.MoveNext
	Loop                        <-----
<table width="415" cellpadding="2" cellspacing="0">
	<%
	Set MinCon = Server.CreateObject("ADODB.Connection")
	Set rs = Server.CreateObject("ADODB.Recordset")
	MinCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/fanclub.mdb")
	
	Const perSida = 10
	Sidan = Request.QueryString("sida")
	If Sidan = "" then 
	sida = 1 
	Else 
	sida = Sidan 
	
	End If 
	
	MinCon.execute("update gb set readed=1 where tillid = "&Session("id") ) 
	
	SQL = "Select * From gb Where tillID = "&Request.QueryString("tillid") &" Order By ID DESC"
	
	With rs
	  .CursorLocation = 3
	  .CacheSize = perSida 
	End With
	
if rs.eof then
  response.write "Du har inga gästboksinlägg <br>" 
else
  With rs
   .PageSize = perSida 
   .AbsolutePage = sida
  End With
	
  Sidor =  rs.PageCount
	
  Count = 0 
  color = "#9A8C81"
  Do While Not rs.EOF And Count < rs.PageSize 
     If color = "#786B61" Then
	color = "#9A8C81"
     Else
        color = "#786B61"
     End If
  Loop
End If
%>
<tr>
<td width="215" valign="top" bgcolor="<%=color%>"><a href="default.asp?visaSida=whois&checkid=<%=rs("id")%>"><%=rs("namn")%></a>, 
<%= replace(formatdatetime(rs("datum"),vblongdate),"den ","") & " " & formatdatetime(rs("datum"),vbshorttime) %></td>
</tr>
<tr>
<td width="415" bgcolor="<%=color%>"><%=Replace(rs("text"),vbcrlf,"<br>")%><p>
<a href="default.asp?visaSida=delete_gb&delID=<%=rs("id")%>">Ta bort!!!!</a>
</td>
</tr>
<%
	Count = Count + 1
	rs.MoveNext
	Loop
	
	rs.Close
	MinCon.Close
	%>
	</table>
	<%If Sidor = 1 Then%>
	<%Else%>
	
	<%End If%>
	
	<div align="center">
	
	<%If Sidor <> 1 Then%><b>Fler inlägg:</b>
	<%For Sid = 1 To Sidor%>
	<%If (Int(Sid)) = (Int(sida)) Then%><%=Sid%><%Else%> <a href="default.asp?visaSida=read_gb&tillID=<%=Session("id")%>&sida=<%=Sid%>"><%=Sid%></a> <%End If%>
	<%Next%> 
	<%End If%></div>
Medlem sedan dec. 200012 464 inlägg
#11

I stället för detta

  Loop
End If
%>
<tr>
<td width="215" valign="top" bgcolor="<%=color%>"><a href="default.asp?visaSida=whois&checkid=<%=rs("id")%>"><%=rs("namn")%></a>, 
<%= replace(formatdatetime(rs("datum"),vblongdate),"den ","") & " " & formatdatetime(rs("datum"),vbshorttime) %></td>
</tr>
<tr>
<td width="415" bgcolor="<%=color%>"><%=Replace(rs("text"),vbcrlf,"<br>")%><p>
<a href="default.asp?visaSida=delete_gb&delID=<%=rs("id")%>">Ta bort!!!!</a>
</td>
</tr>
<%
	Count = Count + 1
	rs.MoveNext
	Loop

skriv detta

%>
<tr>
<td width="215" valign="top" bgcolor="<%=color%>"><a href="default.asp?visaSida=whois&checkid=<%=rs("id")%>"><%=rs("namn")%></a>, 
<%= replace(formatdatetime(rs("datum"),vblongdate),"den ","") & " " & formatdatetime(rs("datum"),vbshorttime) %></td>
</tr>
<tr>
<td width="415" bgcolor="<%=color%>"><%=Replace(rs("text"),vbcrlf,"<br>")%><p>
<a href="default.asp?visaSida=delete_gb&delID=<%=rs("id")%>">Ta bort!!!!</a>
</td>
</tr>
<%
	Count = Count + 1
	rs.MoveNext
	Loop
end if
Medlem sedan juni 200032 967 inlägg
#12

... och öva på indenteringen. :)

Medlem sedan dec. 2004182 inlägg
#13

@nders skrev:

... och öva på indenteringen. :)

if rs.eof then
response.write "Du har inga gästboksinlägg <br>" 
else

Den översta raden ger mig ett fel efter att jag gjort som du sa! :P

Error Type:
ADODB.Recordset (0x800A0E78)
Operation is not allowed when the object is closed.
/jobb/theevents.net/read_gb.asp, line 44

Medlem sedan juni 200032 967 inlägg
#14

Jag kan inte se att du öppnar ditt recordset någonstans (vilket också felmeddelandet ger en hint om).

Medlem sedan dec. 2004182 inlägg
#15

@nders skrev:

Jag kan inte se att du öppnar ditt recordset någonstans (vilket också felmeddelandet ger en hint om).

Hur gör jag de då? Nybörjare som jag är ! :)

Medlem sedan juni 200032 967 inlägg
#16

Tja, du gör ju det i din tidigare kod i denna tråd, men du har tydligen tagit bort den raden.

Edit: jag undviker med flit att svara exakt på dina frågor, bara så du vet. Man vill ju att du ska lära dig något också, genom att hitta felen själv. ;)

468 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
223 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
332 ms — ändringar (db)