webForumDet fria alternativet

Fel på ASP-koden???

ASP

21 svar · 303 visningar · startad av Fredriksson

Medlem sedan nov. 2000319 inlägg
Frågan#1

Med följande kod...


(databaskoppling inkluderas här)

Dim FSO
Set FSO = Server.CreateObject("Scripting.FileSystemObject")

Const perSida = 10
Dim onPage
If Request.QueryString("onPage") = "" then
onPage = 1
Else
onPage = Request.QueryString("onPage")
End If

Rs.CursorLocation = adUseClient
Rs.CacheSize = perSida

SQL = "SELECT * FROM gb WHERE till = " & request.querystring("id") & " ORDER by id DESC"

Rs.MoveFirst
Rs.PageSize = perSida

Dim TotalPages
TotalPages = Rs.PageCount
Rs.AbsolutePage = onPage
Dim count

rs.open SQL, conn

Count = 0
Do While Not Rs.EOF And Count < Rs.PageSize

%>
<table border="0" cellpadding="0" cellpacing="0">
<tr>
<td width="42" valign="top">
<a href="ks.asp?id=<%=rs("frånID")%>">
<img src="images/users/<%
If FSO.FileExists (Server.MapPath("images/users/" & rs("frånID") & ".jpg")) then
	Response.Write rs("frånID") & ".jpg"
else
	Response.Write "nofoto.gif"
end if
%>" width=39 height=50 alt="" border="1"></a>
</td>
<td valign="top"><font face="verdana" size="-2" color="000000">
<b><%=rs("från")%></b> (<%=rs("tid")%> ):<br>
<%=rs("inlägg")%><br><br>

<% if rs("till") = Session("id") then %>
<a href="gastbok.asp?tabort=<%=rs("id")%>&id=<%=request.querystring("id")%>">Ta bort inlägg!</a>
<% end if %>
</td>
</tr>
</table>
<br>
<%
Count = Count + 1
Rs.MoveNext
Loop
Rs.Close
Set Rs = Nothing

If TotalPages <> "1" Then
Dim Pages
For Pages = 1 To TotalPages
%>
<a href="gastbok.asp?onPage=<%=Pages%>"><%=Pages%></a> <%Next%>
<% end if %>

...får jag följande felmeddelande...

ADODB.Recordset error '800a0bb9'

Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

/aspfiles/gastbok.asp, line 114

Vad är det jag har missat???

:q

------------------
F R E D R I K S S O N

[Redigerat av Fredriksson den 05 maj 2001]

Medlem sedan dec. 200012 464 inlägg
#2

En sak kan vara att du inte har definierat adUseClient (=3) och andra konstanter.

red: ? Vilken rad är 114.
------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 05 maj 2001]

Medlem sedan nov. 2000319 inlägg
#3

En sak kan vara att du inte har definierat adUseClient (=3) och andra konstanter.

Hurdå menar du???

------------------
F R E D R I K S S O N

Medlem sedan dec. 200012 464 inlägg
#4

Det finns en fil som heter adovbs.inc som innehåller definitioner för de konstanter som man använder när man programmerar mot ADO, däribland adUseClient. Antingen kan man inkludera den filen på sidan eller så kan man själv lägga till definitioner för de konstanter som man använder.

------------------
essentitia preter non sans multiplicandum

Medlem sedan nov. 2000319 inlägg
#5

Har fixat adovbs.inc nu och får nu istället...

Operation is not allowed when the object is closed.

...även om jag inte har stängt recordsettet nånstans.

------------------
F R E D R I K S S O N

Medlem sedan dec. 200012 464 inlägg
#6

Det ligger en rs.movefirst innan du gör open. Det är onödigt att ha med det anropet överhuvudtaget.

------------------
essentitia preter non sans multiplicandum

Medlem sedan nov. 2000319 inlägg
#7

Det blir samma felmeddelande även utan rs.movefirst :(

------------------
F R E D R I K S S O N

Medlem sedan dec. 200012 464 inlägg
#8

rs.absolutepage = onPage

borde också ligga efter open.

Det underlättar om du visar på vilken rad som felet inträffar :h.

------------------
essentitia preter non sans multiplicandum

Medlem sedan nov. 2000319 inlägg
#9

Även detta resulterade i samma felmeddelande! :)

Om jag nu har räknar rätt (vilket inte alls är säkert) så är rad 126 någon av...

Rs.CursorLocation = adUseClient
Rs.CacheSize = perSida

------------------
F R E D R I K S S O N

[Redigerat av Fredriksson den 05 maj 2001]

