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

Eliminar registros de forma masiva en varias tablas

Estas en el tema de Eliminar registros de forma masiva en varias tablas en el foro de ASP Clásico en Foros del Web. Buenas, Tengo el siguiente codigo pero no se como hacer que en una misma select me elimine dos tablas los registros relacionados en común, la ...
  #1 (permalink)  
Antiguo 06/05/2005, 04:28
Avatar de Prefontaine  
Fecha de Ingreso: agosto-2004
Mensajes: 313
Antigüedad: 19 años, 9 meses
Puntos: 0
Eliminar registros de forma masiva en varias tablas

Buenas,
Tengo el siguiente codigo pero no se como hacer que en una misma select me elimine dos tablas los registros relacionados en común, la cuestión es que en una tabla me elimiina, pero en la otra no.

borrar = CINT(Request.QueryString("codigo"))

Set rsDeleteEntry = Server.CreateObject("ADODB.Recordset")

strSQL = "Delete * FROM atletas_ins WHERE codigo="&borrar
strSQL = "Delete * FROM equipos WHERE ID=" & borrar

rsDeleteEntry.LockType = 3

rsDeleteEntry.Open strSQL, Conn

rsDeleteEntry.Delete

Response.Redirect "ok.asp"
  #2 (permalink)  
Antiguo 06/05/2005, 05:59
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 9 meses
Puntos: 16
delete * no es una instruccion SQL estandar valida.
  #3 (permalink)  
Antiguo 06/05/2005, 06:59
Avatar de Prefontaine  
Fecha de Ingreso: agosto-2004
Mensajes: 313
Antigüedad: 19 años, 9 meses
Puntos: 0
He provado con el select y me hace lo mismo.
  #4 (permalink)  
Antiguo 06/05/2005, 07:06
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 9 meses
Puntos: 16
te recomendo que te leas un manual de sql.

aqui hay uno bueno.

www.w3schools.com/sql
  #5 (permalink)  
Antiguo 06/05/2005, 10:17
Avatar de Prefontaine  
Fecha de Ingreso: agosto-2004
Mensajes: 313
Antigüedad: 19 años, 9 meses
Puntos: 0
Lo leí y el DELETE sale de la misma manera que yo lo utilizo.
  #6 (permalink)  
Antiguo 06/05/2005, 10:19
Avatar de Prefontaine  
Fecha de Ingreso: agosto-2004
Mensajes: 313
Antigüedad: 19 años, 9 meses
Puntos: 0
Que puedo hacer? alguien me ayuda?
  #7 (permalink)  
Antiguo 06/05/2005, 10:19
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 9 meses
Puntos: 16
mnmnmnmnmnmnmnmnmnmnm y cual es el error qyue tye da????????????

tienes problemas con las constrains???
o algo parecido???

no puedes borrar en cascada???

aun no te comprendo
  #8 (permalink)  
Antiguo 06/05/2005, 10:54
Avatar de Prefontaine  
Fecha de Ingreso: agosto-2004
Mensajes: 313
Antigüedad: 19 años, 9 meses
Puntos: 0
Pués borrar borra, pero el campo que tienen en común solo borra uno.
Por ejemplo quiero que borre todos los que contengan el numero 666 y hay 10 registros como ese, pués solo borra uno en vez de hacerlo en los 10.

Gracias.
  #9 (permalink)  
Antiguo 06/05/2005, 17:39
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Humm...

El metodo que usas me parece muy mal.. pero pues ya lo resolviste, entonces hazlo asi...

strSQL = "Delete * FROM atletas_ins WHERE codigo like %"&borrar & "%"
strSQL = "Delete * FROM equipos WHERE ID like %" & borrar & "%"
  #10 (permalink)  
Antiguo 07/05/2005, 15:11
Avatar de Prefontaine  
Fecha de Ingreso: agosto-2004
Mensajes: 313
Antigüedad: 19 años, 9 meses
Puntos: 0
pués me da el mismo error, no se que diferencia hay.
  #11 (permalink)  
Antiguo 07/05/2005, 15:47
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Hummm

No me referia a como arreglarlo, me refiero a la parte de masivo...

WHERE codigo like %"&borrar & "%"
WHERE ID like %" & borrar & "%"

De esa forma borraras cualquier cadena que contenga lo que tu necesitas.

Suerte!!
  #12 (permalink)  
Antiguo 07/05/2005, 20:37
Avatar de robertonavarro  
Fecha de Ingreso: octubre-2004
Mensajes: 72
Antigüedad: 19 años, 7 meses
Puntos: 1
Ya no entendí cual es el problema, que te borra los que quieres borrar de la primera tabla pero no de la segunda, o te borra solo el primer registro que cumple con la condición del where ¿o las dos cosas?

Algo mas, estás tomando en cuanta que la instrucción

strSQL = "Delete * FROM atletas_ins WHERE codigo="&borrar

se anula cuando es sobreescrita por

strSQL = "Delete * FROM equipos WHERE ID=" & borrar
  #13 (permalink)  
