Scusa tanto Nadia, ma dove stai studiando ASP?
Tu dici di utilizzare un "modo completamente diverso" (quello che ti ho suggerito è valido), ma il tuo "modo completamente diverso" è un "modo completamente sbagliato" !!!!
Sbagliato non solo nel codice ma anche nell'approccio al problema.
Ti posto il "tuo" codice funzionante poi faremo insieme alcune considerazioni:
codice:
<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("newsletter.mdb")
Dim iscri_mail
iscri_mail = Replace(request.form("newsletter"),"'", "''")
Dim rsControlla
Dim SQL
Set rsControlla = Server.CreateObject("ADODB.recordset")
SQL = "SELECT EMAIL FROM NEWSLETTER WHERE EMAIL = '"&iscri_mail&"'"
rsControlla.Open SQL, conn, 3, 3
if not rsControlla.bof and not rsControlla.eof then
%>
<tr><td>
L'e-mail inserita è già presente nel database!!!
[Chiudi questa finestra]
</td></tr>
<%
Else
sql = "INSERT INTO NEWSLETTER (EMAIL) VALUES ('"&Iscri_mail&"')"
conn.execute(sql)
%>
<tr><td>
La registrazione è avvenuta con successo!!!
[Chiudi questa finestra]
</td></tr>
<%
End if
rsControlla.Close
Set rsControlla = Nothing
Conn.Close
Set Conn = Nothing
%>
Considerazioni:
1) A cosa ti serve questo replace ???:
codice:
iscri_mail = Replace(request.form("newsletter"),"'", "''")
Se l'utente inserisce un indirizzo email non mi risulta che possa inserire caratteri come l'apostrofo; piuttosto ti consiglio di utilizzare un controllo lato client per verificare l'email inserita (non l'esistenza) ma solo la sintassi (nome@dominio.it);
2) Utilizzavi un ciclo (e ti sei accanita su questo a tal punto di dare il titolo alla discussione) quando invece per la verifica della email è sufficiente una query where email=emailinserita.
3) Qui trovi il tuo script pubblicato per provare il funzionamento.
Mi preoccuperebbe non poco che stai utilizzando un testo o una guida per imparare ASP e questi sono i risultati... quello che hai postato è un pasticciatissimo ASP...
In bocca al lupo.