Medlem sedan dec. 200012 464 inlägg
#10

Hmm, det enda du borde behöva mellan
create och open är att sätta cursorlocation och cachesize.

Nu syns inte den koden men jag förutsätter att du har skapat recordsetet med

set rs = server.createobject("adodb.recordset")

Annars så vet jag inte.

------------------
essentitia preter non sans multiplicandum

Medlem sedan nov. 2000319 inlägg
#11

Min databaskoppling ser ut så här:

Dim Conn, Rs, SQL
	Set conn = server.createobject("ADODB.Connection")
	Set rs = server.createobject("ADODB.Recordset")
	conn.open "DBQ=" & Server.Mappath("db/databas.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"

------------------
F R E D R I K S S O N

[Redigerat av Fredriksson den 05 maj 2001]

Medlem sedan nov. 2000319 inlägg
#12

Jag skulle gärna vilja få det här att funka... :)

:q

------------------
F R E D R I K S S O N

Medlem sedan dec. 200012 464 inlägg
#13

Hur ser koden ut nu? Kan du ta med från början till rad 150 ungefär?

------------------
essentitia preter non sans multiplicandum

Medlem sedan nov. 2000319 inlägg
#14

Visst. Här kommer det... :)

<!--#include file="adovbs.inc"-->
<!--#include file="db.asp"-->

<%

if request.querystring("tabort") <> "" then

SQL = "DELETE FROM gb WHERE id = " & request.querystring("tabort")

conn.Execute(SQL) 

end if

Function GetUser(ID)

Dim User
Set User = server.createobject("ADODB.Recordset")

	SQL = "SELECT * FROM login WHERE Id=" & Id

User.Open SQL, conn
If not(User.Eof) then
	GetUser = User("username")
Else
	GetUser = "<I>Användaren kunde inte hittas</I>"
End If

End Function

owner = getuser(request.querystring("id"))

%>

<!--#include file="menu.inc"-->

<%

if clng(request.querystring("id")) = clng(session("id")) then

SQL = "UPDATE gb SET läst = 1 WHERE till = " & request.querystring("id")

conn.Execute(SQL)

end if

if request.querystring("skickat") = "yes" then

SQL = "INSERT INTO gb (till, från, frånID, tid, inlägg) VALUES (" & request.querystring("id") & ", '" & Session("username") & "', " & Session("id") & ", '" & Now & "', '" & request.form("inlagg") & "')"

conn.Execute(SQL)

end if

%>

<html>
<head>
	<title>Slime Community</title>
	<META NAME="description" CONTENT="">
	<META NAME="keywords" CONTENT="slime, community, chat, gästbok, vänner, dagbok, login, java, asp, människor, mess, sms, messa, ">
</head>

<body bgcolor="#ffffff" text="#000000" link="#224522" vlink="#224522" alink="#224522" topmargin="0" leftmargin="5" marginwidth="0" marginheight="0">

<table width="750" cellspacing="0" cellpadding="0" border="0">
	<tr>
		<td colspan="2" width="750" height="148"><img src="images/top.jpg" width=750 height=148 alt="" border="0"></td>	
	</tr>
	<tr>
		<td width="556" valign="top">
		
<table width="521" cellspacing="0" cellpadding="4" border="0" align="center">
	<tr>
		<td width="521" valign="top">
<center><font size="-2" face="verdana">
<img src="images/rec.jpg" width=7 height=8 alt="" border="0">&nbsp;<a href="dagbok.asp?id=93">Dagbok</a>&nbsp;
	<img src="images/rec.jpg" width=7 height=8 alt="" border="0">&nbsp;<a href="gastbok.asp?id=93">G&auml;stbok</a>&nbsp;
	<img src="images/rec.jpg" width=7 height=8 alt="" border="0">&nbsp;<a href="vanner.asp?id=93">V&auml;nner</a>&nbsp;
	<img src="images/rec.jpg" width=7 height=8 alt="" border="0">&nbsp;<a href="meddelande.asp?till=93">Skriv brev</a>&nbsp;
	<img src="images/rec.jpg" width=7 height=8 alt="" border="0">&nbsp;<a href="vanner.asp?laggtill=93&id=93">Bli v&auml;n med</a>&nbsp;
	<img src="images/rec.jpg" width=7 height=8 alt="" border="0">&nbsp;<a href="ignore.asp?id=93">Ignorera</a>&nbsp;<br><br></center>

<table border="0" cellpadding="0" cellspacing="0" width="100%">

