Hej,
jag tänkte lägga in ett eget diskussforum på siten. Då jag är asp-nybörjare kopierade jag ett befintligt forum till att börja med. Koden till detta finns att ladda ned på www.tilja.net. Dock får jag detta felmeddelande när jag försöker publicera ett inlägg:
ADODB.Recordset.1 error '80004005'
SQLState: 37000
Native Error Code: -3502
[INTERSOLV][ODBC SequeLink driver][ACCESS][Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement.
/forum/response_ins.asp, line 57
Dessutom visas hälsningmeddelandet (den enda post som redan är inlagd i databasen) 100 gånger. Varför?
Det enda jag har modifierat i filerna är raden Session("databas") = "filedsn=" & Server.MapPath("forum.dsn") & ";DBQ=" & Server.MapPath("forum.mdb")&";"
Dels är fältnamnen under all kritik. Dels används .AddNew för att lägga till poster i tabellen. Dessutom hämtas allt innehåll i tabellen då något ska läggas till. Usch, skäms, tilja.
Kan du ge mig en lista på vilka fält som finns i accesstabellen och vad det är för datatyper, så ska vi nog kunna få detta gjort på ett bättre sätt, med en korrekt INSERT-fråga.
Databasen forum.mdb innehåller tabellen questions med följande fält:
id -> räknare
ref_id -> tal
subject -> text
text -> PM
date -> datum/tid
ref_date -> datum/tid
posted_by -> text
email -> text
ip -> text
Hela databasen finns här, om någon vill ta sig en ännu närmare titt! Databasen
redigering: Man kan redigera sitt inlägg också, om man exempelvis skriver fel sökväg till en databas. Det gör man genom att klicka på 'penna-papper'-ikonen ovanför inlägget.
snyft
Är det ingen som ser felet, varför utskriften av inlägg aldrig slutar loopa, utan senast inlagda inlägget skrivs ut maxantalet gånger, alltså hundra.
Utskriftsfunktionen ligger som sagt i default.asp, som jag har länkat till tidigare.
Hmm, detta är lite lustigt. Jag laddade hem tiljas forum, slängde in det i inetpub och körde igång. Det fungerade perfekt! Nu kör ju jag visserligen iis5, och inte pws, men jag vet inte vad det skulle göra för skillnad.
Prova dock att byta följande:
<%
count = 0
Do Until Rs.EOF OR count = showmsgnr
Id = Rs("id")
SQLStmt = "SELECT * FROM questions WHERE ref_id = " & Id
RS2.open SQLStmt, databas,1
replycount = 0
Do Until RS2.EOF
replycount = replycount + 1
Rs2.MoveNext
LOOP
Rs2.Close
Response.Write "<tr onMouseOver=""this.style.backgroundColor='#"& mouseover &"';"" onMouseOut=""this.style.backgroundColor='';""><td>"
IF RS("date") > date - 1 THEN Response.Write txt_new & " »" END IF
Response.Write "</td><td><a href='response.asp?id=" & RS("id") & "'>" & Server.HTMLEncode(Rs("subject")) & "</a></td><td>" & Server.HTMLEncode(Rs("posted_by")) & "</td><td>" & Rs("date") & "</td><td align='middle'>" & replycount & " </td></tr>"
count = count + 1
Rs.MoveNext
LOOP
%>
till:
<%
count = 0
Do Until Rs.EOF
Id = Rs("id")
SQLStmt = "SELECT COUNT(*) FROM questions WHERE ref_id = " & Id
RS2.open SQLStmt, databas,1
replycount = RS2(0)
Rs2.Close
Response.Write "<tr onMouseOver=""this.style.backgroundColor='#"& mouseover &"';"" onMouseOut=""this.style.backgroundColor='';""><td>"
IF RS("date") > date - 1 THEN Response.Write txt_new & " »" END IF
Response.Write "</td><td><a href='response.asp?id=" & RS("id") & "'>" & Server.HTMLEncode(Rs("subject")) & "</a></td><td>" & Server.HTMLEncode(Rs("posted_by")) & "</td><td>" & Rs("date") & "</td><td align='middle'>" & replycount & " </td></tr>"
count = count + 1
if count = showmsgnr then exit do
Rs.MoveNext
LOOP
%>
Nej, det busar fortfarande med mig, fruktansvärt märkligt.
Som jag skrev i första inlägget var jag dock tvungen att byta raden Det enda jag har modifierat i filerna är raden
Session("databas") = "filedsn=" & Server.MapPath("forum.dsn") & ";DBQ=" & Server.MapPath("forum.mdb")&";"
Ja, visst finns det tillfällen då .addnew kan vara bra, men oftast räcker det med en riktig "Insert" via SQL.
Grejen med .addnew är att du först måste hämta ett recordset ifrån databasen, och det är ju att ta ett steg extra för att lägga till, bättre då att direkt lägga till.
259 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a