webForumDet fria alternativet
Logga in / Bli medlem

ERROR: Item cannot be found ...

ASP

13 svar · 244 visningar · startad av timedia

Medlem sedan maj 2001420 inlägg
Trådstart#1

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
Medlem sedan juni 200032 967 inlägg
#2

Då finns inget fält i recordsetet som heter shBasket?

Medlem sedan maj 2001420 inlägg
#3

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?

Medlem sedan juni 200032 967 inlägg
#4

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.

Medlem sedan maj 2001420 inlägg
#5

Någon länk till hur man kör frågor i access? :r

Medlem sedan apr. 20031 660 inlägg
#6

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?

Medlem sedan maj 2001420 inlägg
#7

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
Medlem sedan feb. 200112 078 inlägg
#8

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.

Medlem sedan maj 2001420 inlägg
#9

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%>&nbsp;<%=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>&aacute; 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">&nbsp;</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">&laquo; Tillbaka till shoppen</A> | <a href="JavaScript:print()">Skriv ut</A><br>

</FORM>

</body>
</html>
<%
	' CleanUp

	Conn.Close
	Set Conn = Nothing

%>
Medlem sedan apr. 20031 660 inlägg
#10

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()
Medlem sedan maj 2001420 inlägg
#11

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(

Medlem sedan apr. 20031 660 inlägg
#12

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

Medlem sedan maj 2001420 inlägg
#13

ja, tyvärr fastnar den på rad 4 när jag kommenterar bort rad 3 :x

Medlem sedan apr. 20031 660 inlägg
#14

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.

399 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
122 ms — deklarationer (db)
124 ms — hämta statistik (db)
144 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)