Avatar billede jbjerre Nybegynder
27. juli 2003 - 23:07 Der er 11 kommentarer og
1 løsning

Fejl: ASP 0185 (0x80020003)

Hej Alle

Jeg har tilpasset en kode fra en bog fra IDG.
Det er en indkøbskurv der fungerer med en XML side

Jeg har testet XML delen og den fungerer.
Mit problem opstår når jeg skal omdanne den rå XML.
Jeg får følgende fejl:

Fejltype:
Response-objekt, ASP 0185 (0x80020003)
En standardegenskab for objektet blev ikke fundet.
/Bag.Asp

Her er min kode:

<% Response.Buffer = True %>
<html>
<head>
    <title>Implementering af indkøbskurv</title>
</head>
<body bgcolor="#ffffff">
<%
' get or create the bag
Set BagItems = LoadXMLBag()

'Tilføj eller tilpas produkter
if Request.ServerVariables("CONTENT_LENGHT")>0 Then
    Select case Tirm(Request.Form("DO"))
        Case "Shop for more"
            Response.redirect "Test1.Asp"
            Response.End
        Case "Recalculate"
            RecalcBag BagItems
        case "Check out"
           
    end select
else                   
    Msg = Trim(request.queryString("Test"))
    AddtlProduct Msg, BagItems
end if

Session("BagItems") = BagItems.XML

If BagItems.hasChildNodes Then
    PrintBag BagItems
else
    Response.write "TEST"   
end if       
%>

</Body>
</Html>

<SCRIPT LANGUAGE=VBSCRIPT RUNAT=SERVER>

Function LoadXMLBag()
    Set XMLDoc = Server.CreateObject("Microsoft.XMLDOM")
    If Not IsEmpty(Session("BagItems")) Then
        XMLDoc.loadXML CStr(Session("BagItems"))
        Set BagItems = XMLDoc.documentElement
    Else
        Set BagItems = XMLDoc.createElement("BagItems")
        Set XMLDoc.documentElement = BagItems
    End If
    Set LoadXMLBag = BagItems
End Function

Sub AddtlProduct(Msg, BagItems)
    bValid = True

    if "" = Msg  or not IsNumeric(Msg)then
        bValid = false
    else
        set cnn = server.CreateObject("Adodb.connection")
        Cnn.ConnectionString = Application("Connectionstring")
        Cnn.Open
        strRS = "SELECT tblProdukter.produktID, tblProdukter.Navn, tblProdukter.Beskrivelse, tblProdukter.Pris FROM tblProdukter WHERE produktID =" &  Msg
        set rs = Server.CreateObject("ADODB.Recordset")
        set rs = Cnn.Execute(strRS)
       
        if rs.EOF and rs.BOF then
            bValid = false
        else
            avarProduct = rs.GetRows()
        end if
        rs.close
        set rs = Nothing
        Cnn.close
        set cnn = nothing
    end if   
    'Hvis varen findes, tilføjes den til indkøbskurven
    if bValid then
        AddProductToBag avarProduct, BagItems
    End If
End Sub   

