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"
6 svar · 246 visningar · startad av aleborg
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?
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"
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)
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. :)
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?)
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