ho provato a modificare i campi di un database ma compare questo errore:
Tipo di errore:
Microsoft JET Database Engine (0x80004005)
Per l'operazione è necessaria una query aggiornabile.
disponibilita.asp, line 77
questa è il codice:
<%@ LANGUAGE="JScript" %>
<% /* inserisco i dati ricevuti in un vettore */
var prodottiordinati = new Array();
var nrprodotti = 0;
var e = new Enumerator(Request.Form);
for (; !e.atEnd(); e.moveNext())
{
formItem = e.item();
value = Request.Form(formItem);
if(formItem.substr(0,3) == "qta")
{
if(value > 0)
{
prodottiordinati[nrprodotti] = new Array();
prodottiordinati[nrprodotti]["idProdotto"] = formItem.substr(3,formItem.length);
prodottiordinati[nrprodotti]["quantita"] = value;
nrprodotti++;
}
}
}
/* Creo la connessione al database */
var con;
var sConString;
var sSQLString;
con = Server.CreateObject("ADODB.Connection");
sConString = "Provider = Microsoft.Jet.OLEDB.4.0; "
+ "Data Source = " + Server.MapPath("./pasticceria.mdb");
con.Mode = 3; //1 = adModeRead, 3 = adModeReadWrite
con.Open(sConString);
var rst, sql;
rst = Server.CreateObject("ADODB.Recordset");
var qta, qtadisponibile;
var codicetabella = "";
var procediconlordine = true;
/* verifico che ci siano quantita disponibili sufficienti per tutti i prodotti ordinati */
for(i=0; i < prodottiordinati.length; i++)
{
sql = "SELECT idProdotto, nomeProdotto, qtaDisponibile FROM prodotti WHERE idProdotto = " + prodottiordinati[i]["idProdotto"];
rst.Open(sql, con, 0, 3); //0 = adOpenForwardOnly, 3 = AdLockReadOnly
qta = prodottiordinati[i]["quantita"];
qtadisponibile = rst.fields("qtaDisponibile").value;
if(qtadisponibile < qta)
{
procediconlordine = false;
codicetabella+=" <tr>\n";
codicetabella+=" <td class=\"prodotto\">" + rst.fields("nomeProdotto").value + "</td>\n";
codicetabella+=" <td class=\"numero\">" + qtadisponibile + "</td>\n";
codicetabella+=" <td class=\"numero\">" + qta + "</td>\n";
codicetabella+=" </tr>\n";
}
rst.Close();
}
/* se ci sono procedo con l'aggiornamento del database */
if(procediconlordine == true)
{
for(i=0; i < prodottiordinati.length; i++)
{
qta = prodottiordinati[i]["quantita"];
sql = "UPDATE prodotti SET qtaDisponibile = qtaDisponibile - " + qta + " WHERE idProdotto = " + prodottiordinati[i]["idProdotto"];
con.Execute(sql);
}
}
con.Close();
rst = null;
con = null;
/* se non ci sono segnalo all'utente i prodotti non disponibili */
%>
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" type="text/css" href="style.css" />
<title>
Pasticceria - Prodotti Non Disponibili
</title>
</head>
<body>
<%
if(procediconlordine == false)
{
%>
Siamo spiacenti, ma la quantitá di uno o più prodotti da lei
scelti non é al momento disponibile.
<table class="tabella" align="center">
<tr>
<th>Prodotto</th><th>Disponibilità</th><th>Ordinato</th>
</tr>
<% Response.write(codicetabella) %>
</table>
<table align=center ID="Table1">
<tr>
<td>
<input type="button" value="Modifica Ordine" onClick="window.location='ordinazione.asp'" ID="Button1" NAME="Button1">
<input type="button" value="Annulla Ordine" onClick="window.location='index.asp'" ID="Button2" NAME="Button2">
</td>
</tr>
</table>
<%} else {%>
<h3> Ordinazione eseguita con successo!!!
Grazie e arrivederci alla prossima ordinazione.
</h3>
Torna alla pagina iniziale
<%
}
%>
</body>
</html>
dov'è l'errore?![]()

Rispondi quotando
