webForumDet fria alternativet

Historiken

26 svar · 526 visningar · startad av hallmert

hallmertMedlem sedan dec. 2004182 inlägg
#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
%>
hallmertMedlem 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

LarsGMedlem 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.

@ndersMedlem sedan juni 200032 969 inlägg
#4

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

hallmertMedlem sedan dec. 2004182 inlägg
#5

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

LarsGMedlem 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 *

hallmertMedlem sedan dec. 2004182 inlägg
#7

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

LarsGMedlem sedan dec. 200012 464 inlägg
#8
response.write "SQL:" & addera
response.end
hallmertMedlem 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?

LarsGMedlem 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> ...
hallmertMedlem 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.

LarsGMedlem 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å

hallmertMedlem sedan dec. 2004182 inlägg
#13

Uhm, vart någonstanns då?

LarsGMedlem sedan dec. 200012 464 inlägg
#14

Byt

Addera = "Select *

till

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

Hehe, det fungerar fortfarande inte.

LarsGMedlem 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?

hallmertMedlem sedan dec. 2004182 inlägg
#17

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

LarsGMedlem 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
%>
hallmertMedlem 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?!

LarsGMedlem 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.

142 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)