webForumDet fria alternativet

Item cannot be found in the collection corresponding to the requested name or ordinal

ASP

7 svar · 343 visningar · startad av ade

Medlem sedan juli 20041 081 inlägg
Frågan#1

Så här ser hela koden ut till forum.asp

<%
' skapa en databas kopling till våran databas
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("forum.mdb") 

' ställer frågan om vi ska spara en tråd ?
If Request.QueryString("action") = "spara" then

Addera = "SELECT * FROM forum"
Set RS = Server.CreateObject("ADODB.Recordset")
Rs.Open Addera, Connect, 3, 3

' skapar en ny rad i tabellen
rs.addnew
rs("namn") = request.form("namn")
rs("email") = request.form("email")
rs("amne") = request.form("amne")
rs("titel") = request.form("titel")
rs("med") = request.form("med")
rs("org") = "ja"
rs("datum") = now
rs("senaste") = now
rs.update

'stänger allt efter oss
rs.close
connect.close
set rs = nothing
set connect = nothing

' länkar tillbaka till forum.asp
response.Redirect "forum.asp"
'avslutar frågan
end if

'öppnar ämnes tabellen
Set rs2 = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM amne order by amne desc"
rs2.Open Addera, Connect, 3, 3

'börjar loopa igenom alla ämnena
do until rs2.eof

' skriver ut namnet på ämnet
Response.write rs2("amne")

'öppnar tabellen med inläggen där ämnet stämmer överens men bara dom 5 första
Set rs = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT top 5 * FROM forum where amne='"&rs2("amne")&"' order by id desc"
rs.Open Addera, Connect, 3, 3

' om inget i tabellen hittades som passade ihop med ämnet så visar vi följande text
if rs.eof then 
%>
<br>Inga trådar i detta ämne än  

<% 
' annats så börjar vi loopa igenom trådarna
else 
do until rs.eof %>
<br>
<a href="forum_las.asp?id=<%=rs("id")%>"><%=rs("titel")%></a> <%=rs("senaste")%> 
Svar: 
<%

' nu öppnar vi tabellen igen men nu kollar vi efter svar på tråden
' och räknar hur många dom är
Set rs3 = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM forum where svarpa='"&rs("id")&"'"
rs3.Open Addera, Connect, 3, 3

' med följande kod räknar vi svaren
antal = rs3.recordcount

' sen så stänger vi den tabellen
rs3.close
set rs3 = nothing

'och skriver ut antalet svar
response.write antal 

'sen går vi till nästa tråd
rs.movenext
loop

'och så avslutar vi frågan om några trådar fanns 
end if

' och stänger den tabellen
rs.close
set rs = nothing

' lägger in två nya raden så det inte blir så grötigt 
response.write "<br><br>"

' loopen börjar om genom ämnena.
rs2.movenext
loop

' stänger tabellen för ämnena
rs2.close
set rs2 = nothing

' nu gör vi ett formulär
%>
<br>
<br>
<;form name=";form" method="post" action="forum.asp?action=spara">

Ditt namn:<br>
<input name="namn" type="text" size="50">
<br>
Min email:<br>
<input name="email" type="text" size="50">
<br>
Kategori:<br>
<select name="amne">
<%

' loopar igenom alla ämnena
Set rs2 = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM amne order by amne desc"
rs2.Open Addera, Connect, 3, 3
do until rs2.eof
%>
<option value="<%=rs2("amne")%>"><%=rs2("amne")%></option>
<%
rs2.movenext
loop

%>
</select>
<br>
Rubrik:<br>
<input name="titel" type="text" size="50">
<br>
Inlägg:<br>
<textarea name="med" cols="50" rows="10"></textarea>
<br>
<input type="submit" name="Submit" value="Skicka">
</form>

<%

' stänger databasen för att loopa igenom ämnena
rs2.close
set rs2 = nothing
connect.close
set connect = nothing
%>

Jag får detta felmedalnde:

ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.

/forum2.0/forum.asp, line 18

rad 18:


rs("titel") = request.form("titel")

