webForumDet fria alternativet

jobbigt felmess

ASP

6 svar · 246 visningar · startad av aleborg

Medlem sedan jan. 20013 341 inlägg
Frågan#1

Håller på med en komponent, men efter som jag inte är så haj än
på VB så skriver jag mycket i VBScript så därför tar jag frågan här!

Jag får det här felmeddelandet:
Object variable or With block variable not set

Men kan inte komma på varför, har gått igenom hela funktionen men hittar inte felet! Har även provat att kommentera bort allting utom det absolut viktigaste. men inget hjälper :(

Vad är det man generellt har missat när man får det här felet?

Medlem sedan dec. 19996 721 inlägg
#2

Det man vanligtvis missat är att skapa en instans av ett objekt som man anropar.

T.ex

Dim bapp as Pryl

bapp.Vissla "sången"

Som borde vara

Dim bapp as Pryl
Set bapp=New Pryl
bapp.Vissla "sången"
Medlem sedan jan. 20013 341 inlägg
#3

Hmm, men det har jag skapat

<%
Option Explicit
Dim artNr
Dim antal
Dim Item
Dim prodid
Dim strConnString
Dim cart
Dim page
Dim varCart
Dim myCart

If Request.QueryString("webshop")<>"" Then
	 If Request.QueryString("add_prod")<>"" Then
	 		artNr=trim(Request.querystring("add_prod"))

			Response.Cookies(artNr)("ProdID") = artNr
			
			If Request.Form("Items")<>"" Then
				 Response.Cookies(artNr)("Items") = Request.Form("Items")
			Else
					Response.Cookies(artNr)("Items") = 1
			End If

			Response.Redirect "webshop_cart.asp?webshop="& Request.QueryString("webshop")
End if

For each item in Response.Cookies
		If Response.Cookies(item).Haskeys Then
			 prodid = Request.Cookies(item)("ProdID") &","& prodid
			 antal =  Request.Cookies(item)("Items") &","& antal
		End If
Next

		prodid = Left(prodid, len(prodid)-1)
		antal = Left(antal, len(antal)-1)

		strConnString = "Driver={Mysql};Server=www.aleborg.com;Database=AleWebshop;UID=Astor;PWD=vincent7625"
		Set cart = Server.CreateObject("AleWebshop.Cart")
		Set page = Server.CreateObject("AleWebshop.Products")
		page.ConnectionString1 = strConnString
		cart.ConnectionString1 = strConnString

		varCart = page.Page(Request.QueryString("webshop"), "Webshop_Page_Cart")
		myCart = cart.viewCart(varCart(0,0), Request.QueryString("webshop"), prodid, antal)

		Response.Write myCart
		Set page = Nothing
		Set cart = Nothing

Else
		Response.Redirect "default.asp"
End If
%>

Och liten del av koden från komponenten, tog bort ganska mycket som jag vet att inte felet genereras:

Public Function viewCart(Sida, Webshop, ProdID, Antal) As Variant
On Error GoTo Errorcode

Dim CartSida1
Dim CartSida2
Dim HtmlSida As String
Dim Resp As Response
'Dim Req As Request
Dim InCart
Dim InItems
Dim i
Dim Errorcode As Label
Dim visa As String
Dim objRScart As Recordset
Dim strSQLcart As String
Dim Product
Dim koden As String
Dim nySida As String
'Dim dprice
'Dim totprice
'Dim koden As String
'Dim totPvat
'Dim totitem
Dim strTemp As String

'get the layout and add i to strings
 If InStr(Sida, "[CartList]") > 0 And InStr(Sida, "[/CartList]") > 0 Then
    CartSida1 = Split(Sida, "[CartList]")
    CartSida2 = Split(CartSida1(1), "[/CartList]")
    HtmlSida = CartSida2(0)
 Else
    HtmlSida = Sida
 End If
 
 
' check if there's any products in the cart
If ProdID <> "" Then

' split the products
InCart = Split(ProdID, ",")
InItems = Split(Antal, ",")

' loop the products
For i = 0 To UBound(InCart)
    
    'put the list html in a string
    visa = HtmlSida
    
    'Get the product to the cart
    strSQLcart = "SELECT Product_ID, Product_Name, Product_Art, Product_Price, Product_Vat FROM Products Where Product_ID=" & InCart(i) & " And Webshop=" & Webshop
    Set objRScart = GetConn.Execute(strSQLcart)
    
    'make sure the product still exists
    If Not objRScart.EOF Then
    ' add it to a string
    Product = objRScart.GetRows()

        ' Show product name
        If InStr(visa, "[Product_Name]") > 0 Then
            If Product(1) <> "" Then
                visa = Replace(visa, "[Product_Name]", Product(1))
            Else
                visa = Replace(visa, "[Product_Name]", "")
            End If
        End If
    Else
    'if not the product exists
    
        ' Show product name
        If InStr(visa, "[Product_Name]") > 0 Then
            visa = Replace(visa, "[Product_Name]", "Product not found")
        End If
        
    End If
' close the db
objRScart.Close
Set objRScart = Nothing
' add the product to the list
koden = koden & visa
Next

' add all products in cart to the rest of the html code
nySida = CartSida1(0) & koden & CartSida2(1)

Else
' if there's not any products in the cart

End If
viewCart = nySida
End Function

Raden som genererar felmesset:

myCart = cart.viewCart(varCart(0,0), Request.QueryString("webshop"), prodid, antal)

Medlem sedan maj 200010 687 inlägg
#4

Kan vara varCart(0,0) som ställer till det. Annars kan det vara något i komponenten som returnerar det felet. Är ofta bra att ha nån slags felhantering i komponenten som returnerar ett felmeddelande där man lätt kan utläsa vilken funktion det gick fel i och vägen dit. :)

Medlem sedan dec. 19996 721 inlägg
#5

Svårt att säga, men kör du en lokal webbserver så borde du kunna felsöka smidigt med VB, med breakpoints i komponenten.

Det enda misstänkta jag såg nu var

GetConn (kommer varifrån?)

On Error GoTo Errorcode (var finns ErrorCode?)

Dim Errorcode As Label (vad är det?)

Medlem sedan jan. 20013 341 inlägg
#6

Längst ner i funktionen har jag

Errorcode:
    strTemp = "<BR><CENTER><HR WIDTH = 50%><FONT FACE=""Verdana, Arial, Helvetica"" COLOR = White SIZE=3>"
    strTemp = strTemp & "ERROR: <B>" & Err.Description & "</B></FONT><HR WIDTH = 50%></CENTER><BR>"
    Resp.Write (strTemp)

GetConn är en annan funktion i komponenten som fukar på andra ställen!

varCart(0,0) funkar, testat och får fram ett fint resultat :)

Errorcode funkar dessvärre inte som tänkt :( kod jag fick från en upload funktion jag hittade

Medlem sedan jan. 20013 341 inlägg
#7

Hittade felet :e

felhanteringen skapade fel :e

291 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
149 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
149 ms — ändringar (db)