20 messaggi dal 07 marzo 2002
Ho creato in ASP una pagina che va semplicemente a tirare fuori un banner in un db access e autoincrementa il numero di volte che viene visto, con rs.update!

Ma ogni tanto mi esce questo errore:


Microsoft OLE DB Provider for ODBC Drivers error '80004005' 

[Microsoft][ODBC Microsoft Access Driver] The Microsoft Jet database engine stopped the process because you and another user are attempting to change the same data at the same time. 


Come lo posso risolvere????
3.122 messaggi dal 16 maggio 2002
Ad esempio non usando il metodo update() del recordset, ma l'istruzione sql UPDATE.

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!
20 messaggi dal 07 marzo 2002
ah, dici che funziona?

Set rs= Server.CreateObject("ADODB.recordset")
connstr = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("/mdb-database/banner.mdb")
rs.Open "SELECT * FROM Banner Where IDBanner = "&request.querystring("idbanner"),connstr,1,3
  rs("NClick")  =  rs("NClick")+1
  Link      =  rs("link")
rs.update
rs.close


Quindi il mio codice come dovrebbe diventare?
3.122 messaggi dal 16 maggio 2002
Il tuo codice non è molto ottimizzato e ci sono parecchi errori:
1. non hai istanziato un oggetto per la tua connessione, pertanto lasci che ne venga creata e aperta una di default senza poterne avere il controllo (senza quindi poter decidere quando chiuderla e deallocarla nè senza poterla riutilizzare per operazioni multiple);
2. selezioni tutti i campi dalla tabella sebbene tu abbia bisogno solo di "Link" (e questo è spreco di memoria);
3. come detto, utilizzi il metodo Update() che, oltre ad essere poco performante, introduce un problema nel momento in cui più richieste pervengono a quella pagina contemporaneamente (date n richieste contemporanee alla pagina, il contatore potrebbe non essere incrementato di n)
4. non controlli che il valore di idbanner ricevuto dalla QUERY_STRING sia presente nè che sia numerico nè che venga effettivamente estratto qualcosa dalla tabella. Se nulla venisse estratto avresi un bell'errore di recordset a End Of File.

Riscrivi il codice correggendo gli errori che ti ho segnalato e ripostalo. Comunque non ti preoccupare: solo sbagliando si impara

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!

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.