webForumDet fria alternativet

Historiken

ASP

26 svar · 526 visningar · startad av hallmert

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

Hejsan!

Håller på med ett script där historiken i en gästbok skall skrivas ut. Vad är det för fel på följande kod?


<div class="rubrik">Historik</div>
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.open "provider=Microsoft.Jet.OLEDB.4.0;Data source=" & Server.MapPath("db/fanclub.mdb")

Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "Select * from gb where (id='" & Request.Querystring("id") & "' and fromID='" & Session("id") & "') or (id='" & Session("id") & "' and fromID='" & Request.Querystring("id") & "') order by datum desc"

RecSet.Open Addera, Connect, 1, 2

Do Until RecSet.EOF %>

<%=RecSet("datum")%><br>
<%=RecSet("text")%><p><br>

<%
RecSet.MoveNext
Loop
RecSet.Close
Connect.Close
%>
Medlem sedan dec. 2004182 inlägg
#2

Felmeddelande:

Error Type:
Microsoft JET Database Engine (0x80040E07)
Data type mismatch in criteria expression.
/arbeten/charmtroll/provar.asp, line 10

Medlem sedan dec. 200012 464 inlägg
#3
Addera = "Select * from gb where (id=" & _
Request.Querystring("id") & " and fromID=" & _
Session("id") & ") or (id=" & Session("id") & _
" and fromID=" & Request.Querystring("id") & _
 ") order by datum desc"

Please, lägg in radbrytningar så jag slipper scrolla i sidled.

Medlem sedan juni 200032 967 inlägg
#4

När det handlar om numeriska fält ska du inte ha apostrofer runt värdena i SQL-frågan.

Medlem sedan dec. 2004182 inlägg
#5

Hm, det fungerade, men den ville inte skriva ut något :/

Medlem sedan dec. 200012 464 inlägg
#6

Då finns inget data som uppfyller villkoren.

Gör en utskrift av frågan och kontrollera att variablerna innehåller de värden du förväntar dig.

En annan sak är du skall enbart ange de kolumner du vill hämta och inte använda select *

Medlem sedan dec. 2004182 inlägg
#7

Hur gör man en utskrift av de då? :P

Medlem sedan dec. 200012 464 inlägg
#8
response.write "SQL:" & addera
response.end
Medlem sedan dec. 2004182 inlägg
#9

Den skrev ut följande:

Select * from gb where (id=224 and fromID=183) or (id=183 and fromID=224) order by datum desc

Jag kollade direkt i databasen, och posten ID=224 har inlägg med fromID=183 och ID=183 har poster med inlägg från fromID=224, mkt märkligt?

Medlem sedan dec. 200012 464 inlägg
#10
  1. Byt namn på kolumnen text till något annat eftersom det är ett reserverat ord i Jet SQL.

Är den av typen PM?

I så fall måste den anges sist i select-listan

dvs

select datum,<dittNyaNamnPåTextKolumn> ...
Medlem sedan dec. 2004182 inlägg
#11

Nejdu...

<div class="rubrik">Historik</div><%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.open "provider=Microsoft.Jet.OLEDB.4.0;Data source=" & Server.MapPath("db/fanclub.mdb")

Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "Select * from gb where (id=" & Request.Querystring
("id") & " and fromID=" & Session("id") & ") or (id=" & Session("id") & " and fromID=" & Request.Querystring("id") & ") order by datum desc"

RecSet.Open Addera, Connect, 1, 2

Do Until RecSet.EOF %>

<%=RecSet("datum")%><br>
<%=RecSet("inlagg")%><p><br>

<%
RecSet.MoveNext
Loop
RecSet.Close
Connect.Close
%>

Bytte namn till "inlagg", det ville icke heller fungera.

Medlem sedan dec. 200012 464 inlägg
#12

Jag sade aldrig att namnbytet var tillräckligt.

I så fall måste den anges sist i select-listan

Du måste ändra i select-satsen också

Medlem sedan dec. 2004182 inlägg
#13

Uhm, vart någonstanns då?

Medlem sedan dec. 200012 464 inlägg
#14

Byt

Addera = "Select *

till

Addera = "Select datum,inlagg
Medlem sedan dec. 2004182 inlägg
#15

Hehe, det fungerar fortfarande inte.

Medlem sedan dec. 200012 464 inlägg
#16

Vad får du ut om du kör frågan direkt i Access?

Vad har kolumnen datum för typ?

Medlem sedan dec. 2004182 inlägg
#17

"datum" är typen "Datum/Tid"
"inlagg" är f.ö. "PM".

Medlem sedan dec. 200012 464 inlägg
#18

Du kan ju lägga till en test för att se om du får något resultat från frågan

Byt

RecSet.Open Addera, Connect, 1, 2

Do Until RecSet.EOF %>

<%=RecSet("datum")%><br>
<%=RecSet("inlagg")%><p><br>

<%
RecSet.MoveNext
Loop
RecSet.Close
Connect.Close
%>

till

RecSet.Open Addera, Connect, 1, 2

if  RecSet.EOF then
    response.write "Det finns ingen historik <br>"
else
    Do Until RecSet.EOF %>

<%=RecSet("datum")%><br>
<%=RecSet("inlagg")%><p><br>

<%
        RecSet.MoveNext
    Loop
end if
RecSet.Close
Connect.Close
%>
Medlem sedan dec. 2004182 inlägg
#19

Okej, den skriver ut att det faktiskt inte finns några inlägg. Men det GÖR det ju, jävligt konstigt?!

Medlem sedan dec. 200012 464 inlägg
#20

Gör du connect mot rätt databas?

Du kanske kör direkt mot en lokal databas och ditt skript kör mot en annan databas på ett web-hotell.

263 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)