Avatar billede ossian Nybegynder
26. marts 2003 - 15:17 Der er 13 kommentarer

Shopping-system - Hvad er fejlen?

Jeg er igang med at lave et shoppingsystem..

http://www.netrix-media.dk/shop - jeg har bare det problem at jeg når jeg tester ordercust.asp, på min egen maskine som er den fil der placerer ordren får jeg denne fejl:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E21)
[Microsoft][ODBC Microsoft Access-driver]En valgfri funktion er ikke implementeret
/260303/resistance/ordercust.asp, line 111

Derimod, når jeg tester på mit webhotel får jeg intern serverfejl..

Jeg har lavet denne profil til at teste:
brugernavn: test@test.dk
password  : test

Nogle der vil hjælpe?
Avatar billede ossian Nybegynder
26. marts 2003 - 15:23 #1
her er kilden til ordercust:


<% OPTION EXPLICIT %>
<!-- #include file="usercheck.asp" -->
<!-- #include file="sessioncookie.asp" -->
<!-- #include file="connect.asp" -->
<!-- #INCLUDE FILE="adovbs.inc" -->
<html><head><title>Ordre</title></head><body>
<%
dim strAction
strAction = request("action")

dim arrStatusTXT(2)
arrStatusTXT(0) = "Modtaget."
arrStatusTXT(1) = "Ekspederet."
arrStatusTXT(2) = "Annulleret."

select case strAction
  case "view"
    ViewOrder
  case "place"
    WriteOrder
    ViewOrder
  case else
    ViewOrder
end select

' -------------------------------------
' Funktioner/procedurer
' -------------------------------------

sub ViewOrder()
  dim strSQLOrder, objRSOrder
  dim strSQLLine, objRSLine
  dim dblOrderAmount
  strSQLOrder = "SELECT ordernum, orderdate, shipdate, orderstatus FROM orders " & _
                "WHERE custid = " & Session("activeuser") & _
                " ORDER BY Orderdate DESC"

  set objRSOrder = server.createobject("ADODB.Recordset")
  set objRSLine = server.createobject("ADODB.Recordset")
  with objRSOrder
    .open strSQLOrder, strConnect, adOpenForwardOnly, adLockReadOnly, adCmdText
    while not .EOF
      ' skriv header
      response.write "<h4>Ordrenr: " & .Fields("ordernum") & "</h4>" & _
        "Ordredato: " & .Fields("orderdate")
      if isnull(.Fields("shipdate")) then
        response.write " Sendt: (Ikke afsendt)"
      else
        response.write " Sendt: " & .Fields("shipdate")
      end if
      response.write " Status: " & arrStatusTXT(.Fields("orderstatus")) & "<br>"

      strSQLLine = "SELECT orderlines.ItemID, items.ItemTXT, " & _
                  "orderlines.amount, items.price, cancel FROM orderlines " & _
                  "INNER JOIN items ON " & _
                  "(orderlines.itemid = items.itemid) " & _
                  "WHERE ordernum = " & .Fields("ordernum")
      dblOrderAmount = 0.0
      objRSLine.open strSQLLine, strConnect, adOpenForwardOnly, adLockReadOnly, adCmdText
      response.write "<table border=1><tr>" & _
        "<td><b>Varenr</b></td>" & _
        "<td align=right><b>Antal</b></td>" & _
        "<td><b>Navn</b></td>" & _
        "<td align=right><b>Pris</b></td>" & _
        "<td align=right><b>Pris i alt</b></td>" & _
        "</tr>"
      while not objRSLine.EOF
        ' skriv detaljer
        response.write "<tr>" & _
          "<td>" & objRSLine("ItemID") & "</td>" & _
          "<td align=right>" & objRSLine("amount") & "</td>" & _
          "<td>" & objRSLine("ItemTXT") & "</td>"
        if objRSLine("cancel") = 0 then
          response.write _ 
            "<td align=right>" & objRSLine("price") & "</td>" & _
            "<td align=right>" & objRSLine("amount")*objRSLine("price") & "</td>"
          dblOrderAmount = dblOrderAmount + objRSLine("amount")*objRSLine("price")     
        else
          response.write "<td colspan=2><i>Annulleret!</i></td>"
        end if       
        response.write "</tr>"
        objRSLine.movenext
      wend
      response.write "</table>"
      response.write "<p>Beløb i alt: " & dblOrderAmount & "</p>"
      objRSLine.close
      .movenext
    wend
    .close
  end with
  set objRSOrder = Nothing 
  set objRSLine = Nothing 
end sub