Antiguo 07/05/2005, 20:54
 
Fecha de Ingreso: mayo-2005
Ubicación: Girona
Mensajes: 4
Antigüedad: 19 años, 1 mes
Puntos: 0
Claro te borra solo lo de la segunda comanda SQL!

borrar = CINT(Request.QueryString("codigo"))

Set rsDeleteEntry = Server.CreateObject("ADODB.Recordset")

strSQL = "Delete * FROM atletas_ins WHERE codigo="&borrar
strSQL = "Delete * FROM equipos WHERE ID=" & borrar

rsDeleteEntry.LockType = 3

rsDeleteEntry.Open strSQL, Conn

rsDeleteEntry.Delete

Mira yo lo haria asi:
Creo primero un objeto Connection llamado conn y luego
strSQL = "Select * FROM atletas_ins WHERE codigo="&Request.QueryString("codigo")
strSQL2 = "Select * FROM equipos WHERE codigo="&Request.QueryString("codigo")

Set rsDeleteEntry= Server.CreateObject("ADODB.Recordset")
rsDeleteEntry.Open strSQL, conn, adOpenKeyset, adLockOptimistic, adCmdText
Set rsDeleteEntry2= Server.CreateObject("ADODB.Recordset")
rsDeleteEntry2.Open strSQL2, conn, adOpenKeyset, adLockOptimistic, adCmdText
While not rsDeleteEntry.Eof
rsDeleteEntry.Delete
rsDeleteEntry.MoveNext
Wend
rsDeleteEntry.Close
While not rsDeleteEntry2.Eof
rsDeleteEntry2.Delete
rsDeleteEntry2.MoveNext
Wend
rsDeleteEntry2.Close

No hace falta pasar el Request.QueryString("codigo") a int, puesto k sql es un string
Hay k recorrer todo el recordset puesto que puede contener mas de una fila (todos los que tengan codigo = Request.QueryString("codigo"))


Espero haberte podido ayudar un poco

Saludos
  #14 (permalink)  
Antiguo 08/05/2005, 06:51
Avatar de Prefontaine  
Fecha de Ingreso: agosto-2004
Mensajes: 313
Antigüedad: 19 años, 9 meses
Puntos: 0
Pués nada de nada sigue igual, es más nisiquiera borra, el codigo es el siguiente:

<%
Dim strSQL2
Dim rsDeleteEntry2

strSQL = "Select * FROM atletas_ins WHERE codigo="&Request.QueryString("codigo")
strSQL2 = "Select * FROM equipos WHERE ID="&Request.QueryString("codigo")

Set rsDeleteEntry= Server.CreateObject("ADODB.Recordset")
rsDeleteEntry.Open strSQL, conn, adOpenKeyset, adLockOptimistic, adCmdText

Set rsDeleteEntry2= Server.CreateObject("ADODB.Recordset")
rsDeleteEntry2.Open strSQL2, conn, adOpenKeyset, adLockOptimistic, adCmdText
While not rsDeleteEntry.Eof
rsDeleteEntry.Delete
rsDeleteEntry.MoveNext
Wend
rsDeleteEntry.Close
While not rsDeleteEntry2.Eof
rsDeleteEntry2.Delete
rsDeleteEntry2.MoveNext
Wend
rsDeleteEntry2.Close
Response.Redirect "crear_equipo.asp?noregistrado=Su equipo no a sido registrado, cree uno de nuevo."

rsDeleteEntry.Close
Set rsDeleteEntry = Nothing
Set Conn = Nothing

%>
  #15 (permalink)  
Antiguo 08/05/2005, 07:41
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
has probado esto? así tiene que funcionar por pelotas.

Código:
strSQL = "delete FROM atletas_ins WHERE codigo="&Request.QueryString("codigo")
strSQL2 = "delete FROM equipos WHERE ID="&Request.QueryString("codigo")
conn.execute strSQL
conn.execute strSQL2
y si no te funciona, CODIGO e ID son los dos numéricos, no? no tendrás alguno de ellos como texto.
OOORII, para qué gastar tiempo de servidor si lo puede hacer todo el motor SQL?
  #16 (permalink)  
Antiguo 08/05/2005, 10:14
Avatar de Prefontaine  
Fecha de Ingreso: agosto-2004
Mensajes: 313
Antigüedad: 19 años, 9 meses
Puntos: 0
Los dos campos son numericos y le coloco el delete en vez del select y me sale lo mismo.
  #17 (permalink)  
Antiguo 08/05/2005, 17:31
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
que no, cojones!! que no es eso lo único que tienes que hacer!!
pruebalo tal y como te lo he puesto y nos comentas.
  #18 (permalink)  
Antiguo 09/05/2005, 02:03
Avatar de Prefontaine  
Fecha de Ingreso: agosto-2004
Mensajes: 313
Antigüedad: 19 años, 9 meses
Puntos: 0
Muchisimas gracías, ahora sí!!! resulta que con 4 lineas bastava, joder... de verdad muchas gracias, ole, ole y oleeeeee!!!
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 19:30.