Ver Mensaje Individual
  #4 (permalink)  
Antiguo 12/08/2011, 08:37
Avatar de Javier01
Javier01
 
Fecha de Ingreso: febrero-2008
Ubicación: Montevideo
Mensajes: 261
Antigüedad: 16 años, 2 meses
Puntos: 31
Respuesta: Guardar registros de checkbox con rs a sql

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
  1. <%
  2.     ' Suponiendo una tabla llamada TABLA con la estructura:
  3.     ' CAmpoPK_ID    int     PK
  4.     ' CampoChk1     bool
  5.     ' CampoChk2     bool
  6.     ' CampoChk3     bool
  7.    
  8.  
  9. Dim sSQL, iLinea, rs, sCheckedCampo1, sCheckedCampo2, sCheckedCampo3
  10.  
  11. '/*Tomo los campos de la BD*/
  12. sSQL=" SELECT CAmpoPK_ID, CampoChk1, CampoChk2, CampoChk3 FROM TABLA "
  13. set rs = Conex.execute(sSQL)
  14. %>
  15. <form action="SegundoASP.asp" method="post" >
  16. <table>
  17.     <%
  18.     '/*Recorro los campos*/
  19.     Do While Not rs.EOF
  20.         '/*Si el campo esta en true, guardo una variable con la palabra "checked" para luego colocarla en el check y que aparesca tildado*/
  21.         If rs("CampoChk1") = true Then sCheckedCampo1 = "CHECKED"
  22.         If rs("CampoChk2") = true Then sCheckedCampo2 = "CHECKED"
  23.         If rs("CampoChk3") = true Then sCheckedCampo3 = "CHECKED"
  24.         '/*En el value del check pongo el ID o clave primaria de la fila, para luego usarla en el Update*/
  25.     %>
  26.     <tr>
  27.         <td>FILA <%=iLinea%></td>
  28.         <td><input type="checkbox" <%=sCheckedCampo1%>  name="CampoChk1" value="<%=rs("CAmpoPK_ID")%>"></td>
  29.         <td><input type="checkbox" <%=sCheckedCampo2%>  name="CampoChk2" value="<%=rs("CAmpoPK_ID")%>"></td>
  30.         <td><input type="checkbox" <%=sCheckedCampo3%>  name="CampoChk3" value="<%=rs("CAmpoPK_ID")%>"></td>
  31.     </tr>
  32.     <%
  33.         rs.MoveNext
  34.         iLinea = iLinea + 1
  35.     Loop
  36.     %>
  37.  
  38.    
  39. </table>
  40. <input type="submit" value="Enviar">
  41. </form>


Pagina 2 que actualiza:


Código ASP:
Ver original
  1. <%
  2.  
  3. Dim  i, iNumSelectedChk, sSQLUpdate, SelCampoChk1, SelCampoChk2, SelCampoChk3
  4.  
  5. '/*Obtengo la cantidad de checkbox tildados y los recorro. */
  6. 'Primero para el campo CampoChk1, luego para el CampoChk2, etc..*/
  7.  
  8. If FVal(Request("CampoChk1").count)>0 Then
  9.     iNumSelectedChk = FVal(Request("CampoChk1").count)
  10.     For i = 1 To iNumSelectedChk
  11.         '/*guardo cada valor de los checkbox tildado (que es la clave primaria como habiamos dicho) en una variable, y le concateno una coma */
  12.         SelCampoChk1 = SelCampoChk1 & FVal(Request("CampoChk1")(i)) & ","
  13.     Next
  14.     '/* 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. */
  15.     '/* Elimino la ultima coma. */
  16.     SelCampoChk1 = left(SelCampoChk1,len(SelCampoChk1)-1)
  17. End If
  18.  
  19. '/* hago lo mismo que lo anterior para cada campo de la tabla.*/
  20. If FVal(Request("CampoChk2").count)>0 Then
  21.     iNumSelectedChk = FVal(Request("CampoChk2").count)
  22.     For i = 1 To iNumSelectedChk
  23.         SelCampoChk2 = SelCampoChk2 & FVal(Request("CampoChk2")(i)) & ","
  24.     Next
  25.     SelCampoChk2 = left(SelCampoChk2,len(SelCampoChk2)-1)
  26. End If
  27.  
  28. '/* hago lo mismo que lo anterior para cada campo de la tabla.*/
  29. If FVal(Request("CampoChk3").count)>0 Then
  30.     iNumSelectedChk = FVal(Request("CampoChk3").count)
  31.     For i = 1 To iNumSelectedChk
  32.         SelCampoChk3 = SelCampoChk3 & FVal(Request("CampoChk3")(i)) & ","
  33.     Next
  34.     SelCampoChk2 = left(SelCampoChk2,len(SelCampoChk2)-1)
  35. End If
  36.  
  37.  
  38. '/* Por ultimo genero la consulta UPDATE.*/
  39. sSQLUpdate= " "
  40. '/* paso todos los campos a false.*/
  41. sSQLUpdate = sSQLUpdate & " UPDATE TABLA SET CampoChk1=false; "
  42. '/* 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).*/
  43. If FVal(Request("CampoChk1").count) > 0 Then
  44.     sSQLUpdate = sSQLUpdate & " UPDATE TABLA SET CampoChk1=true WHERE CampoPK_ID IN(" & SelCampoChk1 & "); "
  45. End If
  46.  
  47. '/* Lo mismo para cada campo.*/
  48. sSQLUpdate = sSQLUpdate & " UPDATE TABLA SET CampoChk2=false; "
  49. If FVal(Request("CampoChk2").count) > 0 Then
  50.     sSQLUpdate = sSQLUpdate & " UPDATE TABLA SET CampoChk2=true WHERE CampoPK_ID IN(" & SelCampoChk2 & "); "
  51. End If
  52. '/* Lo mismo para cada campo.*/
  53. sSQLUpdate = sSQLUpdate & " UPDATE TABLA SET CampoChk3=false; "
  54. If FVal(Request("CampoChk3").count) > 0 Then
  55.     sSQLUpdate = sSQLUpdate & " UPDATE TABLA SET CampoChk3=true WHERE CampoPK_ID IN(" & SelCampoChk3 & "); "
  56. End If
  57. '/* Ejecuto las consultas.*/
  58. Conex.execute(sSQLUpdate)
  59.  
  60. %>

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