timediaMedlem sedan maj 2001451 inlägg
har kollat och dubbelkollad, men kan inte hitta felet i denna:
Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.Open "SELECT * FROM shOrders, shCustomers WHERE shOrders.customer=shCustomers.id AND shOrders.id=" & Request("id"), Conn, 1,1
if not rs.eof then
[B]shBasket = Rs.Fields("shBasket").Value[/B]
address = Rs.Fields("address").Value
postalcode = Rs.Fields("postalcode").Value
city = Rs.Fields("city").Value
email = Rs.Fields("email").Value
phone = Rs.Fields("phone").Value
name = Rs.Fields("fname").Value & " " & Rs.Fields("lname").Value
else
response.end
end if
Rs.Close
..får detta felmeddelande:
Error Type:
ADODB.Recordset (0x800A0CC1)
Item cannot be found in the collection corresponding to the requested name or ordinal.
/gamol/html/shViewOrder.asp, line 19
@ndersMedlem sedan juni 200026 914 inlägg
Då finns inget fält i recordsetet som heter shBasket?
timediaMedlem sedan maj 2001451 inlägg
jo, det gör det väl?
jag väljer jo alla fält i båda tabellerna - och i tabellen shOrders ligger shBasket, eller vad har jag missuppfattat?
@ndersMedlem sedan juni 200026 914 inlägg
Ja, om fältet shBasket ligger där så ska det vara så.
Är du säker?
Kör frågan i Access och kolla.
timediaMedlem sedan maj 2001451 inlägg
Någon länk till hur man kör frågor i access? :r
J.N.Medlem sedan apr. 20031 660 inlägg
HEJ!
Välj query/frågor i menyn under tabellerna, sedan väljer du tabell, och fält. Knappen uppe till vänster kör frågan, visar sql.
Men, mitt tips är att ta bort den raden (är det 19 eftersom den är fet), och se om det övriga fungerar. Dvs eftersom du inte skriver något alls om det antar jag att du inte får ut något ur db'n alls?
timediaMedlem sedan maj 2001451 inlägg
Nu har jag provkörd i access och tyvärr kan jag inte köra hela satsen där men följande ger korrekt resultat:
SELECT * FROM shOrders, shCustomers WHERE shOrders.customer=shCustomers.id
I addressfältet i webbläsaren står:
http://localhost/gamol/html/shViewOrder.asp?id=15
så följande selectsats borde ju vara korrekt?
SELECT * FROM shOrders, shCustomers WHERE shOrders.customer=shCustomers.id AND shOrders.id="& Request("id"), Conn, 1,1
OveRRidEMedlem sedan feb. 20018 509 inlägg
Varför har du response.end i din if-sats? Om nu recordset:et är tomt kommer inte rs.close eller eventuella andra förstörelserelaterade ( :) ) händelser att inträffa eftersom koden aldrig kommer dit.
timediaMedlem sedan maj 2001451 inlägg
har ändrad response.end till response.write "inga varor här" och noterar att felet nu anges i linjen
address = Rs.Fields("address").Value
..och som vanligt förstår jag NADA
:x
Hela filen här:
<% Option Explicit ' Vi vill ha koll på våra variabler
%><!--#include file="prevent_cache.asp"--><!--#include file="connection.asp"--><!--#include file="functions.asp"--><%
Dim numRecords, v
Dim shBasket, TotalPrice, Details
Dim email, BackgroundColor, address, phone, city, postalcode, name
IF Session("shCustomerID") = "" THEN
Response.Redirect "shCustomerLogin.asp": response.end
end if
Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.Open "SELECT * FROM shOrders, shCustomers WHERE shOrders.customer=shCustomers.id AND shOrders.id="& Request("id"), Conn, 1,1
if not rs.eof then
shBasket = Rs.Fields("shBasket").Value
address = Rs.Fields("address").Value
postalcode = Rs.Fields("postalcode").Value
city = Rs.Fields("city").Value
email = Rs.Fields("email").Value
phone = Rs.Fields("phone").Value
name = Rs.Fields("fname").Value & " " & Rs.Fields("lname").Value
else
response.write "inga varor här"
end if
Rs.Close
Dim a, itemsInBasket, One
' Vi hämtar ut alla varors ID-nummer till en kommaseparerad sträng
IF shBasket<>"" THEN
a = Split(shBasket, "|")
For Each One in a
If itemsInBasket <> "" THEN itemsInBasket = itemsInBasket & ","
itemsInBasket = itemsInBasket & Mid(one, 2, InStr(one, "]")-2)
next
End If
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Beställning</title>
<link rel="STYLESHEET" type="text/css" href="shStyle.css">
</head>
<body BGCOLOR="#FFFFFF">
<P><FONT SIZE="3"><B>Din beställning är skickad!</B></FONT></p>
Skriv ut den här sidan och spara den.<br>
Du kommer även att få en bekräftelse via e-post<br><br>
<B>Datum:</B><br>
<%= Year(Now) & "-" & AddZero(Month(Now)) & "-" & AddZero(Day( Now)) & " " & Time %><br><br>
<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
<TR>
<TD CLASS="reciept" VALIGN="TOP" WIDTH="150">
<B>Namn:</B><br>
<%=name%><br>
<B>Adress:</B><br>
<%=address%><br>
<%=postalcode%> <%=city%><br>
</TD>
<TD CLASS="reciept" VALIGN="TOP" WIDTH="160">
<B>E-post:</B><br>
<%=email%><br>
<B>Telefon:</B><br>
<%=phone%><br>
</TD>
</TABLE>
<br>
<TABLE WI DTH="400" BORDER=0 CELLSPACING=1 CELLPADDING=0>
<TR BGCOLOR="<%=BackgroundColor%>">
<TD WIDTH=20 CLASS="reciept">#</TD>
<TD WIDTH=170 CLASS="reciept"><B>Vara</B></TD>
<TD WIDTH=60 CLASS="reciept" ALIGN=RIGHT><B>á pris</B></TD>
<TD WIDTH=60 CLASS="reciept" ALIGN=RIGHT><B>Summa</B></TD>
</TR>
<%
Set Rs = Server.CreateObject("ADODB.RecordSet")
Rs.Open "SELECT * FROM shItems WHERE id IN (" & itemsInBasket & ")",Conn,1,1
Dim noItems
if not rs.eof then
numRecords = Rs.RecordCount-1
BackgroundColor = "#EEEEEE"
for v= 0 to numRecords
noItems = itemCount( Rs.Fields("id").Value, False)
If BackgroundColor = "#EEEEEE" THEN BackgroundColor ="#FFFFFF" Else BackgroundColor = "#EEEEEE"
%>
<TR BGCOLOR="<%=BackgroundColor%>">
<TD WIDTH=20 CLASS="reciept"><%=noItems%></TD>
<TD WIDTH=170 CLASS="reciept"><%=Rs.Fields("title").Value%></TD>
<TD WIDTH=60 CLASS="reciept" ALIGN=RIGHT><%=Rs.Fields("price").Value%></TD>
<TD WIDTH=60 CLASS="reciept" ALIGN=RIGHT><%=Rs.Fields("price").Value * noItems%></TD>
</TR>
<%
TotalPrice = TotalPrice + itemCount( Rs.Fields("id").Value, False) * Rs.Fields("price").Value
Rs.MoveNext
next
%>
<TR BGCOLOR="<%=BackgroundColor%>">
<TD COLSPAN="4" WIDTH=310 CLASS="reciept" HEIGHT="1" BGCOLOR="#000000"></TD>
</TR>
<TR BGCOLOR="<%=BackgroundColor%>">
<TD WIDTH=20 CLASS="reciept"> </TD>
<TD WIDTH=170 CLASS="reciept"><B>Summa:</B></TD>
<TD WIDTH=120 COLSPAN="2" CLASS="reciept" ALIGN=RIGHT><%= TotalPrice%> kr</TD>
</TR>
<%
end if
Rs.Close
Set Rs = Nothing
%>
</TABLE><br>
<a href="shFrames.asp">« Tillbaka till shoppen</A> | <a href="JavaScript:print()">Skriv ut</A><br>
</FORM>
</body>
</html>
<%
' CleanUp
Conn.Close
Set Conn = Nothing
%>
J.N.Medlem sedan apr. 20031 660 inlägg
HEJ!
Den går alltså förbi ShBasket ovanför?
Två allmänna felsökningstips:
- plocka bort felande kod
- skriv ut rs.eof, för att se att det finns ett rs
Dvs när man får fel, är det endast en sak som gäller, begränsa koden som används för att lokalisera den kod som är fel.
Förresten: Varför har du denna kod?
Year(Now) & "-" & AddZero(Month(Now)) & "-" & AddZero(Day( Now)) & " " & Time
Den är väl lika
=now()
timediaMedlem sedan maj 2001451 inlägg
tack J.N ,(och den går förbi Shbasket), men:
jag 'tror' jag redan har plockad bort felande kod när jag körde denna:
SELECT * FROM shOrders, shCustomers WHERE shOrders.customer=shCustomers.id
och den funkade? ..och jag har väl redan skrivit ut rs.eof när jag skriver
response.write "inga varor här"
..eller är jag ute på en vinglig trehjuling igen?
:l
och jag har fortfarande inget RS x(
J.N.Medlem sedan apr. 20031 660 inlägg
HEJ!
Okej, om vi sammanfattar det lite enkelt, det är alltså rad tre du fastnar på här?
1if not rs.eof then
2 shBasket = Rs.Fields("shBasket").Value
3 address = Rs.Fields("address").Value
4 postalcode = Rs.Fields("postalcode").Value
city = Rs.Fields("city").Value
email = Rs.Fields("email").Value
phone = Rs.Fields("phone").Value
name = Rs.Fields("fname").Value & " " & Rs.Fields("lname").Value
else
response.write "inga varor här"
end if
Då kommer allmänt tips två in: Plocka bort raden! Fastnar den sedan på rad 4, då är det dags att bli orolig...
Skrevs shBasket ut med ett värde? Om ja, varför blir inte resten av RS något då? Det är svårt för oss att lista ut...
(Och ja, du skriver ut RS när det är tomt, helt rätt, mitt råd ska tolkas som allmänt.)
timediaMedlem sedan maj 2001451 inlägg
ja, tyvärr fastnar den på rad 4 när jag kommenterar bort rad 3 :x
J.N.Medlem sedan apr. 20031 660 inlägg
HEJ!
Då har du problem... Den skriver alltså ut shbasket, fastnar på nästa? Då finns inte det fältet, helt enkelt, felstavat eller liknande. Kommentera bort raden, fortsätt med resten av koden, som jag skrev tidigare.
Svårt att ge ett annat råd, det är helfel någonstans alltså.
Jag skriver inte ut rs-värde som du gör, utan med RS("fält"), men det har ingen betydelse, finns det inte, finns det inte.