Ver Mensaje Individual
  #37 (permalink)  
Antiguo 20/04/2007, 15:11
Avatar de jpzapatas
jpzapatas
 
Fecha de Ingreso: octubre-2006
Ubicación: Chile
Mensajes: 87
Antigüedad: 18 años, 6 meses
Puntos: 0
Re: Como hacer buen uso de los rs

Cita:
Iniciado por Myakire Ver Mensaje
A ver ..... te pido que leas cuidadosamente lo que te voy a escribir y trates de comprenderlo para que así puedas debatirme si estoy en lo correcto o me des argumentos para que digas lo contrario.

He modificado tu código del post 25 y queda así con exactamente la misma funcionalidad:
Código:
<%
VarIDCASA= trim(request.QueryString("num"))

ConsultaVivienda="select * from vivienda where id_vivien= " & VarIDCASA
set rs=conn.execute(ConsultaVivienda)

if not rs.eof then
   if rs("Rut_perso")="11.111.111-1" then
 
      IF cInt(rs2("id_vivien"))=CInt(VarIDCASA) then
         'NO SE PUEDE BORRAR
         Response.Redirect("Vivienda.asp?SW=1&Error=8")
      ELSE
			   'BORRO LA VIVIENDA
            sentencia="delete from vivienda where id_vivien= " & VarIDCASA
            conn.execute(sentencia)
						
            sentencia="delete from cuentavivienda"
            conn.execute(sentencia)
						
            Sentencia="Select Count(id_vivien) as CantidadDeCasas from vivienda"
            Set rs6=conn.execute(Sentencia)
						
            sentencia="Select id_vivien from vivienda"
            set rs=conn.execute(sentencia)
						
            while not rs.eof
               Sentencia="insert into CuentaVivienda (ID_VIVIEN, Cantidad_CuentaVivienda)values('"&rs("ID_VIVIEN")& "', '"&rs6("CantidadDeCasas")&"')"
               conn.execute(Sentencia)
               rs.movenext
            wend
         end if
         Response.Redirect("Vivienda.asp?SW=1&Error=6")
   else
      ' NO PUEDE ELIMINAR LA VIVIENDA
      Response.Redirect("Vivienda.asp?SW=1&Error=7")
   end if
end if
%>
Lo modifiqué no para optimizarlo, por que igual a eso, hay que mejorarlo, por ejemplo no tiene caso que hagas un ciclo para hacer INSERT's de UNO en UNO de todos los registros de "vivienda" cuando con UN SOLO insert puedes agregarlos todos; creas objetos de forma implícita, etc, pero bueno, esa es otra historia.

Lo acomodé así para yo ver más facilmente que tienes mal. Veo para empezar que tienes código duplicado (lo eliminé), yo colocaría un Response.Write Sentencia debajo de cada Conn.Execute y comentaría los execute para ver la secuencia que el programa hizo, con ello verificaría que todo se ejecutó correctamente. Ahora, por último, me llama la atención esto me mencionaste:


Efectivamente en el listado original utilizo la tabla de viviendas, tipovivienda y la tabla de personas. Pero solo borras de Viviendas, se me hace que por ahí tienes otro error de lógica del que no vamos a poder nadie mas que tu, solucionar.
Estoy completamente de acuerdo contigo, a exepción que faltó una consulta, que la agrague ahora, me refiero a

Cita:
ConsultaGastosComunes="select * from gastocomun where id_vivien='"&request.QueryString("num")&"'"
set rs2=conn.execute(ConsultaGastosComunes)
de este modo, finalmente quedaría así...

Cita:
<%
VarIDCASA= trim(request.QueryString("num"))

ConsultaVivienda="select * from vivienda where id_vivien= " & VarIDCASA
set rs=conn.execute(ConsultaVivienda)

ConsultaGastosComunes="select * from gastocomun where id_vivien='"&request.QueryString("num")&"'"
set rs2=conn.execute(ConsultaGastosComunes)

if not rs.eof then
if rs("Rut_perso")="11.111.111-1" then

IF cInt(rs2("id_vivien"))=CInt(VarIDCASA) then
'NO SE PUEDE BORRAR
Response.Redirect("Vivienda.asp?SW=1&Error=8")
ELSE
'BORRO LA VIVIENDA
sentencia="delete from vivienda where id_vivien= " & VarIDCASA
conn.execute(sentencia)

sentencia="delete from cuentavivienda"
conn.execute(sentencia)

Sentencia="Select Count(id_vivien) as CantidadDeCasas from vivienda"
Set rs6=conn.execute(Sentencia)

sentencia="Select id_vivien from vivienda"
set rs=conn.execute(sentencia)

while not rs.eof
Sentencia="insert into CuentaVivienda (ID_VIVIEN, Cantidad_CuentaVivienda)values('"&rs("ID_VIVIEN")& "', '"&rs6("CantidadDeCasas")&"')"
conn.execute(Sentencia)
rs.movenext
wend
end if
Response.Redirect("Vivienda.asp?SW=1&Error=6")
else
' NO PUEDE ELIMINAR LA VIVIENDA
Response.Redirect("Vivienda.asp?SW=1&Error=7")
end if
end if
%>
Ahora, me preguntas por que utilizo 3 tablas en el listado principal, pues es para poder visualizar un completo listado de lo que se eliminará y no códigos, no sé si me explico. Por ejemplo en la tabla vivienda, no tengo almacenado el nombre del dueño, si no que solamente su rut, pero en el listado muestro también el nombre, y para poder mostrarlo, debo buscarlo en la tabla personas con el rut que se encuentra en la tabla vivienda... no sé si se entiende...

Pero sabes que creo que nos estamos desviando un poquitito, por que esta página, admito que era mejorable, pero cumple su función, yo creo que el proble debe estar en la página donde muestro el listado una vez que el registro ya fue eliminado, en pocas palabras creo que lo que me falta es obligar a esa pantalla a que actualize sus datos, y eso es lo que no tengo la más mínima idea de como hacer...

Saludos Cordiales y Gracias de nuevo

JPZapataS