webForumDet fria alternativet

Tomt men ändå inte...

ASP

25 svar · 554 visningar · startad av crisse6

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

Hej!

Jag har ett forum som på förstasidan listar trådar med länk som read.asp?id=13 te x.... När man sedan startar en ny tråd och den listas fram på slidan så får jag detta felmess när jag ska läsa den:

ADODB.Recordset error '800a0bcd' 

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

/forum2/read.asp, line 36

36:

rs.AbsolutePage = nextPage

men det är bara på de nya trådarna som detta sker, inte på det jag har fört in manuellt i databasen när jag bara testade... Det finns data i databasen från när man har fyllt i genom formulär, konstigt tycker jag.

Medlem sedan dec. 200012 464 inlägg
#2

Vad har newpage för värde? Vad har du satt pagesize till?

Du försöker förmodligen hoppa till en sida som inte finns, t.ex.

du har 47 poster i ditt recordset, pagesize = 10 och newpage = 5.

Du får nog visa mer kod om du vill ha mer hjälp.

Medlem sedan dec. 20002 526 inlägg
#3

har sett att det är inte problemet. det har med ett värde att göra. nu undrar jag, kan man i en och samma sql sats föra in det ny ID:et i ett annat fält också?
säg att det nya ID:et är 14, så vill jag ha in det i svarid också... går det?

Medlem sedan dec. 20002 526 inlägg
#4

ingen?

Medlem sedan mars 2002777 inlägg
#5

Gör din insert, och sedan:

sql ="select @@identity from tabellen"
set objRS = connect.execute(sql)
id = objRS(0)

sql = "Update tabellen SET svarid = " & objRS(0) & " WHERE ID = " & objRS(0) 
Connect.Execute(sql),,128

RED: använder du mysql skriver du last_insert_id() istället för @@identity

Medlem sedan dec. 20002 526 inlägg
#6

kan någon sätta ihop denna kod:

<%
If request.form("rubrik")= "" OR request.form("inlagg") = "" then
response.write "Du måste fylla i båda fälten, gå tillbaka."
else
Datum = Now
SQL4 = "INSERT INTO add_forum ([datum], [inlagg], [anvandarnamn], [orginal], [rubrik], [svarid]) VALUES(#"& Datum &"#,'" & Request.Form("inlagg") & "','" & Session("anvandarnamn") &"', 'Ja', '" & Request.Form("rubrik") & "',[id])"
SQL5 = "UPDATE medlemmar SET antal_inlagg = antal_inlagg +1 WHERE anvandarnamn = '" & Session("anvandarnamn") & "'"
response.write id
Databas.Execute(SQL4)
Databas.Execute(SQL5)

response.redirect "/forum2/default.asp"
end if
%>

med denna som LAMP skrev:

sql ="select @@identity from tabellen"
set objRS = connect.execute(sql)
id = objRS(0)

sql = "Update tabellen SET svarid = " & objRS(0) & " WHERE ID = " & objRS(0) 
Connect.Execute(sql),,128

vore jätte snällt! stort tack till den som vill hjälpa mig.

Medlem sedan dec. 20002 526 inlägg
#7

ingen som kan hjälpa mig? jag får inte ihop det....

Medlem sedan juli 2001203 inlägg
#8

[r] upptäckte att jag hade uppfattat problemet fel [/r]

det select @@identity gör är att plocka ut det id som den senaste sql-frågan lade in...

Medlem sedan juli 2001203 inlägg
#9

Nu tror jag att jag förstår ditt problem...

<%
If request.form("rubrik")= "" OR request.form("inlagg") = "" then
response.write "Du måste fylla i båda fälten, gå tillbaka."
else
Datum = Now
SQL4 = "INSERT INTO add_forum ([datum], [inlagg], [anvandarnamn], [orginal], [rubrik]) VALUES(#"& Datum &"#,'" & Request.Form("inlagg") & "','" & Session("anvandarnamn") &"', 'Ja', '" & Request.Form("rubrik") & "')"

