Newsgroup: it.comp.www.asp
Titolo: Selezionare insieme di record con checkbox

Vorrei visualizzare i records di una tabella con a fianco di ciascun record
un checkbox; devo realizzareun form mi permetta di selezionare un insieme di
record (con i checkbox appunto) e passare ad uno script ASP i numeri di tali
record (o le chiavi), per poi eliminarli o modificarli con lo script (questo
lo so fare).
Come realizzare tale form ? Come passare un insieme di chiavi o N. record
allo script ?
Grazie
Andy

 Andy
Ti posso dire come ho risolto io :
Dovevo passare la chiave di aggancio di alcuni valori da una pagina ad
un'altra di alcuni campi selezionati da un check-box.
Nella prima pagina asp ho creato una tabella con un campo check-box con il
nome che non č altro che il campo chiave :
Pagina uno :
/*
<% rs.movefirst%>
<% Do While Not rs.EOF
' colorazione della tabella a righe
QUANTI = QUANTI + 1
IF QUANTI/2 = INT(QUANTI/2) THEN
 COLORE = "lightcyan"
ELSE
 COLORE = "silver"
END IF
 %>
<tr>
<td align="middle" bgcolor="<% = COLORE %>" NOWRAP>
<font face="verdana,arial" size="2"><INPUT id=checkbox1 name=<% =
rs("CODICE") %>
    type=checkbox>
</font>
</td>
<td bgcolor="<% = COLORE %>" NOWRAP>
<font face="verdana,arial" size="2">&nbsp;<% = rs("COGNOME") %>&nbsp;&nbsp;
</font>
</td>
<td align="middle" bgcolor="<% = COLORE %>" NOWRAP>
<font face="verdana,arial" size="2">&nbsp;<% = rs("NOME") %>&nbsp;
</font>
</td>
<td align="right" bgcolor="<% = COLORE %>" NOWRAP>
<font face="verdana,arial" size="2">&nbsp;<% = rs("CODICE_FISCALE") %>&nbsp;
</font>
</td>
</tr>
<% rs.movenext %>
<% loop %>
</table>
<br>
<br>
<%
rs.close
conn.close
set rs = nothing
set conn = nothing
%>
*/
La tabella adesso contiene tante occorrenze selezionabili ognuna
individuabile dalla chiave (tu potresti avere una chiave piů lunga o
composta da piů campi ma il concetto č uguale).
Adesso la pagina che riceve.
Pagina due :
/*
<%
Dim QUANTI
Dim COLORE
Dim conn
Dim stringa
Dim rs
Dim valida1
Dim DBQValue
set conn = server.createobject("adodb.connection")
set rs = server.createobject("adodb.recordset")
conn.open strconn
QUANTI = 0
stringa = ""
For Each x In Request.Form
if x <> "submit" then
stringa = stringa & x & ", "
end if
Next
strsql = "SELECT * FROM TBL1 WHERE CODICE IN ("+ stringa +"99999999 ) "
rs.open strsql, conn,2,2
%>
*/
Quello che ti interessa sapere č che il ciclo for Request.Form mi da tutti i
check-box in on.
Mi creo ad arte una stringa con le chiavi che altro non sono che i nomi dei
check-box stessi in on.
Spero di esserti stato d'aiuto.

Io ho avuto lo stesso problema quando dovevo aggiornare una serie di Record
insieme perche' il campo da aggiornare era una specie di Booleano tipo
"abilitato" o "non abilitato", in pratica con poche modifiche lo puoi
adattare alla cancellazione simultanea di piu' record, ma bando alle ciance
eheh cominiciamo.
Quando stampo a video la tabella dei record a cui voglio associare un
checkbox ho messo questo codice:
<% Response.Write("<input type=""checkbox"" name="""&RS("UserID")&"""
value=""ON""> %>
Ovviamente il campo UserID e' univoco per dei controlli precedenti (oppure
puoi metterci ID che e' gia' univoco).
Poi c'e' una form con un pulsante di invio ad un secondo file asp che
gestisce i record "checkati" in una maniera contorta (eheh) piu' o meno
simile a questa:
[db gia' aperto ed elencato gia' tutti i record nel RS]
Do While NOT RS.EOF
 if Request.Form(""&RS("UserID")&"")= "ON" then
  if RS("Abilitato") = "N" then
   SQL2 = " UPDATE Utenti SET Abilitato = 'Y' WHERE Utenti.UserID = '"&
RS("UserID") &"' "
   set RS2 = Conn.Execute(SQL2)
   Response.Write("<BR><CENTER><B><SMALL><FONT COLOR=""#DDDDDD""> Aggiornato
correttamente utente <FONT COLOR=""RED""><B>" & RS("UserID") & "</B></FONT>:
Abilitato = Y </CENTER></B></SMALL></FONT>")
  else
   SQL3 = " UPDATE Utenti SET Abilitato = 'N' WHERE Utenti.UserID = '"&
RS("UserID") &"' "
   set RS3 = Conn.Execute(SQL3)
   Response.Write("<BR><CENTER><B><SMALL><FONT COLOR=""#DDDDDD""> Aggiornato
correttamente utente <FONT COLOR=""RED""><B>" & RS("UserID") & "</B></FONT>:
Abilitato = N </CENTER></B></SMALL></FONT>")
  end if
 end if
RS.MoveNext
Loop
In pratica funziona cosi': fa un giro su tutti i record che ci sono ne RS,
controlla che il checkbox su quel record sia attivo nella form precedente
(if Request.Form(""&RS("UserID")&"")= "ON" then) se e' attivo esegue i
controlli di cui ho bisogno e lo aggiorna (e qui tu lo cancelleresti).
Ciao.
--
Da' mArLeNeK (ICQ #7653970)
Unofficial Marlene Kuntz's Home Page 
http://www.marlenekuntz.com
