Newsgroup: it.comp.www.asp
Titolo: Oggetto recordset in sola lettura...

Ciao, non riesco a fare un aggiornamento di un campo di una tabella di un db
access.
L'errore è :
Microsoft JET Database Engine (0x80040E09)
Impossibile aggiornare. Database o oggetto di sola lettura.
ma premetto che non si tratta di permessi di scrittura sulla cartella del
db, perchè la mia app funziona correttamente e faccio continuamente
inserimenti e aggiornamenti anche su questa stessa tabella senza problemi,
se uso direttamente i comandi sql...
Insomma con una query di aggiornamento non ci sono problemi, ma ora ho
bisogno di modificare un valore di un campo dopo aver aperto un recordset
con una query di selezione.
Ho pensato che forse non apro il recordset in modalità scrittura, ma le sto
provando tutte e non ne vuole sapere...
ecco alcuni pezzi salienti del codice:
objConnection.Open(Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=/inetpub/wwwroot/jims/Data/JIMSgenerico.mdb)
' il path è il risultato di una "mapPath"....
strQuery = "SELECT id_responsabile_anomalia,anomalia_assegnata FROM
["&DbPath&_ "].[TEST_OPERATIVO_ATTIVITA] GROUP BY
id_responsabile_anomalia,id_progetto,"&_
"id_attivita,id_test,anomalia,anomalia_assegnata HAVING id_progetto = " &
id_progetto & _ " AND id_attivita = " & id_attivita_test & " AND id_test = "
& id_test & _ " AND anomalia = -1"
objRecordset.Open strQuery, objConnection, 1, 3
' all'interno di una while not objrecordset.eof
objRecordset.Fields("anomalia_assegnata").Value = -1
objRecordset.Update
objrecordset.close
quali sono i parametri corretti per aprire il recordset?
Ciao,
    Dug

 DM> ma premetto che non si tratta di permessi di scrittura sulla cartella
 DM> del db, perchè la mia app funziona correttamente e faccio continuamente
 DM> inserimenti e aggiornamenti anche su questa stessa tabella senza
 DM> problemi, se uso direttamente i comandi sql...
 DM> Insomma con una query di aggiornamento non ci sono problemi, ma ora ho
 DM> bisogno di modificare un valore di un campo dopo aver aperto un
 DM> recordset con una query di selezione.
 DM> Ho pensato che forse non apro il recordset in modalità scrittura, ma le
 DM> sto provando tutte e non ne vuole sapere...
 DM> ecco alcuni pezzi salienti del codice:
 DM> objConnection.Open(Provider=Microsoft.Jet.OLEDB.4.0;Data
 DM> Source=/inetpub/wwwroot/jims/Data/JIMSgenerico.mdb)
 DM> ' il path è il risultato di una "mapPath"....
 DM> strQuery = "SELECT id_responsabile_anomalia,anomalia_assegnata FROM
 DM> ["&DbPath&_ "].[TEST_OPERATIVO_ATTIVITA] GROUP BY
 DM> id_responsabile_anomalia,id_progetto,"&_
 DM> "id_attivita,id_test,anomalia,anomalia_assegnata HAVING id_progetto = "
 DM> & id_progetto & _ " AND id_attivita = " & id_attivita_test & " AND
 DM> id_test = " & id_test & _ " AND anomalia = -1"
 DM> objRecordset.Open strQuery, objConnection, 1, 3
 DM> ' all'interno di una while not objrecordset.eof
 DM> objRecordset.Fields("anomalia_assegnata").Value = -1
 DM> objRecordset.Update
 DM> objrecordset.close
 DM> quali sono i parametri corretti per aprire il recordset?
Un mio amico tentava di uccidermi ogni volta che scrivevo i valori delle
costanti, invece che i nomi delle costanti. Ora capisco perche' ^___^
cmq i "valori" corretti sono adOpenDynamic per il tipo di cursore
    adLockOptimistic per il tipo di blocco (applicato sul singolo record e
non su tutta la tabella).
Ovvio che per implementare queste costanti devi assicurarti di caricare il
file con le costanti di visual basic, lo puoi fare attraverso il global.asa
mettendo questa riga prima di tutto:
<!--METADATA TYPE="typelib" UUID="{00000201-0000-0010-8000-00AA006D2EA4}"-->
Ne non vuoi o non puoi prova con
objRecordset.Open strQuery, objConnection, 3, 3
Inoltre nel ciclo While di cui parli non vedo ne, il wend ne
objRecordSet.movenext, se chiudi il recordset prima di aggiornare il record
successivo non funzionera' mai (ma credo si tratti solo di una svista).
Ciau
Andrea