sub WriteOrder()
  dim strSQL, objCMD
  dim intOrderNum
  set objCMD = server.createobject("ADODB.Command")
  with objCMD
    .ActiveConnection = strConnect
    .CommandType = adCmdStoredProc
    .CommandText = "WriteOrder"
    .Parameters.Append .CreateParameter("return", adInteger, _
                        adParamReturnValue)
    .Parameters.Append .CreateParameter("@ordernum", adInteger, _
                        adParamOutput)
    .Parameters.Append .CreateParameter("@custid", adInteger, _
                        adParamInput)
    .Parameters("@custid") = session("activeuser")
    .Execute
    intOrderNum = .Parameters("@ordernum")
  end with
  strSQL = "INSERT INTO orderlines " & _
    "(itemid, amount, price, ordernum) " & _
    "(SELECT basket.itemid, amount, price, " & intOrderNum & " FROM basket " & _
    "INNER JOIN items ON (basket.itemid = items.itemid) " & _
    "WHERE basket.sessionid = '" & strSessionID & "')"
  with objCMD
    .ActiveConnection = strConnect
    .CommandType = adCmdText
    .CommandText = strSQL
    .execute
  end with
  strSQL = "DELETE FROM basket WHERE sessionid = '" & strSessionID & "'"
  with objCMD
    .ActiveConnection = strConnect
    .CommandType = adCmdText
    .CommandText = strSQL
    .execute
  end with
  set objCMD = Nothing
end sub

%>
</body></html>
Avatar billede oasen Nybegynder
26. marts 2003 - 15:28 #2
Skal du ikke slutte din "with" inden intOrderNum?

intOrderNum = .Parameters("@ordernum")
end with
Avatar billede ossian Nybegynder
26. marts 2003 - 15:34 #3
det gør ingen forskel..stadig samme fejl :-(
Avatar billede oasen Nybegynder
26. marts 2003 - 15:38 #4
Og hvilken er linie 111?
Avatar billede ossian Nybegynder
26. marts 2003 - 15:41 #5
sorry :-) det er :

                  .CommandText = "WriteOrder"
                  .Parameters.Append .CreateParameter("return", adInteger, _
                        adParamReturnValue)
                  .Parameters.Append .CreateParameter("@ordernum", adInteger, _
                        adParamOutput)
                  .Parameters.Append .CreateParameter("@custid", adInteger, _
                        adParamInput)
                  .Parameters("@custid") = session("activeuser")
Denne linie -->    .Execute
Avatar billede ossian Nybegynder
26. marts 2003 - 16:56 #6
jeg har nu lagt alle filerne ud på mit webhotel: http://www.netrix-media.dk/shop.zip
Avatar billede dk_akj Nybegynder
26. marts 2003 - 18:14 #7
Avatar billede ossian Nybegynder
26. marts 2003 - 18:36 #8
Hmm, det forstår jeg :-) Har lige læst, men er der ikke en der kan forklare mig hvordan jeg alternativt kan lave det?
Avatar billede dk_akj Nybegynder
26. marts 2003 - 19:58 #9
Hvilken af fejlene er det ??

//akj
Avatar billede ossian Nybegynder
26. marts 2003 - 20:13 #10
det er fejlen i linie 111...

.CommandText = "WriteOrder"
                  .Parameters.Append .CreateParameter("return", adInteger, _
                        adParamReturnValue)
                  .Parameters.Append .CreateParameter("@ordernum", adInteger, _
                        adParamOutput)
                  .Parameters.Append .CreateParameter("@custid", adInteger, _
                        adParamInput)
                  .Parameters("@custid") = session("activeuser")
Denne linie -->    .Execute

hent evt hele systemet: http://www.netrix-media.dk/shop.zip - og kør det lokalt..så giver det et bedre billede..

På forhånd tak..

:-)

Ossian
Avatar billede dk_akj Nybegynder
27. marts 2003 - 09:55 #11
Jeg har kigget lidt i diverse nyhedsgrupper / websites.

Det ser ud til at det er fordi access ikke understøtter "output parameters"

Er det noget kode du selv har skrevet eller er det noget du er ved at rette til ??

Jeg kunne forestille mig at du skulle prøve på en sqlserver eller msde.

//akj
Avatar billede ossian Nybegynder
27. marts 2003 - 12:05 #12
hey du :-) Og tak for hjælpen! Det er noget kode jeg er ved at rette til.. Jeg skulle bruge et shoppingsystem og købte bogen Tips & Tricks til ASP & SQL fra Globe og har skrevet som en gal de sidste par dage for at på tilpasset koden til mit projekt..

Ved du om der findes et alternativ til "output parameters" når man kører access?? Har ikke den store erfaring med sql eller msde(hvad msde så end er :-))
Avatar billede dk_akj Nybegynder
27. marts 2003 - 12:09 #13
Nej jeg har aldrig arbejdet med "dem", hvad vil du opnå med output parametrene ??

MSDE er en lite version af sqlserveren den har samme funktionalitet men når man køber den får man ikke de administrative værktøjer med som man får til Sql-serveren.
Desuden er den begrænset til 2 GB data, men det er vel også nok for de fleste.
Msde følger med hvis du køber visual studio eller office2000 pro, og sikkert også flere andre ms produkter.

//akj
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