Sub AddProductToBag(avarProduct, BagItems)
    Set XMLDoc = BagItems.ownerDocument
    Set nodeFind = BagItems.selectNodes("product[@produktID=""" & Msg & """]")
    If Not nodeFind.length > 0 Then
        Set product = XMLDoc.createElement("product")
        Set attr = XMLDoc.createAttribute("produktID")
        attr.Text = avarProduct(0,0)
        product.attributes.setNamedItem(attr)
        Set attr = XMLDoc.createAttribute("Navn")
        attr.Text = Server.HtmlEncode(avarProduct(1,0))
        product.attributes.setNamedItem(attr)
        Set attr = XMLDoc.createAttribute("Beskrivelse")
        attr.Text = Server.HtmlEncode(avarProduct(2,0))
        product.attributes.setNamedItem(attr)
        Set attr = XMLDoc.createAttribute("Pris")
        attr.Text = avarProduct(3,0)
        product.attributes.setNamedItem(attr)
        product.text = "1"
        BagItems.appendChild(product)

    End If
End Sub

Sub PrintBag(BagItems)
    Response.write "<FORM METHOD=""POST"" ACTION="""
    Response.write Request.ServerVariables("SCRIPT_NAME") & """>"
    Response.write "<TABLE><TR><TH>Units</TH>"
    Response.write "<TH COLSPAN=2>Product</TH><TH>Unit Price</TH><TH>Price</TH>"
    Response.write "</TR>" & vbCrLf
    For Each item In BagItems.childNodes
        Response.write "<TR>"
        Response.write "<TD><input type=""TEXT"" name=""Qty"
        Response.write item.attributes.getNamedItem("produktID")
        Response.write """ VALUE=""" & item.text & """ SIZE=""3"">"
        Response.write "<TD>" & item.attributes.getNamedItem("Navn") & "</TD>"
        Response.write "<TD>" & item.attributes.getNamedItem("Beskrivelse") & "</TD>"
        nUnitPrice = item.attributes.getNamedItem("Pris")
        nSubTotal = item.text * nUnitPrice
        nTotal = nTotal + nSubTotal
        Response.write "<TD>" & FormatCurrency(nUnitPrice) & "</TD>"
        Response.write "<TD><B>" & FormatCurrency(nSubTotal) & "</B></TD>"
        Response.write "</TR>" & vbCRLF
    Next
    Response.write "<TR><TD COLSPAN=5><HR></TD></TR>"
    Response.write "<TR><TD COLSPAN=3></TD><TD><B>Total:</B></TD>"
    Response.write "<TD><B>" & FormatCurrency(nTotal) & "</B></TD></TR>" & vbCrLf
    Response.write "<TR><TD COLSPAN=5 ALIGN=""RIGHT"">"
    Response.write "<INPUT TYPE=SUBMIT NAME=""DO"" VALUE=""Shop for more"">&nbsp;"
    Response.write "<INPUT TYPE=SUBMIT NAME=""DO"" VALUE=""Recalculate"">&nbsp;"
    Response.write "<INPUT TYPE=SUBMIT NAME=""DO"" VALUE=""Check out"">"
    Response.write "</TD></TR></TABLE></FORM>"
End Sub

Sub RecalcBag(BagItems)
    For each item in BagItems.childNodes
        nQty = Trim(request.form("Qty" & item.attributes.getNamedItem("produktID")))
        If "" <> nQty And isNummeric(nQty)  Then
            if nQty < 1 Then
                BagItems.removeChild Item           
            else
                item.text = nQty
            end if
        end if
    next
End Sub
</SCRIPT>

Håber nogen kan hjælpe


Hilsen JBjerre
Avatar billede jbjerre Nybegynder
27. juli 2003 - 23:09 #1
Jeg er sikker på at det er "PrintBag(BagItems)" delen den den er gal med.
Avatar billede medions Nybegynder
27. juli 2003 - 23:40 #2
I hvilken linje melder den fejlen?

//>Rune
Avatar billede jbjerre Nybegynder
28. juli 2003 - 12:50 #3
Hej Rune

Der er ingen linie angivelse.
Fejlen ser således ud

Fejltype:
Response-objekt, ASP 0185 (0x80020003)
En standardegenskab for objektet blev ikke fundet.
/Bag.Asp
Avatar billede medions Nybegynder
28. juli 2003 - 12:55 #4
Hej JBjerre

Det kan måske være fordi komponenten ikke er installeret på serveren!

//>Rune
Avatar billede nanosoft00 Nybegynder
28. juli 2003 - 13:02 #5
tjek med bogen hvilken version af xmldom objecktet du skal have. du kan hente en nyere version på microsoft's side.
Avatar billede zembla Nybegynder
28. juli 2003 - 13:24 #6
Du har muligvis en fejl i begyndelsen, ca linje 13:
  Select case Tirm(Request.Form("DO"))

- jeg kan ikke se at du har defineret nogen funktion med det navn. Skulle du i stedet bruge asp-funktionen 'trim'?

/Zembla
Avatar billede jbjerre Nybegynder
28. juli 2003 - 19:57 #7
Til Rune

Hvilket komponent tænker du på ???

JBjerre
Avatar billede jbjerre Nybegynder
28. juli 2003 - 20:02 #8
Hej NanoSoft00

Jeg benytter Win XP og opdaterer jævnligt.
Hvor checker jeg xmldom versionen ???
Og hvor på Microsofts hjemmeside finder jeg opdateringen

JBjerre
Avatar billede jbjerre Nybegynder
28. juli 2003 - 20:06 #9
Hej Zembla

Select case Tirm(Request.Form("DO"))

DO er en funktion der kommer fra SUBMIT knapperne der oprettes i
Sub PrintBag(BagItems)

JBjerre
Avatar billede zembla Nybegynder
29. juli 2003 - 08:41 #10
Det er ikke 'DO' som er problemet ... men 'Tirm'. Det typiske i sammenhængen ville være at skrive:

Select case Trim(Request.Form("DO"))

Altså bytte om på I og R i 'Tirm'!!!
Avatar billede jbjerre Nybegynder
29. juli 2003 - 10:26 #11
Hej Zembla

Helt klart en stavefejl

MEN - de løser desværre ikke problemet
fejlmeddelesen er stadig den samme

JBjerre
Avatar billede jbjerre Nybegynder
30. juli 2003 - 14:11 #12
Hej Alle

Problemet er løst

I "Sub PrintBag(BagItems)" har jeg rettet alle "item.attributes.getNamedItem" til "item.getAttribute" i For Each sætningen.

Hilsen JBjerre
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester