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

eliminar registro de una base de datos

Estas en el tema de eliminar registro de una base de datos en el foro de ASP Clásico en Foros del Web. hola, Estoy con una pagina asp(VBSript) muestro una tabla con el contenido de una base de datos, ademas hay una columna adicional que contiene un ...
  #1 (permalink)  
Antiguo 20/07/2005, 05:22
 
Fecha de Ingreso: julio-2005
Mensajes: 43
Antigüedad: 18 años, 9 meses
Puntos: 0
eliminar registro de una base de datos

hola,
Estoy con una pagina asp(VBSript) muestro una tabla con el contenido de una base de datos, ademas hay una columna adicional que contiene un checkbox , y por ultimo un boton de eliminar, me gustaria que cuando pulse ese boton se eliminen las filas seleccionadas(como cuando estás en tu cuenta de correo y marcas los mensajes que quieres y después pulsas el botón eliminar y los elimina).Si alguien puede contestarme lo agradeceria llevo mas de una semana dandole vueltas a esto
  #2 (permalink)  
Antiguo 20/07/2005, 05:26
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
Si te fijas en el valor que te devuelve al recoger los checkbox, te vas a dar cuenta que sigue un esquema así:

valor_checkbox1, valor_checkbox2, valor_checkbox3, ....'Todos los checkbox seleccionados

Eso encaja perfecto para hacer una sentencia SQL con IN. Todos los checkbox tienen que tener obviamente el mismo nombre.
Sería algo así:

variable = Request.Form("nombreDelCheckbox")

sql = "DELETE FROM tu_tabla WHERE algun_campo IN (" & variable & ");"

Y eso es todo.
Espero que haya sido de ayuda.
Saludos!.
__________________
Add, never Remove
  #3 (permalink)  
Antiguo 20/07/2005, 07:21
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 3 meses
Puntos: 6
¡Hostia!, y yo que me creía que ya lo sabía todo referente a eso, y esa forma de combinar varios checkbox con el mismo nombre con una sentencia SQL que emplee IN no la conocía! (emplear la separación por comas que el formulario utiliza)

  #4 (permalink)  
Antiguo 20/07/2005, 07:50
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
En este foro se aprende de todo realmente!. Antes hacia un bucle que recorra todos los checkbox y vaya eliminando los registros acordes al valor del checkbox, hasta que en un momento me di cuenta que seguro habia una forma mejor, y fue U Goldman (si mal no recuerdo) el que me respondió para hacerlo de esa forma. Está muy bueno.
Saludos!.
__________________
Add, never Remove
  #5 (permalink)  
Antiguo 20/07/2005, 10:49
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 3 meses
Puntos: 6
Jeje, ¡pues sí! ¿Y un método para lo mismo, pero en vez de DELETE para INSERT? Para esto ya no creo que haya. ¿Y para UPDATE? Creo que tampoco, y en ambos se deberá hacer un bucle que vaya comprobando los checkboxes...

Otra duda, sobre el método ya comentado y que has puesto: ¿por qué en el value del checkbox va a estar el nombre del campo que quieres borrar? ¿En estos values no se guarda simplemente "ON" o nada?
  #6 (permalink)  
Antiguo 20/07/2005, 11:58
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 5 meses
Puntos: 16
gracias a dios el hombre amprende hasta su muerte :D
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #7 (permalink)  
Antiguo 20/07/2005, 12:14
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
un_tio, para INSERT no serviría ya que no lleva WHERE ;)
Para hacer un UPDATE pues si, pero por ejemplo para cambiar el estado de un campo a todos los registros especificados en el IN(). Muy útil, por cierto.
__________________
...___...
  #8 (permalink)  
Antiguo 20/07/2005, 12:47
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
un_tio, me refiero a que todos los checkbox se deben llamar de la misma forma, para que puedas recogerlo con Request.Form("nombre_del_checkbox"). Si todos los checkboxes no se llamaran de la misma forma, este tipo de sentencias no se podrían lograr, salvo con un poco de artesanía (supongo).
Por otra parte, el value del checkbox, tendrá que llevar alguna información relevante para hacer la sentencia SQL. Casi siempre lleva el Id o alguna clave que identifique a cada registro, para poder ejecutar la sentencia. Imagina si a todos los checkboxes le pones el value "On", lo que te va a llegar a vos cuando recoges el valor de los checkboxes sería "On, On, On, On..." tantos On como checkboxes el usuario haya seleccionado. De nada serviría en este caso.
Saludos!.
__________________
Add, never Remove
  #9 (permalink)  
Antiguo 20/07/2005, 13:07
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 3 meses
Puntos: 6
¡Claro mariano! ¿Pero puedes forzar tú que el valor sea distinto de "On" o ""? Ya que este valor no lo pones tú, lo pone la máquina.

Al Zuwaga, ¿podrías poner un ejemplo sencillísimo de lo del UPDATE? No lo acabo de ver (nunca he usado un IN para un UPDATE). Tal y como lo veo, el update se haría como en este ejemplo:

UPDATE Tabla SET Campo1=Valor1, Campo2=Valor2, CampoN=ValorN
WHERE Criterio

Por tanto, el bucle no lo evitarías (por lo del set). No sé si el IN que dices sería para evitar otro tipo de bucle (el del WHERE) pero el del SET no.

Saludos
  #10 (permalink)  
Antiguo 20/07/2005, 13:11
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
Quizás estamos hablando de "VALUES" distintos. Yo en este caso me estaba refiriendo al value atributo de los checkbox´. es ese value el que te estás refiriendo vos un_tio?. Sin meterme en terreno de Al Zuwaga, un ejemplo con UPDATE sería igual que con DELETE:

"UPDATE tu_tabla SET campo1 = valor, campo2 = valor WHERE campo3 IN (1,5,9)"

Saludos!.

..................................edicion......... ..

Si se evita el bucle. Con el IN le estás diciendo que actualice aquellos registros en donde el campo que se antepone a la palabra IN, este dentro de los valores que le pasas dentro del paréntesis (separados por coma). Eso equivaldría a hacer un bucle, diciendo en cada iteración "WHERE campo = " & valorDeIteracionN".
Funciona de la misma manera que el DELETE, UPDATE, y también SELECT, es decir, aquellas sentencias que aceptan a WHERE (como dijo Al Zuwaga). Por ejemplo con:

"SELECT * FROM tu_tabla WHERE Id IN (1, 982, 39048, 239)"

te traería los registros cuyo Id sea 1, 982, 39048 o 239.
Espero que te sirva para que lo empiece a aplicar, no hay mejor manera de comprobarlo que haciendolo uno mismo.
Saludos un_tio!.
__________________
Add, never Remove

Última edición por mariano_donati; 20/07/2005 a las 13:20
  #11 (permalink)  
Antiguo 20/07/2005, 13:14
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 3 meses
Puntos: 6
Lo de Al Zuwaga, ya está claro (serviría para el caso en el que quisieras actualizar varios registros de golpe, que no para facilitar actualizar varios campos de golpe).

Lo de VALUE, yo también me refiero al value del checkbox... que cuando lo envías desde un formulario, recibes "on" o vacío...
  #12 (permalink)  
Antiguo 20/07/2005, 13:22
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
Pero le estás asignando algún valor?, creo que Dreamweaver te marca con el valor por defecto "On" del value, pero es un atributo totalmente modificable dinámicamente.
__________________
Add, never Remove
  #13 (permalink)  
Antiguo 20/07/2005, 13:42
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 3 meses
Puntos: 6
Hmmm, es posible que lo que ocurre sea que cuando seleccionas un checkbox, te ponga On, pero que después puedas tú cambiarlo desde javascript.

El caso es que el Dreaweaver no creo que sea, pues como digo, el "on" sólo lo pone en los checkbox que selecciones (es decir, cuando la página ya está fuera del DreamWeaver o de cualquier otro editor de páginas Web).
  #14 (permalink)  
Antiguo 20/07/2005, 13:54
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
No, un_tio. Un checkbox es así:

<input type="checkbox" name="un_nombre" value="un_valor">

entonces, si a todos los checkboxes los llamás igual (digamos, id) y a cada uno le ponés el value del id de registro que le corresponde..

<% while not rs.eof %>
<input type="checkbox" name="id" value="<% = rs("id") %>"><br>
<%
rs.movenext
wend
%>

al momento de hacer el request.form("id") te van a llegar todos los values de los checkboxes que han sido seleccionados separados por comas.

no te llegará "on, on, on" sino "id1, id2, id365, id85, idETC"

Si no es eso lo que no estabas entendiendo, sepa usted disculpar la intromisión :p
__________________
...___...
  #15 (permalink)  
Antiguo 20/07/2005, 13:55
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
(agregando, debe ser que si no se le especifica un value, por defecto éste es "on")
__________________
...___...
  #16 (permalink)  
Antiguo 20/07/2005, 14:16
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 3 meses
Puntos: 6
Será al Zuwaga eso último que has dicho, que por defecto se le asigna "on", pero además si no tiene valor y si además está seleccionado. Ahora voy a probarlo.
  #17 (permalink)  
Antiguo 20/07/2005, 14:22
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 3 meses
Puntos: 6
Probado, efectivamente eso es... bufff... yo cuando lo hice, pensaría que cómo iba a saber si estaba seleccionado o no el checkbox, sino mirando si ponía "on"... no pensé (porque no sabía) que si ponía varios checkbox con el mismo nombre, sólo llegarían los que estuvieran seleccionados y no me hacía falta hacer esa tarea de selección. Pues tuve que inventar una solución para aquello... (usar un campo hidden para guardar el id de la tabla, y cuyo nombre tuviera cierto "parentesco" (un número) con el del checkbox).

Viviendo y aprendiendo.
  #18 (permalink)  
Antiguo 20/07/2005, 14:31
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
Y te funcionó también la actualización utilizando IN?
__________________
Add, never Remove
  #19 (permalink)  
Antiguo 20/07/2005, 15:04
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 3 meses
Puntos: 6
Lo del IN no lo he probado, supongo que irá.
  #20 (permalink)  
Antiguo 21/07/2005, 07:55
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
El quinto duplicado del mismo usaurio del mismo tema.
  #21 (permalink)  
Antiguo 21/07/2005, 10:33
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 5 meses
Puntos: 16
Myakire... si hay gente que no tiene remedio... saludos
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
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 18:37.