Koden skall fungera, men ge oss lite mera kod att titta på kan det hända att du använder RecSet innan du kollar om den är tom?
Välkommen förresten!
10 svar · 208 visningar · startad av tomas21
Hejsan allihopa detta är mitt första inlägg här. Jag hoppas att någon svarar på mitt inlägg.
Jag har gjort en meny med en massa länkar. När man klickar på meny länkarna får man upp en annan sida som listar upp rubriker tillhörande just den meny länken.
Om säg första meny länken har rubriker i databasen då går allting perfekt men däremot när den specifika meny länken inte har några rubriker i databasen så får jag upp detta felmedelande:
-------------------------------------------------------------------------------
ADODB.Recordset error '800a0bcd'
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
-------------------------------------------------------------------------------
Jag testade med att lägga in denna if sats:
<%
If RecSet.EOF Then
Response.Write"Denna meny länk har inga rubriker"
Else
.
.
.
.
Lista alla rubriker tillhörande denna meny länk
.
.
.
End If
%>
Men jag får samma felmedelande.
Jag antar att medelandet innebär att den inte hittar några poster i databasen tillhörande den meny länken. Men ifsatsen borde funka tycker man.
MVH / Tomas
Koden skall fungera, men ge oss lite mera kod att titta på kan det hända att du använder RecSet innan du kollar om den är tom?
Välkommen förresten!
Visa all relevant kod istället så kanske det är lättare att komma på vad som ställer till det.
/r: Ajajaj, jag var lite sen... ;)
Ok här är koden:
<!-- #include file="adovbs.inc" -->
<!-- Databas Koppling Start -->
<%
pg = TRIM( Request( "pg" ))
if pg = "" then pg = 1
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("../secret/secret.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")
%>
<!-- Databas Koppling Slut -->
<!-- Loopa igenom länkarna -->
<%
SQLSATS = "SELECT * FROM HuvudRubriker WHERE LF_ID = " & Request.QueryString("id") & " "
RecSet.Open SQLSATS, Connect, adOpenStatic, adLockOptimistic
%>
<% If RecSet.BOF Then %>
<font face="Verdana" size="1">Denna sektion har för tillfället inga artiklar inlagda!!!</font>
<% End If %>
<%
Do Until RecSet.EOF
%>
<%=RecSet("LF_Nummer")%> <%=RecSet("LF_Text")%><br><br>
<%
RecSet.MoveNext
Loop
RecSet.Close
%>
<%
SQLSATS = "SELECT * FROM Artiklar WHERE LA_LFID = "& Request.QueryString("id") & " ORDER By LA_Id"
RecSet.Open SQLSATS, Connect, adOpenStatic, adLockOptimistic
RecSet.PageSize=16
RecSet.AbsolutePage=pg
While NOT RecSet.EOF AND rowCount < RecSet.PageSize
rowCount = rowCount + 1
%>
<% If RecSet("LA_Visual") = False Then
Response.Write ""
Else
%>
<%=RecSet("LA_LFNummer")%>.<%=RecSet("LA_Id")%> <a href="artikel.asp?lankid=<%=Request.QueryString("id")%>&artid=<%=RecSet("LA_Id")%>" target="hoverst"><%=RecSet("LA_Rubrik")%></a><br>
<% End If %>
<%
RecSet.MoveNext
WEND
%>
<% If RecSet.PageCount > 1 Then %>
<br><b>Gå till sidan:</b>
<% For i = 1 to RecSet.PageCount
If i <> cINT( pg ) THEN
%>
<a href="la.asp?id=<%=Request.QueryString("id")%>&cat=<%=Server.URLEncode( cat )%>&pg=<%=i%>"><%=i%></a>
<% Else %>
<b><%=i%></b>
<% End If %>
<% Next %>
<% End If %>
Glömde tillägga att den säger att felmedelandet gäller på rad 55 som är den rad där det står :
RecSet.AbsolutePage=pg
Tokfel i mitt inlägg.
OK nu har jag lärt mig hur man infogar kod i detta forum:
<%End If%>
<%
Do until RecSet.EOF
If RecSet("Ipnr") = Request.Servervariables("REMOTE_ADDR") Then
%>
Nä, skriv så här:
<!-- #include file="adovbs.inc" -->
<!-- Databas Koppling Start -->
<%
pg = TRIM( Request( "pg" ))
if pg = "" then pg = 1
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("../secret/secret.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")
%>
<!-- Databas Koppling Slut -->
<!-- Loopa igenom länkarna -->
<%
SQLSATS = "SELECT * FROM HuvudRubriker WHERE LF_ID = " & Request.QueryString("id") & " "
RecSet.Open SQLSATS, Connect, adOpenStatic, adLockOptimistic
If RecSet.Eof Then %>
<font face="Verdana" size="1">Denna sektion har för tillfället inga artiklar inlagda!!!</font>
<% Else
Do Until RecSet.EOF
%>
<%=RecSet("LF_Nummer")%> <%=RecSet("LF_Text")%><br><br>
<%
RecSet.MoveNext
Loop
RecSet.Close
End If
SQLSATS = "SELECT * FROM Artiklar WHERE LA_LFID = "& Request.QueryString("id") & " ORDER By LA_Id"
RecSet.Open SQLSATS, Connect, adOpenStatic, adLockOptimistic
RecSet.PageSize=16
RecSet.AbsolutePage=pg
While NOT RecSet.EOF AND rowCount < RecSet.PageSize
rowCount = rowCount + 1
If RecSet("LA_Visual") = False Then
Response.Write ""
Else
%>
<%=RecSet("LA_LFNummer")%>.<%=RecSet("LA_Id")%> <a href="artikel.asp?lankid=<%=Request.QueryString("id")%>&artid=<%=RecSet("LA_Id")%>" target="hoverst"><%=RecSet("LA_Rubrik")%></a><br>
<% End If
RecSet.MoveNext
WEND
If RecSet.PageCount > 1 Then %>
<br><b>Gå till sidan:</b>
<% For i = 1 to RecSet.PageCount
If i <> cINT( pg ) THEN
%>
<a href="la.asp?id=<%=Request.QueryString("id")%>&cat=<%=Server.URLEncode( cat )%>&pg=<%=i%>"><%=i%></a>
<% Else %>
<b><%=i%></b>
<% End If
Next
End If %>
Sedan så är det nog i ditt fall rekommenderat att använda Response.Write istället för att hålla på att växla context hela tiden.
Josef det fungerar inte jag får upp felmedelandet:
ADODB.Recordset error '800a0bcd'
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
Som gäller för samma rad alltså
RecSet.AbsolutePage=pg
Notera här att det inte finns i detta fall några poster tillhörande meny länken i tabellen artiklar. Alltså den letar i tabellen artilkar och den hittar inget tillhörande det id numret då ger den det felmedelandet.
Jag löste det till slut.
Felet var att jag skrev if satsen efter den första SQL satsen då använde det recordset som den SQL satsen skapade. Men genom att lägga den efter den andra SQL satsen där listingen av artiklarna låg då gick det bra.
Tack för hjälpen allihop.
MVH/ Tomas