Databas.execute(SQL4)

SQL41 = "SELECT @@Identity"
set rs = Databas.execute(SQL41)

SQL42 = "UPDATE add_forum SET [svarid] = " & rs(0) & " WHERE id = " & rs(0) & ""
Databas.execute(SQL42)

SQL5 = "UPDATE medlemmar SET antal_inlagg = antal_inlagg +1 WHERE anvandarnamn = '" & Session("anvandarnamn") & "'"
response.write id
Databas.Execute(SQL5)

response.redirect "/forum2/default.asp"
end if
%>

detta borde funka... förutsatt att id:t i tabellen add_forum heter just "id"... men det kan du ju ändra som du vill ha det...

Medlem sedan dec. 20002 526 inlägg
#10

ett jätte tack till dig Erik!!!!!!!!! Fungerar ju perfekt!

Medlem sedan dec. 20002 526 inlägg
#11

en sista fråga, varför går det inte att skriva så här:

sql = "Select * From add_forum WHERE svarid = '" & Request.Querystring("id") & "' AND not orginal = 'Ja'"
Medlem sedan juni 200032 967 inlägg
#12

Vadå går inte?

Medlem sedan jan. 20011 213 inlägg
#13

Maste bara papeka att felstavningar kan vara lite kul ibland...hihi

fram på slidan

:e

Medlem sedan dec. 20002 526 inlägg
#14

ja, när jag använder den koden så får jag felmess som säger att det är tomt... (EOF)

Medlem sedan juni 200032 967 inlägg
#15

Tja, då finns inga poster i tabellen som motsvarar de villkor du ställt.

Medlem sedan dec. 20002 526 inlägg
#16

jo, det är ju det det gör...... ska kolla hang on

Medlem sedan dec. 20002 526 inlägg
#17

asså det är konstigt, det är något skumt....

Medlem sedan dec. 20002 526 inlägg
#18

okey här kommer hela koden, först sidan som listar trådarna:

<%
sql = "Select * From add_forum WHERE orginal = 'Ja' ORDER BY datum DESC"
sql2 = "select * from medlemmar where moderator = 'Ja'"
set rs = Databas.execute(sql)
set rs2 = Databas.execute(sql2)
X = 0
response.write "<table width=370 cellspacing=3><tr><td width=200><b>Rubrik:</b></td><td width=50><b>Skribent:</b></td><td width=120><b>Datum:</b></td></tr></table>"
DO UNTIL X=25 OR rs.EOF
if bgcolor="#FFFFFF" then
bgcolor="#EFEFEF"
else
bgcolor="#FFFFFF"
end if
response.write "<table width=370 cellspacing=3 bgcolor="& bgcolor &" valign=top><tr><td width=200><a href=read.asp?id="& rs("id") &">"& rs("rubrik") &"</td><td width=50>"& rs("anvandarnamn") &"</td>" &_
"<td width=120>"& FormatDateTime(rs("datum"), 1) &"</td></tr></table>"
rs.movenext
loop
%>

och sedan read.asp som visar trådens orginal inlägg samt svaren:

<%
nextPage = TRIM( Request( "nextPage" ) )
IF nextPage = "" THEN nextPage = 1

Set rs = Server.CreateObject("ADODB.Recordset")
Set rs2 = Server.CreateObject("ADODB.Recordset")
Set rs3 = Server.CreateObject("ADODB.Recordset")

sql = "Select * From add_forum WHERE svarid = '" & Request.Querystring("id") & "' AND not orginal = 'Ja'"
sql2 = "select * from add_forum where orginal = 'Ja' AND id = " & Request.Querystring("id") & ""
sql3 = "select * from medlemmar"

rs.cursorlocation = 3
rs2.cursorlocation = 3
rs3.cursorlocation = 3

