A ver si puedo dar un poco mas de ayuda.
Intente comentar el código pero deberás acomodar todo según tu BD.
Pagina 1 que muestra los datos:
Código ASP:
Ver original<%
' Suponiendo una tabla llamada TABLA con la estructura:
' CAmpoPK_ID int PK
' CampoChk1 bool
' CampoChk2 bool
' CampoChk3 bool
Dim sSQL, iLinea, rs, sCheckedCampo1, sCheckedCampo2, sCheckedCampo3
'/*Tomo los campos de la BD*/
sSQL=" SELECT CAmpoPK_ID, CampoChk1, CampoChk2, CampoChk3 FROM TABLA "
set rs = Conex.execute(sSQL)
%>
<form action="SegundoASP.asp" method="post" >
<table>
<%
'/*Recorro los campos*/
Do While Not rs.EOF
'/*Si el campo esta en true, guardo una variable con la palabra "checked" para luego colocarla en el check y que aparesca tildado*/
If rs("CampoChk1") = true Then sCheckedCampo1 = "CHECKED"
If rs("CampoChk2") = true Then sCheckedCampo2 = "CHECKED"
If rs("CampoChk3") = true Then sCheckedCampo3 = "CHECKED"
'/*En el value del check pongo el ID o clave primaria de la fila, para luego usarla en el Update*/
%>
<tr>
<td>FILA <%=iLinea%></td>
<td><input type="checkbox" <%=sCheckedCampo1%> name="CampoChk1" value="<%=rs("CAmpoPK_ID")%>"></td>
<td><input type="checkbox" <%=sCheckedCampo2%> name="CampoChk2" value="<%=rs("CAmpoPK_ID")%>"></td>
<td><input type="checkbox" <%=sCheckedCampo3%> name="CampoChk3" value="<%=rs("CAmpoPK_ID")%>"></td>
</tr>
<%
rs.MoveNext
iLinea = iLinea + 1
Loop
%>
</table>
<input type="submit" value="Enviar">
</form>
Pagina 2 que actualiza:
Código ASP:
Ver original<%
Dim i, iNumSelectedChk, sSQLUpdate, SelCampoChk1, SelCampoChk2, SelCampoChk3
'/*Obtengo la cantidad de checkbox tildados y los recorro. */
'Primero para el campo CampoChk1, luego para el CampoChk2, etc..*/
If FVal(Request("CampoChk1").count)>0 Then
iNumSelectedChk = FVal(Request("CampoChk1").count)
For i = 1 To iNumSelectedChk
'/*guardo cada valor de los checkbox tildado (que es la clave primaria como habiamos dicho) en una variable, y le concateno una coma */
SelCampoChk1 = SelCampoChk1 & FVal(Request("CampoChk1")(i)) & ","
Next
'/* la variable SelCampoChk1 deberia quedar algo como: "1,2,3,4," donde los numeros son el ID o clave primaria de la fila a actualizar. */
'/* Elimino la ultima coma. */
SelCampoChk1 = left(SelCampoChk1,len(SelCampoChk1)-1)
End If
'/* hago lo mismo que lo anterior para cada campo de la tabla.*/
If FVal(Request("CampoChk2").count)>0 Then
iNumSelectedChk = FVal(Request("CampoChk2").count)
For i = 1 To iNumSelectedChk
SelCampoChk2 = SelCampoChk2 & FVal(Request("CampoChk2")(i)) & ","
Next
SelCampoChk2 = left(SelCampoChk2,len(SelCampoChk2)-1)
End If
'/* hago lo mismo que lo anterior para cada campo de la tabla.*/
If FVal(Request("CampoChk3").count)>0 Then
iNumSelectedChk = FVal(Request("CampoChk3").count)
For i = 1 To iNumSelectedChk
SelCampoChk3 = SelCampoChk3 & FVal(Request("CampoChk3")(i)) & ","
Next
SelCampoChk2 = left(SelCampoChk2,len(SelCampoChk2)-1)
End If
'/* Por ultimo genero la consulta UPDATE.*/
sSQLUpdate= " "
'/* paso todos los campos a false.*/
sSQLUpdate = sSQLUpdate & " UPDATE TABLA SET CampoChk1=false; "
'/* y dejo solo en true los que estan en la variable que creamos, que son los de los checkbox seleccionados (si es que hay alguno).*/
If FVal(Request("CampoChk1").count) > 0 Then
sSQLUpdate = sSQLUpdate & " UPDATE TABLA SET CampoChk1=true WHERE CampoPK_ID IN(" & SelCampoChk1 & "); "
End If
'/* Lo mismo para cada campo.*/
sSQLUpdate = sSQLUpdate & " UPDATE TABLA SET CampoChk2=false; "
If FVal(Request("CampoChk2").count) > 0 Then
sSQLUpdate = sSQLUpdate & " UPDATE TABLA SET CampoChk2=true WHERE CampoPK_ID IN(" & SelCampoChk2 & "); "
End If
'/* Lo mismo para cada campo.*/
sSQLUpdate = sSQLUpdate & " UPDATE TABLA SET CampoChk3=false; "
If FVal(Request("CampoChk3").count) > 0 Then
sSQLUpdate = sSQLUpdate & " UPDATE TABLA SET CampoChk3=true WHERE CampoPK_ID IN(" & SelCampoChk3 & "); "
End If
'/* Ejecuto las consultas.*/
Conex.execute(sSQLUpdate)
%>
El código puede que tenga errores porque no tengo esa estructura de tabla y por lo tanto no lo probé
Si tienes algun problema vuelve y pregunta
Saludos