Foros del Web » Programando para Internet » ASP Clásico »

Problema con un Request

Estas en el tema de Problema con un Request en el foro de ASP Clásico en Foros del Web. Tengo el siguiente problema: De una pagina estoy mandando los valores de multiples valores (checkbox), en la pagina que los capturo tengo el sgte código ...
  #1 (permalink)  
Antiguo 28/09/2004, 16:29
 
Fecha de Ingreso: noviembre-2003
Ubicación: En uno de los países mas lindos: CHILE
Mensajes: 70
Antigüedad: 21 años, 6 meses
Puntos: 0
Problema con un Request

Tengo el siguiente problema:
De una pagina estoy mandando los valores de multiples valores (checkbox), en la pagina que los capturo tengo el sgte código Sql para k se ejecute:

DELETE * FROM LISTOTAL WHERE Numcompleto IN ('"+Request.Form("checkeado")+"')";

que es donde capturop los valores k voy a eliminar. Mi problema es el sgte:
Al escoger 1 solo valor, en la pagina2.asp lo puedo eliminar perfectamente
y keda asi:

DELETE * FROM LISTOTAL WHERE Numcompleto IN ('valor1')

por lo k no hay problema, pero si elijo + de uno en la pantalla1.asp me keda asi el Str:

DELETE * FROM LISTOTAL WHERE Numcompleto IN ('valor1,valor2')
y me toma como un solo valor el string:'valor1,valor2'
siendo k lo k necesito es k kede así:
DELETE * FROM LISTOTAL WHERE Numcompleto IN ('valor1','valor2')

por lo k mi problema es como puedo separar el valor k captura el Request.
Lo intente con el metodo del array :
array.join(), pero me sale un error k me dice k no lo reconoce el browser (IE 5.0).
De antemano. Gracias por la ayuda
  #2 (permalink)  
Antiguo 29/09/2004, 02:56
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 8 meses
Puntos: 381
Qué tal,

todos los campos checkbox se llaman igual?
  #3 (permalink)  
Antiguo 29/09/2004, 06:55
 
Fecha de Ingreso: noviembre-2003
Ubicación: En uno de los países mas lindos: CHILE
Mensajes: 70
Antigüedad: 21 años, 6 meses
Puntos: 0
Si pork el checkbox esta metido dentro de un ciclo While, k viene dado por una consulta a la Base de datos
  #4 (permalink)  
Antiguo 29/09/2004, 07:12
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 8 meses
Puntos: 381
Eso no es correcto, no deben haber campos dentro de un mismo formulario con el mismo nombre, a no ser que sean de tipo radio.

Asígnales un nombre distinto aunque sea agregándoles un número al final del name

Si estás haciendo un bucle, antes del bucle inicializa una variable a 0

Dim contador
contador = 0
do while not..... etc.
contador = contador + 1


y a la hora de escribir el name del campo le agregas detrás la variable contador

<input type="checkbox" name="checkeado<%=contador%>"

No sé si estarás usando un response.write, cambia la sintaxis en caso necesario.

Luego entonces puedes crear la sentencia sql recogiendo los valores de los campos usando un for each n in request.form



Yo creo que eso sería lo más adecuado.

Si no, también podrías recoger el valor 'Valor1,Valor2' y aplicarle un split() y luego mediante un bucle escribir las variables en la sentencia sql sacando los valores del array devuelto por el split()

no sé si logré explicarme...

Igual, tu consulta estará mejor ubicada en el foro de asp. Traslado el tema a ese foro

movido desde javascript

saludos
  #5 (permalink)  
Antiguo 29/09/2004, 07:25
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 8 meses
Puntos: 381
Mira a ver si este ejemplo te sirve

llama al documento prueba.asp

Código:
<%
sql = "DELETE * FROM LISTOTAL WHERE Numcompleto IN ('"
if request.form("pepe") <> "" then
pepe =request.form("pepe")
pepe = split(pepe,",")
for m=0 to ubound(pepe)
sql = sql & pepe(m) 
if m = ubound(pepe) then
sql = sql & "')"
else
sql = sql & "','"
end if
next
end if
response.write sql
%>
<form name="form1" id="form1" method="post" action="prueba.asp">
  <input name="pepe" type="checkbox" id="pepe" value="uno" />
   <input name="pepe" type="checkbox" id="pepe" value="dos" />
    <input name="pepe" type="checkbox" id="pepe" value="tres" />
<input name="pepe" type="checkbox" id="pepe" value="cuatro" />
  <input type="submit" name="Submit" value="Enviar" />
</form>


Al enviar el form verás cómo quedará escrita la sentencia sql

Última edición por tunait; 29/09/2004 a las 07:27
  #6 (permalink)  
Antiguo 29/09/2004, 07:40
 
Fecha de Ingreso: noviembre-2003
Ubicación: En uno de los países mas lindos: CHILE
Mensajes: 70
Antigüedad: 21 años, 6 meses
Puntos: 0
los checkbox tienen el mismo nombre pero el value es el id del registro que se esta seleccionando
  #7 (permalink)  