<tr>
<td width="60%" valign="top">

		<font color="#000000" face="Verdana, Arial, Helvetica, sans-serif" size=1>
	<b><%=owner%></b> &#0124; Gästbok<br><br>

<%

Dim FSO
Set FSO = Server.CreateObject("Scripting.FileSystemObject")

Const perSida = 10
Dim onPage
If Request.QueryString("onPage") = "" then
onPage = 1
Else
onPage = Request.QueryString("onPage")
End If

Rs.CursorLocation = adUseClient
Rs.CacheSize = perSida

SQL = "SELECT * FROM gb WHERE till = " & request.querystring("id") & " ORDER by id DESC"

Rs.PageSize = perSida

Dim TotalPages
TotalPages = Rs.PageCount
Dim count

rs.open SQL, conn

Count = 0
Do While Not Rs.EOF And Count < Rs.PageSize

%>
<table border="0" cellpadding="0" cellpacing="0">
<tr>
<td width="42" valign="top">
<a href="kluttsida.asp?id=<%=rs("frånID")%>">
<img src="images/users/<%
If FSO.FileExists (Server.MapPath("images/users/" & rs("frånID") & ".jpg")) then
	Response.Write rs("frånID") & ".jpg"
else
	Response.Write "nofoto.gif"
end if
%>" width=39 height=50 alt="" border="1"></a>
</td>
<td valign="top"><font face="verdana" size="-2" color="000000">
<b><%=rs("från")%></b> (<%=rs("tid")%> ):<br>
<%=rs("inlägg")%><br><br>

<% if rs("till") = Session("id") then %>
<a href="gastbok.asp?tabort=<%=rs("id")%>&id=<%=request.querystring("id")%>">Ta bort inlägg!</a>
<% end if %>
</td>
</tr>
</table>
<br>
<%
Count = Count + 1
Rs.MoveNext
Loop

Rs.AbsolutePage = onPage

If TotalPages <> "1" Then
Dim Pages
For Pages = 1 To TotalPages
%>
<a href="gastbok.asp?onPage=<%=Pages%>"><%=Pages%></a>&nbsp;<%Next%>
<% end if %>

		</font>
		
</td>
<td valign="top" width="40%">
<form method="post" action="gastbok.asp?id=<%=request.querystring("id")%>&skickat=yes">
<textarea name="inlagg" style="background: #eff7ea; font-family:Verdana; font-size:10px" cols="30" rows="5">Skriv ditt inlägg här...</textarea><br>
<input type="submit" value="Skicka inlägg!" style="font-family:Verdana; font-size:10px"></form>
</td>
</tr>
</table>
					
		</td>
	</tr>
</table>		

		</td>
	
		<td width="194" valign="top" align="center">	
		<% call menulinks %>
		
		<br>

		
		</td>
	</tr>
</table>

</body>
</html>

------------------
F R E D R I K S S O N

Medlem sedan dec. 200012 464 inlägg
#15

Nu har du ju så här.

Dim TotalPages
TotalPages = Rs.PageCount
Dim count

rs.open SQL, conn

Vad händer om du flyttar om lite

Dim count

rs.open SQL, conn
Dim TotalPages
TotalPages = Rs.PageCount

Kan du ta med hela felkoden också, om inte det här hjälper.

------------------
essentitia preter non sans multiplicandum

Medlem sedan nov. 2000319 inlägg
#16

Har ändrat om som du sa och får nu istället felmeddelandet:

ADODB.Recordset error '800a0bcd'

Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

/aspfiles/gastbok.asp, line 164

------------------
F R E D R I K S S O N

Medlem sedan nov. 2000319 inlägg
#17

Nej, vad dum jag är. Det är ju för att det inte finns något i databasen.

Det funkar som det ska nu. Hur gör man förresten för att ersätta detta felmeddelandet med texten Databasen innehållet ingen data. ???

------------------
F R E D R I K S S O N

Medlem sedan juni 200032 967 inlägg
#18
if not rs.eof then
' det fanns saker , gör vad du ska
else
response.write "tomt, för 17 gubbar!"
end if

mvh,

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
nobody expects the spanish inquisition!</A>

Medlem sedan dec. 200012 464 inlägg
#19

Det funkar som det ska nu.

Så bra!

------------------
essentitia preter non sans multiplicandum

Medlem sedan nov. 2000319 inlägg
#20

Tack för det @nders.

LarsG, nu blev det ett nytt problem :) Inläggen delas ju upp på olika sidor men när man klickar på ett av sidnummerna längst ner på sidan så visas fortfarande samma inlägg. :(

------------------
F R E D R I K S S O N

265 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)