Jag tordde det var nått med databasen att den sakna kolummen titel men då kom det bara att de vart felmedlenade på nästa osv.

Medlem sedan nov. 20017 144 inlägg
#2

Vänligen starta inte nya trådar hela tiden (tror att detta är tredje i raden i samma ämne) utan fortsätt i redan befintliga trådar.

Medlem sedan juli 20041 081 inlägg
#3

Men får ingen hjälp när en tråd är 3 dagar gammal ju

Medlem sedan nov. 20017 144 inlägg
#4

Klart man får.
Den lägger sig överst av alla inlägg och blir på-nytt-född.
Spamma inte. Korsposta inte. Gör inte flera trådar i samma ämne.
Basta! ;)

Medlem sedan juli 20015 107 inlägg
#5

Obs! läs det finstilta innan du går över till koden ;)

Tabellen FORUM du har i din Access databas.
Var vänlig och kolla i den och skriv här alla Kolumnerna som finns i den, inte vad du har i huvudet, utan kolla vad som exakt existerar, SAMT vad det är för datatyper till de olika kolumnerna, tillåter databasen att 'titel' är tomt? heter verkligen formuläret du skickar till den här sidan titel? Är den blank eller innehåller den något värde.

om du byter följande kod mot

Addera = "SELECT * FROM forum"
Set RS = Server.CreateObject("ADODB.Recordset")
Rs.Open Addera, Connect, 3, 3

' skapar en ny rad i tabellen
rs.addnew
rs("namn") = request.form("namn")
rs("email") = request.form("email")
rs("amne") = request.form("amne")
rs("titel") = request.form("titel")
rs("med") = request.form("med")
rs("org") = "ja"
rs("datum") = now
rs("senaste") = now
rs.update

Mot

strSQL = "INSERT INTO forum (namn,email,amne,titel,med,org,datum,senaste) VALUES ('"& request.form("namn") &"','"& request.form("email") &"','"& request.form("amne") &"','"& request.form("titel") &"','"& request.form("med") &"','ja','"& now() &"','"& now() &"')"

sen kör du en "response.write strSQL" för att kolla så att alla dina värden finns med i inserten. Bocka av all övrig ASP kod som använder ditt recordset lite senare i koden så slipper du få konflikter om det då.
Om allt finns med med så tar du bort response.write och lägger till

Connect.execute(strSQL)

Sen hämtar du ut recordsetet med @@identity

Medlem sedan juli 20041 081 inlägg
#6

Okej jag börjar med att skriva alla namn på kollumerna.

tabell1 heter forum
Rubrik
Inlagg
Orginal
Svarpa
Namn
Email
Amne

Har ju läst denna artikel:

http://www.aspsidan.nu/kursRead.asp?kid=7

en del kod är modiferad.

Medlem sedan juli 20015 107 inlägg
#7

ade skrev:

Okej jag börjar med att skriva alla namn på kollumerna.

tabell1 heter forum
Rubrik
Inlagg
Orginal
Svarpa
Namn
Email
Amne

Har ju läst denna artikel:

http://www.aspsidan.nu/kursRead.asp?kid=7

en del kod är modiferad.

Om du har dom där tabellerna.

och använder den här koden

rs("namn") = request.form("namn")
rs("email") = request.form("email")
rs("amne") = request.form("amne")
rs("titel") = request.form("titel")
rs("med") = request.form("med")
rs("org") = "ja"
rs("datum") = now
rs("senaste") = now

Så kan jag nästan förstå att det inte fungerar. Det ska vara t.ex RS("KOLUMN_NAMN"), dina kolumnnamn i databasen och i koden är helt olika

Medlem sedan mars 20015 287 inlägg
#8

Varför fortsätter du med det forumet?
Jag har för mig att vi mer eller mindre konstaterade att han som skapat det var onykter vid tillfället?
http://www.webforum.nu/showthread.php?s=&postid=896684#post896684

Hur gick det med detta? http://www.webforum.nu/showthread.php?s=&threadid=106768&perpage=25&pagenumber=1

285 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
155 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)