Newsgroup: it.comp.www.asp
Titolo: Aiuto per cancellazione record

Scusate se continuo a postare richieste di aiuto, ma sto realizzando un
progetto per l'università (non sono iscritto ad informatica) che devo finire
entro sabato e fino a 48 ore fa non ne capivo completamente nulla di
asp...allora, ho realizzato questo codice per inserire un record in una
tabella...adesso vorrei fare un'altra pagina per cancellare lo stesso
record, con i dati che provengono sempre dalla stessa form. Come posso fare?
Grazie mille!
-----------------------------------------------------------
<%@ LANGUAGE = JScript %>
<%
var IDstudente = Request.Form("IDstudente");
var IDesame = Request.Form("IDesame");
var ADOConn = new ActiveXObject("ADODB.Connection");
var strConn = "";
strConn += "driver={Microsoft Access Driver (*.mdb)};";
strConn += "dbq=" + Server.MapPath("db/Lusse.mdb");
ADOConn.Open(strConn);
var RecSet = new ActiveXObject("ADODB.Recordset");
RecSet.Open("Prenota",ADOConn,3,3);
RecSet.AddNew();
RecSet("IDstudente") = IDstudente;
RecSet("IDesame") = IDesame;
RecSet.Update();
RecSet.Close();
ADOConn.Close();
%>
<html>
<head><title>Prenotazione effettuata</title></head>
<body>
Prenotazione effettuata!
<p><a href="main.asp">Area studenti</a></p>
</body>
</html>
----------------------------------------------------------------

 record, con i dati che provengono sempre dalla stessa form. Come posso
fare?
Immagino che l'univocità del record (arrivando dalla stessa form) sia dato
dalla coppia IDstudente e IDesame; quindi anziché usare AddNew() esegui la
query diretta: ADOConn.execute("delete * from prenota where
IDStudente="+IDstudente+" and IDesame="+IDesame);

Scusami, ma sono un neofita :-) Dove vevo inserire il codice che mi hai
scritto ? cosa devo cancellare?
Grazie!


 scritto ? cosa devo cancellare?
Allora...
Ci sono più metodi per inserire, cancellare, aggiornare record.
Uno è quello che hai usato tu, usando un recordset. Ma è in genere 
sconsigliato. E poi, se l'unica operazione che devi fare è quella, non 
ha senso aprire un recordset.
L'altro è usare le *stored procedures* previste in SQL.
sql = "INSERT INTO tabella(campo1, campo2) VALUES(...., ....)"
sql = "UPDATE tabella set campo=valore... WHERE..."
sql = "DELETE FROM tabella WHERE..."
oggettoConn.execute(SQL)
Nel tuo caso, leva tutta la parte del recordset, lascia la connessione, 
e dopo averla aperta fai eseguire come da sintassi qui sopra, come ti 
ha anche suggerito Cristiano (qui sotto).
Cristiano, poi, ha fatto una supposizione sull'univocità dei record.
Per cancellare, modificare eccetera un record devi indivuare quale. Se 
nella tabella "prenota" avessi un campo contatore (che è assolutamente 
univoco) bastava indicare quello, nel WHERE. Non sapendolo, lui ha 
pensato, giustamente, di trovare il record giusto con IDstudente e 
IDesame.


Cosa ho sbagliato? Vorrei indicare due variabili per "autorizzare" a
cancellare il record...una è la conoscenza dell'IDprenotazione, che è
inserito manualmente nella form che invia i dati a questa pagina, ed è un
contatore della tabella Prenota, e l'altra è l'IDstudente, che non viene
inserito manualmente, poichè nella form che invia i dati a questa pagina ho
inserito un campo hidden che ha come valore la variabile di sessione
IDstudente, settata in fase di login...
<%@ LANGUAGE = JScript %>
<%
// Ricevo i dati dal form
var IDstudente = Request.Form("IDstudente");
var IDprenotazione = Request.Form("IDprenotazione");
// Istanzio l'oggetto Connection
var ADOConn = new ActiveXObject("ADODB.Connection");
// Creo la STRINGA DI CONNESSIONE
var strConn = "";
strConn += "driver={Microsoft Access Driver (*.mdb)};";
strConn += "dbq=" + Server.MapPath("db/Lusse.mdb");
// Apro la connessione al database
ADOConn.Open(strConn);
//Inserisco il codice come da te suggeritomi (sta tutto su una riga)...il
problema potrebbe essere qui? In ='IDprenotazione' e in ='IDstudente'?
var sql = "DELETE FROM Prenota WHERE
((Prenota.IDprenotazione)='IDprenotazione') AND
((Studenti.IDstudente)='IDstudente')";
var ris = ADOConn.Execute(sql);
// Chiudo la connessione
ADOConn.Close();
%>
<!--#include file="top.txt"-->
<p align="center">Cancellazione prenotazione effettuata!</p>
<p><a href="main.asp">Area studenti</a></p>
<!--#include file="bottom.txt"-->
