11 messaggi dal 26 novembre 2002
Salve a tutti,
ho un form di inserimento dati per l'anagrafica di alcune aziende, visualizzo i dati presenti nel database ma non riesco a scrivere.

il codice della pagina di inserimento è il seguente:
<%
Dim objRS
Set objRS = Server.CreateObject ("ADODB.Recordset")
objRS.Open "anagrafica", objConn, adLockOptimistic, adCmdTable
objRS.AddNew

nome_azienda=Request.Form("nome_azienda")
ragione_sociale=Request.Form("ragione_sociale")
gruppo=Request.Form("gruppo")
settore=Request.Form("settore")
partita_iva=Request.Form("partita_iva")
sito_web_aziendale=Request.Form("sito_web_aziendale")
SQL = "INSERT INTO anagrafica (nome_azienda,ragione_sociale,gruppo,settore,partita_iva,sito_web_aziendale)"
SQL = SQL &"VALUES('"&nome_azienda&"','"&ragione_sociale&"','"&gruppo&"','"&settore&"','"&partita_iva&"','"&sito_web_aziendale&"')"

objRS.Update
objRS.Close
Set objRS=Nothing
objConn.Close
Set objConn=Nothing
Response.Redirect "index.asp"
%>

mentre l'errore nel momento in cui tento di scrivere sul database è questo:

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access Driver] Cannot update. Database or object is read-only.
/gestrec/db_carlo/add-process001.asp, line 20

la linea 20 è la objRS.Update
Tenete conto che non c'è nessun blocco di scrittura sul database o sul server.
Qualcuno può darmi una mano a capire dove sta il problema??
Ringrazio anticipatamente
Herky30


herky30
879 messaggi dal 09 luglio 2002
www.i-studio.it
Hai creato un codice "ibrido"... o usi la tecnica dell'Addnew e poi update oppure usi il codice SQL... non puoi usare entrambi. Se guardi bene, tu crei la stringa SQL nella tua variabile "SQL" ma poi non la usi mai...
Io personalmente preferisco usare le istruzioni SQL "pure". Quindi, dovresti correggere il tuo codice in questo modo:
<% 
nome_azienda=Request.Form("nome_azienda") 
ragione_sociale=Request.Form("ragione_sociale") 
gruppo=Request.Form("gruppo") 
settore=Request.Form("settore") 
partita_iva=Request.Form("partita_iva") 
sito_web_aziendale=Request.Form("sito_web_aziendale") 
SQL = "INSERT INTO anagrafica (nome_azienda,ragione_sociale,gruppo,settore,partita_iva,sito_web_aziendale)" 
SQL = SQL &"VALUES('"&nome_azienda&"','"&ragione_sociale&"','"&gruppo&"','"&settore&"','"&partita_iva&"','"&sito_web_aziendale&"')" 

objConn.Execute(SQL)

objConn.Close 
Set objConn=Nothing 
Response.Redirect "index.asp" 
%> 

Oltretutto e' anche molto piu' corto...!!

Solo una cosa: ricordati di controllare la presenza di apici nelle variabili che usi per fare la INSERT. Ti conviene fare per ognuna il "replace":
nome_azienda=replace(Request.Form("nome_azienda"), "'", "''")


Ciao
Alex

Internetworking Studio Srl
www.i-studio.it
11 messaggi dal 26 novembre 2002
Grazie Alex per il tuo suggeimento, ma adesso (usando il tuo codice) il problema è diventato il seguente:

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access Driver] Operation must use an updateable query.
/gestrec/db_carlo/add-process001.asp, line 15

dove la linea 15 è ancora la objConn.Execute(SQL)

Ormai sono tre giorni che vengo sballottato tra un errore e un altro!!
Avresti per caso un suggerimento anche per questo tipo di errore??

Grazie anticipatamente
Herky30

herky30
879 messaggi dal 09 luglio 2002
www.i-studio.it
Quell'errore normalmente avviene quando non hai i permessi per modificare il DB. Vai nelle proprieta' del DB e dai all'utente IUSR_nomemacchina il permesso di modifica.

Ciao
Alex

Internetworking Studio Srl
www.i-studio.it
11 messaggi dal 26 novembre 2002
Grazie Alex!!!!!!!!!!!
Ora funziona!!!!!
...a buon rendere!!! :-))))))

Herky30

herky30

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.