Newsgroup: it.comp.www.asp
Titolo: Ma non si può usare il RECORDSET?

Ciao a tutti,
in una mia pagina ASP ho bisogno di leggere un valore da un database e
modificarlo. Ho scritto questo codice che, infatti, funziona, ma, ne sono
sicuro, posso risparmiare linee di codice e rendere tutto più semplice
usando il comando "update" del recordset.
Dim conn,cm
Set conn = Server.CreateObject("ADODB.Connection")
dim dove
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&
"c:\Inetpub\wwwroot\buffer\esempio.mdb"
Set rs=Server.CreateObject("ADODB.recordset")
dim stmsql
stmsql="Select visite FROM Tabella1 where nome='questapagina'"
rs.Open stmsql,conn
dim k
k=rs("visite")+1
' ***************
set cm=Server.CreateObject("ADODB.Command")
Set cm.ActiveConnection=conn
cm.CommandText="UPDATE Tabella1 SET visite="& k &" WHERE
nome='questapagina'"
cm.Execute
' ************
conn.close
Set conn = NOTHING
Set rs = NOTHING
%>
La domanda è questa: il codice tra gli asterischi, non può essere modificato
in (come avevo fatto all'inizio):
rs("visite")=rs("visite")+1
rs.update
???
Ho provato, ma mi compare il seguente errore:
ADODB.Field errore "800a0cb3"
C'è un modo per risolvere questo problema?
Ciao e grazie a tutti.

Che io sappia no.
Tra' l'altro il Recordset mi ha dato diversi grattacapi anche con gli
AddNew, alla fine l'ho abbandonato per il buon vecchio SQL.
Inoltre se guardi tutti gli esempi di MS usano tutti UPDATE tabella SET..
WHERE... e non usano MAI i recordset per aggiornare i dati... strano nhe?
Davide

 wrote in message
86m8b3$2slgn$1...@fu-berlin.de...

normale.
se tu scrivi la stringa SQL, è più veloce, perchè ADO non deve andarsi a
ricostruirla.
però in certi casi (ovvero grossi inserimenti, per lo più "guidati" (penso a
moduli di amministrazione) anche se ci metti mezzo minuto in più per fare il
tutto, non è la fine del mondo. ne guadagni soprattutto in pulizia del
codice.
--
HAPPY 2K!.db
Daniele "The Night Surfer" Bochicchio <webmaster(at)ASPItalia.com>
Moderatore di it.comp.www.asp - 
http://www.ASPItalia.com/newsgroup/icwa.asp
Questa settimana: 'Il mercatino delle novità'
http://www.ASPItalia.com/articoli/articoli.asp?settimana
Uno script al giorno? Solo su 
http://www.aspitalia.com/liste/usag/

Ciao Andrew,
Il problema si puo' risolvere in 2 modi:
1) Usare il metodo Execute dell'oggetto Command
2) Specificare il tipo di cursore del recordset
Nel primo caso risparmi moltissime righe di codice, come
nell'esempio seguente:
Set conn = Server.CreateObject("ADODB.Connection")
conn.connectionString="driver={Microsoft Access Driver (*.mdb)};dbq=c:\Inetpub\wwwroot\buffer\esempio.mdb"
sqlCmd="Update Tabella1 set visite=visite+1 where nome='questapagina'"
conn.open
conn.execute sqlCmd
..
La seconda soluzione consiste semplicemente nella modifica
della riga di codice che apre il recordset:
..
rs.open sqlCmd,conn,0,3
..
che apre un RS di tipo "ForwardOnly" e locking di tipo "Ottimistico". Non ti
funziona perchè per default
ADO apre un RS con locking di tipo READONLY, quindi non
disponibile per la modifca.
Personalmente ti suggerisco di usare il primo metodo, che
vale anche se usi l'oggetto ADODB.COMMAND ma con un po' lavoro aggiuntivo.
Se vuoi maggiori dettagli puoi contattarmi senza esitare.
:-))Roberto
--
Postato da 194.237.142.100 [194.237.142.100] via
ASPItalia News on Web - 
http://www.ASPItalia.com/newsgroup/
--
ASP, WSH, XML, XSL, IIS, NT, Win2k: per te sono solo sigle?
Su 
http://www.ASPItalia.com
 trovi tutto quello che ti serve
per capire di cosa stiamo parlando. In Italiano.