(los selects tendrian 2 valores : SI/NO y lo almacenaria en una base access).
O estoy divagando?.

Saludos.
| ||||
Con For-Each recuperas toda la coleccion de Request: <% for each v_entrada in request.form for indice=1 to request.form(v_entrada).count response.write v_entrada&"="&request.form(v_entrada)(indice)&"<br >" next next %> Saludos |
| |||
Saludos, Bueno una solución posible podría ser la siguiente Como los selects son dinámicos yo les pondría por nombre: Select1 Select2 ... Select5 También pondría un campo con el total de campos que se generaron, TotalSelects = 5 Y después los recuperaría de la siguiente manera: <% FOR I = 1 TO Cint(TotalSelects) Response.write(Request.Form("Select" & I)) NEXT %> |
| ||||
Lo de Miakyre funciona barbaro y lo de JosephFley tambien. Gracias, pero abusando de vuestra atencion he tratado de hacer lo siguiente: al mismo tiempo que se generan los select se generan tambien un textbox que acompaña a cada select . En cada textbox se trae de la base un valor que luego debe ser recuperado junto con los selects. Pero no he podido. Como debo indicar que mediante el for each y otro for next (caso de Miakyre) me traiga el name (por ende el value) de cada textbox?. La idea es que estos dos valores se deben guardar en base. Gracias.
__________________ Carlunchos |
| ||||
Pero el name tu lo sabes. Cuando los creas, como te mencionó JosephFley les debes de poner un prefijo, por ejemplo, "check" y les debes concatenenar un indice para que se distingan. Y con un simple ciclo puedes preguntar uno por uno como tambien te comento JosephFley. Para recorrer solo los check box hace algo asi: for 1 to request.form("checkbox name").count 'aqui haces todas tus actualizaciones si esta seleccionado, recuerda que debes indicar el indice. next ¿O tal vez no era eso lo que necesitas? |
| ||||
Muchachos, me parece que les estoy haciendo perder tiempo. Mejor traten de darme una idea aproximada de como harian los siguiente: debo mostrar un formulario donde se presentaran en forma dinamica un select (SI/NO) y un textbox. Habra tantas filas de selects y textbox de acuerdo a tantos registros segun una condicion del sql. Los selects tendran esos valores (SI/NO) y los textboxes que los acomañan tendran un valor extraido de la base. Como harian uds para luego mandar esos valores a otra pagina para ser almacenados en base?. Pasenme una idea que yo me encargo de tratar de codificarlo. Gracias de nuevo.
__________________ Carlunchos |
| ||||
Muchachos, dandole vueltas al tema, llegue a esto: for each sel in request.form response.write sel&"="&request.form(sel)&"<br>" next lo que arroja en la otra pagina: sel_sino=NO, NO, NO submit2=Guardar Datos id_correccion=PL301, PL302, PL303 cantidad=3 (numero de items mostrados en pagina). Lo que necesito es llegar a esto (encabezado de campos y registros): sel_sino | id_correccion NO | PL301 NO | PL302 NO | PL303 es decir grabar 3 registros. Pero los datos me llegan como si fueran un array. Me explico?. Gracias.
__________________ Carlunchos |
| ||||
Bueno, el tener el mismo nombre en los elementos te sirve para hacer operaciones tales como updates, deletes y select. Ejemplos: SQL = "UPDATE tabla set campo = verdadero WHERE ID IN(" & Request.Form("Check") & ")" o bien SQL = "Delete From tabla where ID IN(" & Request.Form("Check") & ")" Pero para los insert no va. Tienes que distingirlos según su nombre: Como ya te hemos mencionado, normalmente, agregandoles un número; o por su índice. Se manejarian mas o menos igual: <% for cnt=1 to CInt(request("cantidad")) if request.form("sel_sino"&cnt)="SI" Then Sql = "insert .... etc, etc" End If next %> De la segunda sería con algo mas o menos asi: <% for cnt=1 to request.form("sel_sino").count if request.form("sel_sino")(cnt)="SI" Then Sql = "insert .... etc, etc" End If next %> Espero tus comentarios ![]() |
| ||||
Hola Myakire, atento a lo que me pasaste y luego de dar vueltas y vueltas , tengo lo siguiente: response.write "<form name=form2 method=post action='guarda_datos.asp?cantidad="&i&"'>" response.write "<table border=1 width='70%'>" response.write "<tr>" response.write "<td align=center>Visto</td>" response.write "<td align=center>Opcion</td>" response.write "<td align=center>Id</td>" response.write "<td align=center><font color=black size=2 face=Arial,Verdana,Times>Observacion</font></td>" response.write "</tr>" response.write "<font color="&color&" size=2 face=Arial,Verdana,Times>"&titulo&" - <a href='conversion2.asp?modif=1¢1="¢1&"' title = 'Modificar Correcciones'>"¢1&"</a></font>" i = 0 do while not rst.EOF i = i + 1 response.write "<tr>" response.write "<td align=center><input type=checkbox name='chk_visto' value='si'></td>" response.write "<td align=center bgcolor="&color&">" response.write "<select name='sel_sino' size=1>" response.write "<option value='SI'>SI</option>" response.write "<option value='NO'>NO</option>" response.write "</select>" response.write "</td>" response.write "<td align=center><input type=text name='id_correccion' disabled value="&rst("id_correccion")&" size=5 maxlenght=5</td>" response.write "<input type=hidden name='id_correccion' value="&rst("id_correccion")&">" response.write "<td align=left><font color=black face=Arial size=2>"&rst("detalle_correccion")&"</font></td>" rst.movenext loop rst.close response.write "<input type=hidden name=cantidad value="&i&">" response.write "<input type=hidden name=cent1 value='"¢1&"'>" response.write "</tr>" response.write "<tr>" response.write "<td bgcolor="&color&" colspan=4 align=center><br><input type=submit name=submit2 value='Guardar Datos'></td>" response.write "</form>" En la pagina guarda_datos.asp tengo: Set rst = Server.CreateObject("adodb.recordset") for veces = 1 to request.form("sel_sino").count if request.form("sel_sino")(veces)="SI" or request.form("sel_sino")(veces)="NO" then dato = request.form("sel_sino")(veces) dato1 = request.form("id_correccion")(veces) if request.form("chk_visto")(veces) = "si" then dato2 = "si" if request.form("chk_visto")(veces) = "" then dato2 = "no" response.write "Vale = "&veces&"<br>" sql = "Insert Into guarda_correccion (central,chk_visto,sel_sino,id_correccion) values ('"¢1&"','"&dato2&"','"&dato&"','"&dato1&"') " rst.open sql, strProvider,1,3 end if next tras lo cual me aparece el error : sel_sino = SI, NO, SI submit2 = Guardar Datos id_correccion = PL301, PL302, PL303 chk_visto = si cantidad = 3 Vale = 1 Objeto Request error 'ASP 0105 : 80004005' Índice fuera de rango /Actas_conv/guarda_datos.asp, line 37 Un índice de matriz está fuera de rango. Este error aparece si no tildo todos los checkboxes "chk_visto". Si estan todos tildados no aparece el error y se guardan en base. Le di vueltas pero no doy en el clavo. Alguna sugerencia?. ![]() Gracias.
__________________ Carlunchos |
| ||||
Hola Myakire: tengo esto response.write "<form name=form2 method=post action='guarda_datos.asp?cantidad="&i&"'>" response.write "<table border=1 width='70%'>" response.write "<tr>" response.write "<td align=center>Visto</td>" response.write "<td align=center>Opcion</td>" response.write "<td align=center>Id</td>" response.write "<td align=center><font color=black size=2 face=Arial,Verdana,Times>Observacion</font></td>" response.write "</tr>" response.write "<font color="&color&" size=2 face=Arial,Verdana,Times>"&titulo&" - <a href='conversion2.asp?modif=1¢1="¢1&"' title = 'Modificar Correcciones'>"¢1&"</a></font>" i = 0 do while not rst.EOF i = i + 1 response.write "<tr>" response.write "<td align=center><input type=checkbox name='chk_visto' value='si'></td>" response.write "<td align=center bgcolor="&color&">" response.write "<select name='sel_sino' size=1>" response.write "<option value='SI'>SI</option>" response.write "<option value='NO'>NO</option>" response.write "</select>" response.write "</td>" response.write "<td align=center><input type=text name='id_correccion' disabled value="&rst("id_correccion")&" size=5 maxlenght=5</td>" response.write "<input type=hidden name='id_correccion' value="&rst("id_correccion")&">" response.write "<td align=left><font color=black face=Arial size=2>"&rst("detalle_correccion")&"</font></td>" rst.movenext loop rst.close response.write "<input type=hidden name=cantidad value="&i&">" response.write "<input type=hidden name=cent1 value='"¢1&"'>" response.write "</tr>" response.write "<tr>" response.write "<td bgcolor="&color&" colspan=4 align=center><br><input type=submit name=submit2 value='Guardar Datos'></td>" response.write "</form>" y en guarda_datos.asp Set rst = Server.CreateObject("adodb.recordset") for veces = 1 to request.form("sel_sino").count if request.form("sel_sino")(veces)="SI" or request.form("sel_sino")(veces)="NO" then dato = request.form("sel_sino")(veces) dato1 = request.form("id_correccion")(veces) if request.form("chk_visto")(veces) = "si" then dato2 = "si" if request.form("chk_visto")(veces) = "" then dato2 = "no" response.write "Vale = "&veces&"<br>" sql = "Insert Into guarda_correccion (central,chk_visto,sel_sino,id_correccion) values ('"¢1&"','"&dato2&"','"&dato&"','"&dato1&"') " 'rst.open sql, strProvider,1,3 end if next pero, sino tildo todos los "chk_visto" me sale el cartel: sel_sino = SI, NO, SI submit2 = Guardar Datos id_correccion = PL301, PL302, PL303 chk_visto = si cantidad = 3 cent1 = AMERICA Vale = 1 Objeto Request error 'ASP 0105 : 80004005' Índice fuera de rango /Actas_conv/guarda_conversion.asp, line 37 Un índice de matriz está fuera de rango. pero si tildo todos los "chk_visto" no sale cartel. En que le estoy errando?. ![]() Saludos.
__________________ Carlunchos |
| ||||
Bueno, veo que el código tiene varios errores y de diversos tipos, por ejemplo, los campos deshabilitados no se mandan por el formulario y tu estas preguntando por ellos. Copia y pega en un programa este código, correlo y si es lo que necesitas modificalo:
Código:
Saludos <% if CInt(Request.Form("hidTotElementos"))>0 Then for cnt = 1 to CInt(Request.Form("hidTotElementos")) IF request.form("chk_visto"&cnt)="si" then dato = request.form("sel_sino"&cnt) dato1 = request.form("id_correccion"&cnt) if request.form("chk_visto"&cnt) = "si" then dato2 = "si" end if sql = "Insert Into guarda_correccion (central, chk_visto, sel_sino, id_correccion) values ('"¢1&"','"&dato2&"','"&dato&"','"&dato1&"')" response.write sql & "<br>" End If Next End If %> <form name=form2 method=post action='checks.asp'> <table border=1 width='70%'> <tr> <td align=center>Visto</td> <td align=center>Opcion</td> <td align=center>Id</td> <td align=center><font color=black size=2 face=Arial,Verdana,Times>Observacion</font></td> </tr> <font color="&color&" size=2 face=Arial,Verdana,Times>Titulo - <a href='conversion2.asp?modif=1¢1="¢1&"' title = 'Modificar Correcciones'> Cualquiera</a></font> <%for i=1 to 10%> <tr> <td align=center><input type=checkbox name='chk_visto<%=i%>' value='si'></td> <td align=center bgcolor="&color&"> <select name='sel_sino<%=i%>' size=1> <option value='SI'>SI</option> <option value='NO'>NO</option> </select> </td> <td align=center><input type=text name='id_correccion<%=i%>' readonly value="id_Correccion<%=i%>" size=5 maxlenght=5</td> <td align=left><font color=black face=Arial size=2>"Valor<%=i%>"</font></td> <% Next %> <input type=hidden name=hidTotElementos value=10> </tr> <tr> <td bgcolor="&color&" colspan=4 align=center><br><input type=submit name=submit2 value='Guardar Datos'></td> </form> |
| ||||
Gracias Myakire por tu voluntad pero debo decirte que no he logrado aplicar tus directivas, asi tratare de buscarle otra forma mas simple para el formulario, es decir sin enviar los checkboxes y solo mandar los select y los texts. Gracias nuevamente. Carlunchos.
__________________ Carlunchos |
| ||||
Bueno carlunchos, buena suerte, pero debo mencionar que si le das la vuelta a este problema (que es algo trivial en programación Web) vas a batallar mas adelante, tarde o temprano. Mejor sacarlo ahora que ya le encontramos la forma. Ahora, manejar los checks no es diferente a manejar los demás controles. El código que te postie hace lo que necesitas, solo debes agregar el código de conexión y listo. ¿Qué problema tuviste para ejecutar el ejemplo? |
| ||||
Bueno Myakire, el problema era que no indicaba el numero de pasada (i) en los name del formulario, por ende cuando los recuperaba en la otra pagina, no grababa cada item. Y eso que me lo habias indicado en el ejemplo. He perdido toda la terde de ayer domingo dandole vueltas sin resultado. Solo he cambiado esto: IF request.form("chk_visto"&cnt) = "si" por esto: IF request.form("chk_visto"&cnt) = "si" OR request.form("chk_visto"&cnt) = "" then porque sino los checkboexes que no son tildados no los recupera, es decir que de 4 check,si solo marco dos, solo hace 2 inserciones. Nuevamente gracias y ya te caigo con algun entrevero.
__________________ Carlunchos |