Antiguo 29/09/2004, 10:25
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Cita:
Iniciado por tunait
Eso no es correcto, no deben haber campos dentro de un mismo formulario con el mismo nombre, a no ser que sean de tipo radio.

Pues si tunait, es totalmente válido colocar campos con el mismo name.. todo depende de para qué lo vas a usar cuando los recojas, como en el caso de darb que necesita que los valores seleccionados le lleguen separados por comas en un mismo elemento.

Si el campo Numcompleto es de tipo numérico, con sólo recibir los valores separados por comas es suficiente (pero quitando los apóstrofes):


checkeado = Request.Form("checkeado")
strSQL = "DELETE FROM LISTOTAL WHERE Numcompleto IN (" & checkeado & ")"


Si el campo Numcompleto es de tipo string, hay que toquetear un poco el código (reemplazar la coma por un apóstrofe una coma y un apóstrofe):


checkeado = Request.Form("checkeado")
checkeado = Replace(checkeado, ",", "','")
strSQL = "DELETE FROM LISTOTAL WHERE Numcompleto IN ('" & checkeado & "')"


Saludos

PD: darb, el "*" no es necesario en sentencias DELETE (con algunas BD's puede dar errores)
__________________
...___...
  #8 (permalink)  
Antiguo 29/09/2004, 10:40
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 8 meses
Puntos: 381
Cita:
Pues si tunait, es totalmente válido colocar campos con el mismo name.. todo depende de para qué lo vas a usar cuando los recojas, como en el caso de darb que necesita que los valores seleccionados le lleguen separados por comas en un mismo elemento.
Tienes razón, los cheboxes también pueden compartir name al igual que los radio lapsus neuronal, voy a dejar de responder mientras trabajo

...y buena idea lo del replace, mira que me compliqué la vida
  #9 (permalink)  
Antiguo 29/09/2004, 15:18
 
Fecha de Ingreso: noviembre-2003
Ubicación: En uno de los países mas lindos: CHILE
Mensajes: 70
Antigüedad: 21 años, 6 meses
Puntos: 0
Me lanza Error

Implemente el código k me mandaron pero al utilizar el replace me da un error :
"Object expected"
y justamente en la sgte linea:
checkeado = replace(checkeado, ",", "','")
que podría ser que estuviera mal??????
  #10 (permalink)  
Antiguo 29/09/2004, 15:29
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Mmm.. estás seguro que es en esa línea?

Es que ejecuto una página que sólo contiene esto:

<%
checkeado = replace(checkeado, ",", "','")
strSQL = "DELETE FROM LISTOTAL WHERE Numcompleto IN ('" & checkeado & "')"
response.write strSQL
%>

y el resultado es:

DELETE FROM LISTOTAL WHERE Numcompleto IN ('')


Ningún error de ningún tipo. Para mi que el error está en otra parte
__________________
...___...
  #11 (permalink)  
Antiguo 29/09/2004, 15:48
 
Fecha de Ingreso: noviembre-2003
Ubicación: En uno de los países mas lindos: CHILE
Mensajes: 70
Antigüedad: 21 años, 6 meses
Puntos: 0
Problemas con la versión??????

Puede ser la version del JavaScript k uno esta trabajando no acepte el comando replace???, como puedo saber k version del javascript 1.1,....., etc ests trabajando uno???.Gracias
  #12 (permalink)  
Antiguo 29/09/2004, 15:48
 
Fecha de Ingreso: noviembre-2003
Ubicación: En uno de los países mas lindos: CHILE
Mensajes: 70
Antigüedad: 21 años, 6 meses
Puntos: 0
Problemas con la versión??????

Puede ser la version del JavaScript k uno esta trabajando no acepte el comando replace???, como puedo saber k version del javascript : 1.1,....., etc ests trabajando uno???.Gracias
  #13 (permalink)  
Antiguo 29/09/2004, 15:53
 
Fecha de Ingreso: noviembre-2003
Ubicación: En uno de los países mas lindos: CHILE
Mensajes: 70
Antigüedad: 21 años, 6 meses
Puntos: 0
yo ejecuto solamente este codigo :
Código:
<html>
<body>

<%
checkeado = replace(checkeado, ",", "','")
strSQL = "DELETE FROM LISTOTAL WHERE Numcompleto IN ('" & checkeado & "')"
Response.Write("strSQL"+strSQL)
%>

</body>
</html>
y no me aparece nada, la pagina keda en blanco.
  #14 (permalink)  
Antiguo 29/09/2004, 16:00
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Aish, que gil... no me di cuenta que estabas trabajando con JScript y no VBScript.
Pues, desconozco la sintaxis de JScript.. a ver si alguien se anima a traducirte eso que coloqué en VBScript a JScript
__________________
...___...
  #15 (permalink)  
Antiguo 29/09/2004, 22:21
 
Fecha de Ingreso: noviembre-2003
Ubicación: En uno de los países mas lindos: CHILE
Mensajes: 70
Antigüedad: 21 años, 6 meses
Puntos: 0
Hay alguien k maneje este tema, le agradecería su ayuda
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:14.