• User Attivo

    errore assurdo cancellazione record: 80020009

    buongiorno a tutti,
    sto sbattendo la testa su un errore che il sistema mi restituisce durante una semplicissima cancellazione di un record.

    La cosa assurda è che lo stesso script funziona correttamente su un'altra pagina, ma su questa mi dà errore....

    vi posto il codice attraverso cui eseguo la cancellazione del record:

    
    Dim conn
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("/mdb-database/almoDB.mdb")
    Set rs = Server.CreateObject("ADODB.Recordset") 
    rs.Open "select * from misura", conn 
    Dim id
        id = Request.QueryString("id")
        If id <> "" Then
            conn.Execute("DELETE * FROM misura WHERE id = " & id)
        End If
    
    ```e questa è la bella tabella con l'elenco dei record e link per la cancellazione che eseguo direttamente sulla stessa pagina:
    
    

    <%Do while NOT RS.EOF%>
    <table width="100%" border="0" cellpadding="3" cellspacing="0" class="tbody">
    <tr>
    <td width="72%"><%=rs("descrizione")%></td>
    <td width="28%"><div align="center"><a href="canc_misura.asp?id=<%=rs("id")%>" class="txt_campi">cancella</a></div></td>
    </tr>
    <%
    RS.MoveNext
    Loop
    RS.Close
    Set RS = Nothing
    conn.Close
    Set conn=Nothing
    %>
    </table>

    
    

    Microsoft OLE DB Provider for ODBC Drivers error '80020009'
    Un handle di riga fa riferimento a una riga eliminata o a una riga contrassegnata per l'eliminazione.
    /admin/canc_misura.asp, line 0

    
    ringrazio in anticipo per la gentile attenzione!  :x

  • User

    Prova a spostare la select dopo la delete ... Mai capitata una cosa del genere :mmm: ...


  • User Attivo

    Credo dovresti spostare delle parti di codice così:

    
    Dim conn
    Set conn =  Server.CreateObject("ADODB.Connection")
    conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("/mdb-database/almoDB.mdb")
    Dim id
        id = Request.QueryString("id")
        If id <> "" Then
            conn.Execute("DELETE * FROM misura WHERE id = " & id)
        End If
    
    Set rs = Server.CreateObject("ADODB.Recordset") 
    rs.Open "select * from misura", conn 
    
    
    
    

    Il motivo del tuo errore potrebbe essere che cerchi di cancellare un record dopo averlo messo in recordset. Invece devi prima cancellare e poi creare il recordset.
    Al 99% dovrebbe essere così