8 messaggi dal 11 maggio 2005
Salve a tutti,

ho un problema con una semplice pagina asp che mi dovrebbe consenture di modificare un database access.

Questo è il codice della pagina che mi fa visualizzare le informazioni da cui tramite un form dovrei modificare ed aggiornare i campi nel database:

<%
Dim cn
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("/riservato/mdb-database/cinquecitta.mdb")

Dim rs
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT * from bandi", cn
Response.write("<table align='center' cellspacing='10' cellpadding='10' bgcolor='white' border='1' width='90%' rules='none'>")
Response.write("<tr><td><font size='3' face='arial'><b>Id</b></font></td><td><font size='3' face='arial'><b>Descrizione</b></font></td><td><font size='3' face='arial'><b>Nome file</b></font></td><td>&nbsp;</td></tr>")
Do While Not rs.EOF

Response.write("<form action='modbanact.asp' method='post'><tr><td><input type='text' name='idval' size='5' value='")
Response.write(rs.Fields("id"))
Response.write("'></td><td><input type='text' name='nom' value='")
Response.write(rs.Fields("descrizione"))
Response.write("'></td><td><input type='text' name='nom' value='")
Response.write(rs.Fields("nome"))
Response.write("'>")
Response.write("</td>")
Response.write("<td>")
Response.write("<input type='submit' value='modifica'></form></td></tr>")
rs.MoveNext()

Loop
Response.write("</table>")
cn.Close()
Set cn=Nothing
%>

Fin quì tutto ok, la pagina mi visualizza correttamente le informazioni.

Una volta però che tramite il form lancio la pagina modbanact.asp ho il seguente errore:

ADODB.Recordset error '800a0bb9'

Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

/riservato/modbanact.asp, line 70

Il listato della pagina modbanact.asp è il seguente:

<%
Dim cn
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("/riservato/mdb-database/cinquecitta.mdb")

Dim rs
Dim des, nm, valid
valid=Request.form("idval")
des=Request.form("descr")
nm=Request.form("nom")
sql = "UPDATE bandi SET descrizione='"&des&"', nome='"&nm&"' WHERE id="&valid
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Update sql, cn
rs.Close
set rs = Nothing
cn.Close
set cn = Nothing
%>

La line 70 è quella con la query e cioè:

sql = "UPDATE bandi SET descrizione='"&des&"', nome='"&nm&"' WHERE id="&valid

Sicuramente sarà un errore banale ma vista la mia poca esperienza con asp non sono riuscito a capirne la causa....ringrazio anticipatamente chiunque volesse darmi una mano!
Modificato da andrea77 il 24 maggio 2006 18.47 -
593 messaggi dal 09 ottobre 2002
www.dotnetside.org
Per eseguire query di inserimento, modifica (cancellazione e/o aggiornamento) non hai alcun bisogno di aprire un Recordset. Per giunta non PUOI minimamente passare una query al metodo .Update dell'oggetto Recordset.

Per eseguire la tua query è sufficiente richiamare il metodo .Execute dell'oggetto Connection.

Perciò:

...
sql = "UPDATE bandi SET descrizione='"&des&"', nome='"&nm&"' WHERE id="&valid
cn.Execute sql
..

Elimina il resto che non serve

Pochi post. Anzi, quasi quasi spengo
http://www.dotnetside.org/
8 messaggi dal 11 maggio 2005
Grazie tante

Ho effettuato le modifiche che mi hai detto ma adesso ho un altro errore:

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access Driver] Operation must use an updateable query.

/riservato/modbanact.asp, line 68

Da che potrebbe dipendere?
593 messaggi dal 09 ottobre 2002
www.dotnetside.org
Probabile mancanza di permessi in scrittura sulla cartella che contiene il DB o sullo stesso file di DB.

Sei in locale o in remoto?

Pochi post. Anzi, quasi quasi spengo
http://www.dotnetside.org/
8 messaggi dal 11 maggio 2005
Sono in remoto...adesso verifico e vedo di cambiare i permessi

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.