rs.CacheSize = 5
rs.Open sql, Databas, 3, 1
set rs2 = Databas.execute(sql2)
set rs3 = Databas.execute(sql3)

rs.PageSize = 10 
rs.AbsolutePage = nextPage

X = 0
response.write "<table width=480><tr><td><span class=urubrik><a href=/forum2/default.asp>Webforum</a> >> <a href=/forum2/asp/default.asp>Active Server Pages</a> >> "& rs2("rubrik") &"</span><br></td></tr>"
response.write "<tr><td><b>Inlägg:</b><br> "& rs2("inlagg") &"<br><hr size=1 color=#000000><br><b>Svar:</b><br></td></tr></table>"
If rs.eof then
response.write "Det finns inga svar i denna tråd ännu."
else
DO UNTIL rs.eof OR rowCount = rs.PageSize
rowCount = rowCount + 1
if bgcolor = "#FFFFFF" then
bgcolor = "#EFEFEF"
else
bgcolor = "#FFFFFF"
end if
response.write "<table width=480 cellspacing=3 bgcolor="& bgcolor &"><tr><td width=100 valign=top>"& rs("anvandarnamn") &"</td><td width=380 valign=top><a href="& rs3("hemsida") &"><img src=home.gif border=0></a>&nbsp;&nbsp;<a href=mailto:"& rs3("mail") &"><img src=email.gif border=0></a>&nbsp;&nbsp;<a href=/medlemmar/profil.asp><img src=profile.gif border=0></a>&nbsp;&nbsp;<a href=/medlemmar/pm.asp><img src=sendpm.gif border=0></a></td></tr></table>"
response.write "<table width=480 cellspacing=3 bgcolor="& bgcolor &"><tr><td width=100 valign=top>Inlägg: "& rs3("antal_inlagg") &"</td><td width=350 valign=top>"& rs("inlagg") &"</td>" &_
"<td width=50 valign=top>"& rs("datum") &"</td></tr></table>"
rs.movenext
loop
IF rs.PageCount > 1 THEN 

FOR a = 1 to rs.PageCount
IF a <> cINT( nextPage ) THEN 
Response.Write "<a href='read.asp?nextPage="& a &"&id=" & Request.Querystring("id") & "&rubrik=" & Request.Querystring("rubrik") &"'>"& a &"</a>&nbsp;"
ELSE 
Response.Write "&nbsp;"& a

END IF 
NEXT 
END IF
end if
%>
<%
If request.form("inlagg") = "" then
%>
<form name="formular" method="POST" action="read.asp?id=<%=request.querystring("id")%>&rubrik=<%=request.querystring("rubrik")%>">
<b>Svara:</b><br>
<textarea rows="5" name="inlagg" cols="30"></textarea>
<input type="hidden" name="av" value="<%=Session("anvandarnamn")%>">
<input type="hidden" name="svarid" value="<%=Request.Querystring("id")%>">
<br>
<input type="submit" value="Skicka" name="B1">
</form>
<%
else
Datum = Now
SQL4 = "INSERT INTO add_forum ([datum], [inlagg], [anvandarnamn], [orginal], [svarid]) VALUES(#"& Datum &"#,'" & Request.Form("inlagg") & "','" & Session("anvandarnamn") &"', 'Nej','" & Request.Form("svarid") &"')"
SQL5 = "UPDATE medlemmar SET antal_inlagg = antal_inlagg +1 WHERE anvandarnamn = '" & Session("anvandarnamn") & "'"
Databas.Execute(SQL4)
Databas.Execute(SQL5)
end if
rs.CLOSE
rs2.close
Databas.CLOSE
Set rs = nothing
Set rs2 = nothing
Set Databas = nothing
%>
Medlem sedan mars 20002 836 inlägg
#19

för att svarid e ett tal och tal ska ej ha fnuttar runt sig ... kanske ;)

cya,
PatrikB

Medlem sedan dec. 20002 526 inlägg
#20

nej, svarid är av typen text! :(

298 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
156 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)