Avatar billede speedster_dk Nybegynder
30. oktober 2002 - 12:57 Der er 4 kommentarer og
1 løsning

Either BOF or EOF is True ... og !?

Jeg har en indkøbskurv som gider mig den velkendte:

ADODB.Recordset error '800a0bcd'
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

checkout.asp, line 214

når jeg ændre antallet på varene i kurven til nul og opdatere. Det er ikke helt meningen, jeg skal stadig kunne se kurven den skal bare være tom ...

Herunder er de to stumper asp som jeg regner med problemet er i, jeg kan bare ikke finde det ... :
************************************************
<% 
else
       
        intOrderID = cstr(Session("orderID"))

        set rsProd = Server.CreateObject("ADODB.Recordset")
        rsProd.Open "SELECT * FROM itemsOrdered " _
            & "WHERE orderID="& intOrderID, _
            Conn, adOpenDynamic, adLockPessimistic, adCmdText
        while not rsProd.EOF

            element = "quant" & rsProd("productID")
            intQuant = Request.form(element)

            if intQuant <> "" and isNumeric(intQuant) then
                if intQuant = 0 then
                    rsProd.Delete
                else
                    rsProd("quantity") = intQuant
                end if
            end if
            rsProd.Update
            rsProd.MoveNext
        wend

        if Request.form("control") = "Update Order" then

            rsProd.Close
            set rsProd = Nothing
   
            Conn.Close
            set Conn = Nothing

            Response.Redirect "reviewOrder.asp"
        else
       
        if rsProd.BOF and rsProd.EOF then
                rsProd.Close
                set rsProd = Nothing
           
                Conn.Close
                set Conn = Nothing
               
                Session("orderID") = ""
                Response.Redirect "checkout.asp"
           
        else
%>
*************************************************

<%
            set rsProdInfo = Server.CreateObject("ADODB.Recordset")
            rsProdInfo.Open "products", Conn, adOpenStatic, adLockOptimistic, adCmdTable

            intTotal = 0

            rsProd.MoveFirst
            while not rsProd.EOF
                rsProdInfo.MoveFirst
                rsProdInfo.Find "productID = " & rsProd("productID")
                intProdID = rsProd("productID")
                strProdName = rsProdInfo("productName")
                intPrice = formatNumber(rsProdInfo("productPrice"), 2)
                intQuant = rsProd("quantity")
                intExtPrice = formatNumber((intPrice * intQuant), 2)
                intTotal = intTotal + intExtPrice
%>

************************************************

Jeg ved at EOF og BOF er et 'FAQ', men jeg har ikke kunne bruge de andre spørgsmål til at rette min fejl, og her på 3. time er det ved at være lidt træls ...

Bonus spørgsmål:
Når jeg retter antallet og kurven ikke tømmes helt, så springer jeg videre til betalingssiden (ordren), det skal den egentlig heller ikke, den skal blive i kurven. Så hvis du lige kan se hvor jeg skal rette det er det helt raket !
Avatar billede larsen Nybegynder
30. oktober 2002 - 13:08 #1
I starten står der :

while not rsProd.EOF

Prøv at ændre den til :
while not rsProd.EOF AND NOT rsProd.BOF
Avatar billede speedster_dk Nybegynder
30. oktober 2002 - 13:45 #2
det hjælper ikke ... samme fejl ... har det nogen relevans at filen ender med flg.:
<%       
rsProd.Close
set rsProd = Nothing

rsProdInfo.Close
set rsProdInfo = Nothing
        end if
    end if
end if

Conn.Close
set Conn = Nothing
%>
********************
Avatar billede eagleeye Praktikant
30. oktober 2002 - 14:00 #3
hvis rsProdInfo bliver tom ved denne SQL så kommer fejel linien:

rsProdInfo.movefirst

Som også bare kan fjerenes da et recordset altid vil startre på føste record.


          set rsProdInfo = Server.CreateObject("ADODB.Recordset")
            rsProdInfo.Open "products", Conn, adOpenStatic, adLockOptimistic, adCmdTable

            intTotal = 0

  '          rsProd.MoveFirst  '<--- kan fjernes
            while not rsProd.EOF
Avatar billede speedster_dk Nybegynder
30. oktober 2002 - 14:08 #4
Ja, det hjalp, så er der kun bonusspørgsmålet tilbage ...
Avatar billede speedster_dk Nybegynder
30. oktober 2002 - 14:40 #5
og fejlen er reelt i reviewOrder.asp, er den ikke ?:

kodesnip:

<form action="checkout.asp" method="post" id="form1" name="form1">
<table>
    <tr>
      <td>Antal</td>
      <td>Produkt</td>
            <td>Enhedspris</td>
            <td>Total</td>
      </tr>
      <%     
    set rsReview = Conn.Execute(sqlText)
    while not rsReview.EOF
      intProdID = rsReview("productID")
      strProdName = rsReview("productName")
      intProdPrice = rsReview("productPrice")
      intQuant = rsReview("quantity")
      intTotal = intTotal + (intQuant * intProdPrice)
    %>
        <tr>
            <td>
                <input name="quant<%= intProdID %>" size="3" value=" <%=intQuant%>" onChange="HandleError(this)">
                </td>
                <td>&nbsp;<%= strProdName %>
                </td>
                <td>Kr.<%= formatNumber(intProdPrice, 2) %>
                    </td>
                <td>Kr.<%= formatNumber((intQuant * intProdPrice), 2) %>
                </td>
            </tr>
<%             
rsReview.MoveNext
wend

rsReview.Close
set rsReview = Nothing
%>       
        <tr>
            <td>Total:</td>
            <td>Kr.<%= formatNumber(intTotal,2) %>
        </td>
        </tr>
        </table>
        <p><input type="submit" name="control" value="Opdater ordre">
        <input type="submit" name="control" value="G&aring; til kassen"></p>
        </form>

******************************
Har fjernet lidt overflødigt ...
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