Newsgroup: it.comp.www.asp
Titolo: Problema con DELETE

apro un recordset in questa maniera:
set rsClienti = Server.CreateObject("ADODB.Recordset")
rsClienti.ActiveConnection = UtentiHB
rsClienti.Source = request.form("sql")
rsClienti.CursorType = 0
rsClienti.CursorLocation = 2
rsClienti.LockType = 3
rsClienti.Open
poi, scorrendo i record con un loop, invio una mail a ogni cliente...dopo
ogni mail inviata vorrei cancellare il record corrente e allora procedo in
questa maniera:
Do While not rsClienti.eof
.............
 rsClienti.delete
 rsClienti.movefirst
.............
loop
il problema è che in corrispondenza di  "rsClienti.delete" mi si verifica il
seguente errore:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in
query expression '(Utente=? AND Cognome Nome=? AND Email=? AND DB Utente=?
AND Data Attivazione=? AND Password iniziale=? AND indirizzo=? AND
N#Telefono=? AND Filiale=? AND NDG=? AND Info C/C=? AND Conto Personale=?
AND Bonifici=? AND Max Bonifici=? AND Info Titoli=? AND Disp'.
/Sito2001/asp/invioeffettivo.asp, line 118
che vuol dire?

 loop
[cut]
Perchè fai MoveFirst? A mio parere dovresti scorrere tutto il recordset con
rsClienti.MoveNext
Ciao
--
Lino Mari
Intermedia srl
http://www.viadeimercanti.com
 - Il nuovo portale dell'e-business
http://www.imbnet.it
 - Intermedia Srl - Telematica e Multimedia

 
http://www.imbnet.it
 - Intermedia Srl - Telematica e Multimedia
Non credo sia il movefirst il problema.....
comunque faccio movefirst onde evitare "equivoci" su quale sia il record
seguente
visto che cancello il record che ho appena finito di utilizzare per l'invio
della mail.....
in sostanza:
recordset composto da:
record1
record2
record3
poi utilizzo record1
cancello record 1...a questo punto il db ha un record in meno ma il
recordset rimane di 3 "elementi" o di 2? siccome non lo so faccio
movefirst....

 rsClienti.MoveNext
per scrupolo ho provato ma mi da' lo stesso errore sul delete....

query expression '(Utente=? AND Cognome Nome=? AND Email=? AND DB Utente=?
il recordset su che query lo setti?
--
non studio non lavoro non guardo la tv
non vado al cinema non faccio sport

> il recordset su che query lo setti?
"select * from Q_utenti" in cui Q_utenti è una query

"select * from Q_utenti" in cui Q_utenti è una query
e Q_utenti com'è fatta?


è una query normale in access...con tutti i campi in cui mi da' errore
compilati


compilati
chi frequentava it.comp.appl.access fino a qualche mese fa sa che mi
prendevano crisi isteriche quando sentivo parlare di compilazione
riguardo access...
non capisco cosa intendi per campi "compilati".
il mio sospetto è che la query che usi, usando il gergo di access,
contenga dei riferimenti non validi nella casella Condizioni di tutti
i campi che hai caricato.
per questo ti chiedevo com'è fatta.  fai una cosa, vai in
visualizzazione sql, copia il codice e incollalo qui.



..........

ORDER BY T_Utenti.[Data Attivazione], T_Utenti.[Cognome Nome];
ok, prova a settare il recordset direttamente su questa query.  cioč
invece di settarlo su "select * from q_utenti" settalo direttamente su
"q_utenti".


 "q_utenti".
non ho capito: ti puoi spiegare meglio?


allora, hai un recordset, lo devi settare su una sorgente dati, questa
può essere una query sql oppure, se usi access come db, il nome di una
tabella o di una query access.  invece di costruire una stringa sql
setta direttamente il recordset sul nome della query.
se non hai capito posta il codice con cui setti il rst che vediamo.
