Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    201

    Tipo di errore: ADODB.Recordset (0x800A0BCD)

    Buongiorno a tutti

    Ho un problema con una pagina asp che genera questo errore:

    Tipo di errore:
    ADODB.Recordset (0x800A0BCD)
    Il record corrente corrisponde all'inizio o alla fine del file oppure è stato eliminato. Per eseguire l'operazione richiesta è necessario disporre di un record corrente.
    /c_carico.asp, line 73

    di seguito il codice della pagina, non capisco perchè genera errore, praticamente è come se il record non esistesse, ma non è così.

    <%
    Set Conn=Server.CreateObject("ADODB.Connection")
    strConn="driver={Microsoft Access Driver (*.mdb)}; "
    strConn=strConn & " DBQ=" & Server.MapPath("magazzino.mdb")
    strConn=strConn & ";pwd=" & strCode
    Conn.Open strConn
    sql = "Select * from merce where barre like '%" & Cerca & "%' or lotto like '%" & Cerca & "%'or descrizione like '%" & Cerca & "%'"

    Dim id_merc, button
    dim qta, qta_merce
    dim nuova_qta


    qta = request.form("quantita")
    button = request.form("button")
    id_merc = request.QueryString("ID_merc")
    %>

    <%IF button = "Carico" THEN%>

    <%
    sql_carico = "SELECT * FROM carico INNER JOIN merce ON carico.ID_merc=merce.ID_merc;"
    Set rs_carico = Server.CreateObject("ADODB.Recordset")
    rs_carico.Open sql_carico, conn ,3,3

    dim tot_car, car

    car = rs_carico("prezzo")
    tot_car = (car * qta)

    rs_carico.addnew
    rs_carico(1) = id_merc
    rs_carico(2) = qta
    rs_carico(4) = tot_car
    rs_carico.update

    rs_carico.Close
    set rs_carico = Nothing

    sql_qta_merce = "SELECT quantita, prezzo, tot FROM merce WHERE ID_merc = "& id_merc &";"

    Set rs_qta_merce = Server.CreateObject("ADODB.Recordset")
    rs_qta_merce.Open sql_qta_merce, conn ,3,3

    dim prez, total_m, total

    qta_merce = rs_qta_merce("quantita")
    prez = rs_qta_merce("prezzo")
    total_m = rs_qta_merce("tot")

    rs_qta_merce.Close
    set rs_qta_merce = Nothing

    nuova_qta = CCur(qta_merce) + CCur(qta)
    total = ((qta * prez) + total_m)

    sql_update_merce = "UPDATE merce SET quantita = '"& nuova_qta &"', tot='"& total &"' WHERE ID_merc = "& id_merc &";"
    conn.Execute(sql_update_merce)

    response.redirect "cerca.html"
    %>


    <%ELSE%>

    <%
    sql_scarico = "SELECT * FROM scarico INNER JOIN merce ON scarico.ID_merc=merce.ID_merc;"
    Set rs_scarico = Server.CreateObject("ADODB.Recordset")
    rs_scarico.Open sql_scarico, conn ,3,3

    dim tot_scar, scar

    rs_scarico("prezzo") = scar <- linea 73
    tot_scar = (scar * qta)

    rs_scarico.addnew
    rs_scarico(1) = id_merc
    rs_scarico(2) = qta
    rs_scarico(4) = tot_scar
    rs_scarico.update

    rs_scarico.Close
    set rs_scarico = Nothing

    sql_qta_merce = "SELECT quantita,prezzo,tot FROM merce WHERE ID_merc = "& id_merc &";"
    Set rs_qta_merce = Server.CreateObject("ADODB.Recordset")
    rs_qta_merce.Open sql_qta_merce, conn ,3,3

    qta_merce = rs_qta_merce("quantita")
    prez = rs_qta_merce("prezzo")
    total_m = rs_qta_merce("tot")

    rs_qta_merce.Close
    set rs_qta_merce = Nothing

    nuova_qta = CCur(qta_merce) - CCur(qta)
    total = (total_m - (qta * prez))

    sql_update_merce = "UPDATE merce SET quantita = '"& nuova_qta &"', tot='"& total &"' WHERE ID_merc = "& id_merc &" ;"
    conn.Execute(sql_update_merce)

    response.redirect "cerca.html"
    %>

    <%END IF%>

    <%
    Conn.close
    Set Conn = Nothing
    %>

    Qualcuno ha qualche idea?

  2. #2
    un classico, direi

    codice:
    rs_scarico.Open sql_scarico, conn ,3,3
    dim tot_scar, scar
    'qui devi controllare che la query abbia restituito qualcosa (con IF NOT RS_SCARICO.EOF THEN ....
    rs_scarico("prezzo") = scar <- linea 73

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    201
    Grazie optime, però resto comunque dubbioso perchè...
    La query che vado a chiamare è per forza piena perchè mima di effettuare uno scarico io inserisco sempre l'oggetto e la ricerca dell'oggetto fa riferimento all'ID...
    Ma il dubbio esistenziale è:
    non dovrei avere lo stesso problema con la prima query?

    sql_carico = "SELECT * FROM carico INNER JOIN merce ON carico.ID_merc=merce.ID_merc;"
    Set rs_carico = Server.CreateObject("ADODB.Recordset")
    rs_carico.Open sql_carico, conn ,3,3

    dim tot_car, car

    car = rs_carico("prezzo")
    tot_car = (car * qta)

    ???

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    201


    IF NOT RS_SCARICO.EOF THEN
    dim tot_scar, scar

    rs_scarico("prezzo") = scar
    tot_scar = (scar * qta)

    rs_scarico.addnew
    rs_scarico(1) = id_merc
    rs_scarico(2) = qta
    rs_scarico(4) = tot_scar
    rs_scarico.update

    rs_scarico.Close
    set rs_scarico = Nothing
    else
    .......
    end if

    Ok, l'errore non compare più... ehm... però... non inserisce i dati nel db, o meglio mi esegue la sottrazione, ma nel db non vedo inserire il record ?!

  5. #5
    evidentemente la query NON restituisce record. controllala

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    201
    Buon pomeriggio,
    ho fatto una piccola prova, ma con esito nefasto, magari qualcuno saprà darmi una dritta.

    Avendo problemi nel creare l'oggetto recordset all'interno della "funzione" ho fatto una "dichiarazione" più globale...
    Ecco il senso:

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">


    <%
    Set Conn=Server.CreateObject("ADODB.Connection")
    strConn="driver={Microsoft Access Driver (*.mdb)}; "
    strConn=strConn & " DBQ=" & Server.MapPath("magazzino.mdb")
    strConn=strConn & ";pwd=" & strCode
    Conn.Open strConn
    sql = "Select * from merce where barre like '%" & Cerca & "%' or lotto like '%" & Cerca & "%' or descrizione like '%" & Cerca & "%'"
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql, conn ,3,3

    Dim qta, id_merc, button, totale_merce
    Dim qta_merce
    Dim nuova_qta

    totale_merce=rs("prezzo") <--------------------- oggetto visibile globale...
    qta = request.form("quantita")
    button = request.form("button")
    id_merc = request.QueryString("ID_merc")

    %>

    <title>Untitled Document</title>
    </head>

    <body>

    <%IF button = "Carico" THEN%>

    <%

    sql_carico = "SELECT * FROM carico INNER JOIN merce ON carico.ID_merc = merce.ID_merc"
    Set rs_carico = Server.CreateObject("ADODB.Recordset")
    rs_carico.Open sql_carico, conn ,3,3

    rs_carico.addnew
    rs_carico(1) = id_merc
    rs_carico(2) = qta
    rs_carico(4) = totale_merce
    rs_carico.update

    rs_carico.Close
    set rs_carico = Nothing

    sql_qta_merce = "SELECT quantita,prezzo,tot FROM merce WHERE ID_merc = "& id_merc &";"
    Set rs_qta_merce = Server.CreateObject("ADODB.Recordset")
    rs_qta_merce.Open sql_qta_merce, conn ,3,3

    dim prezzo_merce, tot_merce, totale_aggiornato

    prezzo_merce = rs_qta_merce("prezzo")
    qta_merce = rs_qta_merce("quantita")
    tot_merce = rs_qta_merce("tot")

    rs_qta_merce.Close
    set rs_qta_merce = Nothing

    nuova_qta = ccur(qta_merce) + ccur(qta)

    totale_aggiornato = ccur(nuova_qta) * ccur(prezzo_merce)

    sql_update_merce = "UPDATE merce SET quantita = '"& nuova_qta &"', tot='"& totale_aggiornato &"' WHERE ID_merc = "& id_merc &";"
    conn.Execute(sql_update_merce)

    response.redirect "cerca.html"
    %>


    <%ELSE%>

    <%

    sql_scarico = "SELECT * FROM scarico INNER JOIN merce ON scarico.ID_merc=merce.ID_merc;"
    Set rs_scarico = Server.CreateObject("ADODB.Recordset")
    rs_scarico.Open sql_scarico, conn ,3,3


    rs_scarico.addnew
    rs_scarico(1) = id_merc
    rs_scarico(2) = qta
    rs_scarico(4) = totale_merce
    rs_scarico.update

    rs_scarico.Close
    set rs_scarico = Nothing

    sql_qta_merce = "SELECT quantita,prezzo,tot FROM merce WHERE ID_merc = "& id_merc &";"
    Set rs_qta_merce = Server.CreateObject("ADODB.Recordset")
    rs_qta_merce.Open sql_qta_merce, conn ,3,3

    dim prezzo_merce_sc, tot_merce_sc, totale_aggiornato_sc

    qta_merce = rs_qta_merce("quantita")
    prezzo_merce_sc = rs_qta_merce("prezzo")
    tot_merce_sc = rs_qta_merce("tot")

    rs_qta_merce.Close
    set rs_qta_merce = Nothing


    nuova_qta = ccur(qta_merce) - ccur(qta)
    totale_aggiornato_sc = ccur(nuova_qta) * ccur(prezzo_merce_sc)

    sql_update_merce = "UPDATE merce SET quantita = '"& nuova_qta &"', tot='"& totale_aggiornato_sc &"' WHERE ID_merc = "& id_merc &" ;"
    conn.Execute(sql_update_merce)

    response.redirect "cerca.html"
    %>

    <%END IF%>


    </body>
    </html>
    <%
    rs.Close
    set rs = Nothing
    Conn.close
    Set Conn = Nothing
    %>

    Ora la mia domanda è, così facendo "totale_merce" prende il valore del prezzo del primo record caricato nel db, ovviamente io devo prendere il prezzo del record selezionato es. record 2 prezzo del record 2 ...
    Come potrei fare?

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    201
    optime, vorrei un parere/aiuto... Perchè questa query:

    sql_carico = "SELECT * FROM carico LEFT JOIN merce ON carico.ID_merc = merce.ID_merc"
    Set rs_carico = Server.CreateObject("ADODB.Recordset")
    rs_carico.Open sql_carico, conn ,3,3
    dim p_carico

    p_carico= rs_carico("prezzo")

    in p_carico inserisce "0" ???
    Non capisco proprio...

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    201
    Ovviamente ho provato anche con INNER JOIN... Sempre solito risultato.

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    201
    Mi rispondo da solo...

    "SELECT * FROM carico INNER JOIN merce ON carico.ID_merc = merce.ID_merc where merce.ID_merc ="& id_merc &" "

    pensavo non si posse fare... invece...

    Grazie a tutti per l'aiuto!!!


  10. #10
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    tutto è bene...

    per favore ricorda che sei tenuto, come tutti, ad utilizzare il tag [CODE][/CODE] per postare codice, grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.