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

Eliminar registro completo, incluyendo imagenes

Estas en el tema de Eliminar registro completo, incluyendo imagenes en el foro de ASP Clásico en Foros del Web. Buenos días... otra vez Siguiendo con mi pequeña aplicación de alquiler y venta de inmuebles, ahora un código que funcionaba perfectamente ya no me funciona, ...
  #1 (permalink)  
Antiguo 01/12/2008, 03:57
Avatar de Cameron_2006  
Fecha de Ingreso: diciembre-2006
Mensajes: 248
Antigüedad: 18 años, 4 meses
Puntos: 0
Eliminar registro completo, incluyendo imagenes

Buenos días... otra vez

Siguiendo con mi pequeña aplicación de alquiler y venta de inmuebles, ahora un código que funcionaba perfectamente ya no me funciona, anteriormente no había relacionado las tablas, ahora si, y el error que me da es que:

Microsoft JET Database Engine error '80004005'

El registro no se puede eliminar o cambiar porque la tabla 'fotos_inmuebles' incluye registros relacionados.

/administrador/inmuebles_locales/borrar_inmueble.asp, línea 24


La línea 24 es esta:
conn.execute SQL

y el código completo para borrar estos registros es este:
<%
Dim conn
Dim SQL
Dim id_inmueble

dim fs,rs1,archivo
Set fs = Server.CreateObject("Scripting.FileSystemObject")
for each id_inmueble IN Request.Form("Borrar")

SQL="delete from inmuebles where id_inmueble="& id_inmueble
conn.execute SQL

sql="select filename from fotos_inmuebles where id_inmueble="& id_inmueble
set rs1=conn.execute(sql)
do while not rs1.eof
archivo="../../fotos_inmuebles/"& rs1.fields("filename")
archivo="C:\Inetpub\vhosts\dominio.com\httpdocs\fo tos_inmuebles"&(archivo)

if fs.FileExists(archivo) then fs.DeleteFile(archivo)
rs1.movenext
loop
sql="delete from fotos_inmuebles where id_inmueble="& id_inmueble
conn.execute SQL

NEXT

Set fs = Nothing

conn.close
set conn=Nothing
Response.redirect "index.asp"

%>


GRACIAS, GRACIAS Y MIL GRACIAS POR LA AYUDA!
  #2 (permalink)  
Antiguo 01/12/2008, 04:05
 
Fecha de Ingreso: diciembre-2008
Ubicación: Madrid
Mensajes: 78
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Eliminar registro completo, incluyendo imagenes

Puedes crear en la base de datos una relación para que los registros relacionados se borren en cascada. También puedes hacerlo con ASP, con una llamada a la base de datos de los registros relacionados que los vaya borrando antes de eliminar el registro del inmueble principal.

Saludos,
Diego
  #3 (permalink)  
Antiguo 01/12/2008, 04:36
Avatar de Cameron_2006  
Fecha de Ingreso: diciembre-2006
Mensajes: 248
Antigüedad: 18 años, 4 meses
Puntos: 0
Respuesta: Eliminar registro completo, incluyendo imagenes

Hola Gracias por responder, ok, la primera opción borra los registros del inmueble pero no las imagenes, y la 2da. opción la verdad que no se como hacerlo... sigo investigando gracias
  #4 (permalink)  
Antiguo 01/12/2008, 04:41
Avatar de Cameron_2006  
Fecha de Ingreso: diciembre-2006
Mensajes: 248
Antigüedad: 18 años, 4 meses
Puntos: 0
Respuesta: Eliminar registro completo, incluyendo imagenes

aclaro, no elimina los arhivos de la carpeta
  #5 (permalink)  
Antiguo 01/12/2008, 05:20
 
Fecha de Ingreso: diciembre-2008
Ubicación: Madrid
Mensajes: 78
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Eliminar registro completo, incluyendo imagenes

jaja ok, pensaba que no eliminaba los registros. Entonces deberás crear otro recordset para la tabla adicional. Creando un bucle dentro que vaya borrando una a una las imágenes y su registro correspondiente.

Cita:
select tablaregistros_relacionados where id_Relacionada=id_inmueble
for loop=1 to rs1.recordcount

borrar imagen
borrar registro

next
Lo de arriba es solo un esquema, pero no te costará implementarlo :)
  #6 (permalink)  
Antiguo 01/12/2008, 05:41
Avatar de Cameron_2006  
Fecha de Ingreso: diciembre-2006
Mensajes: 248
Antigüedad: 18 años, 4 meses
Puntos: 0
Respuesta: Eliminar registro completo, incluyendo imagenes

así: (lo verde es lo nuevo)

<%
Dim conn
Dim SQL
Dim id_inmueble

dim fs,rs1,archivo
Set fs = Server.CreateObject("Scripting.FileSystemObject")
for each id_inmueble IN Request.Form("Borrar")

