ciao, ti riporto un file col codice corretto.
E' del tutto simile a quello che avevi scritto, ho fatto pochissimi cambiamenti :)
Allora, ho fatto una prova in locale con questa pagina e ho dovuto usare due accorgimenti per farla funzionare da sola:
1) i dati non li riceve da un form, ho inserito io direttamente gli id.
elenco_originale = Split("2502,2503,2504,2505,2506" & ",", ",")
elenco_rosso = Split("2502,2505,2507" & ",", ",")
Al momento di montare lo script sulla pagina definitiva tieni le due righe che hai tu, ossia queste qua:
elenco_originale = Split(request.form("originali_rosso") & ",", ",")
elenco_rosso = Split(request.form("rosso") & ",", ",")
2) La pagina non effettua le query, le stampa solamente a video col response.write
Response.write "UPDATE Iscritti SET Iscritti.[rosso] = 0 WHERE id IN (" & deselezionati & ")"
Ma tu usa la tua sintassi:
cn.Execute "UPDATE Iscritti SET Iscritti.[rosso] = 0 WHERE id IN (" & deselezionati & ")"
I cambiamenti che ho fatto sono stati lievi... proprio prima del ciclo for per trovare i selezionati bisognava svuotare la variabile su cui venivano memorizzati di id trovati. Per maggiore comprensione anzichè svuotarla ne ho usata un'altra così adesso per il primo ciclo for hai "deselezionati", per il secondo hai "selezionati". Ecco l'estratto di codice a cui faccio riferimento:
Dim selezionati
selezionati = ""
for a = 0 to Ubound(elenco_rosso)-1
trovato = false
...
if not trovato then
selezionati = selezionati & "," & Trim(elenco_rosso(a))
le queries *dovrebbero* funzionare anche con una stringa composta da molti id. Credo che anche con qualche migliaio non ci siano problemi... poi lo verificherai facendo una prova pratica.
Ciao :) fammi sapere se funziona
simulazione.asp
<%
elenco_originale = Split("2502,2503,2504,2505,2506" & ",", ",")
elenco_rosso = Split("2502,2505,2507" & ",", ",")
Dim trovato, deselezionati
deselezionati = ""
for i = 0 to Ubound(elenco_originale)-1
trovato = false
for j = 0 to Ubound(elenco_rosso)-1
if Trim(elenco_originale(i)) = Trim(elenco_rosso(j)) then
trovato = true
end if
next
'se il valore non è stato trovato, lo concateno ad una variabile
if not trovato then
deselezionati = deselezionati & "," & Trim(elenco_originale(i))
end if
next
if deselezionati <> "" then
deselezionati = Mid(deselezionati,2)
Response.write "UPDATE Iscritti SET Iscritti.[rosso] = 0 WHERE id IN (" & deselezionati & ")"
end if
Response.write("<br>")
Dim selezionati
selezionati = ""
for a = 0 to Ubound(elenco_rosso)-1
trovato = false
for b = 0 to Ubound(elenco_originale)-1
if Trim(elenco_rosso(a))=Trim(elenco_originale(b)) then
trovato = true
end if
next
'se il valore non è stato trovato, lo concateno ad una variabile
if not trovato then
selezionati = selezionati & "," & Trim(elenco_rosso(a))
end if
next
if selezionati <> "" then
selezionati = Mid(selezionati,2)
Response.write "UPDATE Iscritti SET Iscritti.[rosso] = 1 WHERE id IN (" & selezionati & ")"
end if
%>