SQL="delete from inmuebles where id_inmueble="& id_inmueble
conn.execute SQL

sql="select filename from fotos_inmuebles where id_inmueble="& id_inmueble
set rs1=conn.execute(sql)
do while not rs1.eof
archivo="../../fotos_inmuebles/"& rs1.fields("filename")
archivo="C:\Inetpub\vhosts\dominio.com\httpdocs\fo tos_inmuebles"&(archivo)

if fs.FileExists(archivo) then fs.DeleteFile(archivo)
rs1.movenext
loop
sql="delete from fotos_inmuebles where id_inmueble="& id_inmueble
for loop=1 to rs1.recordcount
conn.execute SQL

NEXT

Set fs = Nothing

conn.close
set conn=Nothing
Response.redirect "index.asp"

%>
  #7 (permalink)  
Antiguo 01/12/2008, 10:20
Avatar de Cameron_2006  
Fecha de Ingreso: diciembre-2006
Mensajes: 248
Antigüedad: 18 años, 4 meses
Puntos: 0
Respuesta: Eliminar registro completo, incluyendo imagenes

'ok, aqui selecciono el registro de imagen que correspondede al registro del inmueble:

sql="select filename from fotos_inmuebles where id_inmueble="& id_inmueble
set rs1=conn.execute(sql)

do while not rs1.eof
'busco los archivos que corresponden y existen a ese registro en la carpeta y los eliminio:
archivo="../../fotos_inmuebles/"& rs1.fields("filename")
archivo="C:\Inetpub\vhosts\dominio.es\httpdocs\fot os_inmuebles"&(archivo)
if fs.FileExists(archivo) then fs.DeleteFile(archivo)
rs1.movenext
loop
luego eliminio los registros de esos archivos correspondiente al registro en la base de datos:
sql="delete from fotos_inmuebles where id_inmueble="& id_inmueble
conn.execute SQL

NEXT

Y no funciona
  #8 (permalink)  
Antiguo 01/12/2008, 19:23
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
Respuesta: Eliminar registro completo, incluyendo imagenes

El registro no se puede eliminar o cambiar porque la tabla 'fotos_inmuebles' incluye registros relacionados.



umm hay mas tablas relacionadas?
la relacion que tienes esta bien????

tienes que eliminar desde las relaciones de abajo hacia arriba

sera que hay mas relaciones????
__________________
JuanRa Pérez
San Salvador, El Salvador
  #9 (permalink)  
Antiguo 02/12/2008, 04:23
Avatar de Cameron_2006  
Fecha de Ingreso: diciembre-2006
Mensajes: 248
Antigüedad: 18 años, 4 meses
Puntos: 0
Respuesta: Eliminar registro completo, incluyendo imagenes

bueno unas vez más, gracias a todos, ahora me toca enviar la respuesta para el que tenga el mismo problema en el futuro:

Primero respondo a JuanRAPerez, solo en esta caso existe esa relación, e hice lo que indicaste:

Y la solución fue que primero tuve que borrar los archivos fisicos de la carpeta, es decir los jpg, luego borrar los registro de la tabla de imágenes, y por último el registro padre, que es el registro al que pertenecen las imagenes. El código quedó como sigue:


<%
Dim conn
Dim SQL
Dim id_inmueble

dim fs,rs1,archivo
Set fs = Server.CreateObject("Scripting.FileSystemObject")
for each id_inmueble IN Request.Form("Borrar")

'En este caso como están relacionadas, primero se borran los archivos de la tabla hija

'y luego las de la tabla padre
'Como existen archivos fisicos, primero se eliminan los archivos de la carpeta
'y luego se elimina el registro de la tabla

sql="select filename from fotos_inmuebles where id_inmueble="& id_inmueble
set rs1=conn.execute(sql)
do while not rs1.eof
archivo="../../fotos_inmuebles/"& rs1.fields("filename")
archivo="C:\Inetpub\vhosts\dominio.com\httpdocs\fo tos_inmuebles"&(archivo)
if fs.FileExists(archivo) then fs.DeleteFile(archivo)
rs1.movenext
loop

'ahora se se elimina el registro de la imagen de la tabla hija
sql="delete from fotos_inmuebles where id_inmueble="& id_inmueble
conn.execute SQL
'ahora se se elimina el registro del inmueble de la tabla padre
SQL="delete from inmuebles where id_inmueble="& id_inmueble
conn.execute SQL

NEXT

Set fs = Nothing

conn.close
set conn=Nothing
Response.redirect "index.asp"
%>
  #10 (permalink)  
Antiguo 02/12/2008, 09:00
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
Respuesta: Eliminar registro completo, incluyendo imagenes

oki, me alegra lo solucionaras

:)
__________________
JuanRa Pérez
San Salvador, El Salvador
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 20:44.