| ||||
Re: Como hacer buen uso de los rs Cita: Esto es de la página del listado original, en donde presiono la X para que elimine el registro, esto lo obtuve como me dijiste, viendo el código fuente. Ahora, quise ver el código fuente de la página que me dijiste, pero resulta que esa página abre inmediatamente un cuadro de dialogo preguntando si estoy seguro de eliminar el registro y no me deja ver el código fuente, es por lo mismo que te mando este ya que debiera ser los mismos datos que se envian... Cita: <tr> <td><span class="Estilo2"> 12 </span></td> <td> <span class="Estilo2"> EVELYN RAQUEL LLANTEN </span></td> <td><div align="center"><a href="EliminaVivienda.asp?ID=12"><img src="../Imagenes/Eliminar.jpg" width="32" height="32" border="0" /></a></div></td> </tr> Efectivamente en el listado original utilizo la tabla de viviendas, y la tabla de personas Saludos |
| ||||
Re: Como hacer buen uso de los rs 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:
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. <% 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 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. |
| ||||
Re: Como hacer buen uso de los rs Cita: Estoy completamente de acuerdo contigo, a exepción que faltó una consulta, que la agrague ahora, me refiero a
Iniciado por Myakire ![]() 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:
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. <% 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 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. Cita: de este modo, finalmente quedaría así...ConsultaGastosComunes="select * from gastocomun where id_vivien='"&request.QueryString("num")&"'" set rs2=conn.execute(ConsultaGastosComunes) Cita: 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...<% 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 %> 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 |
| ||||
Re: Como hacer buen uso de los rs Cita: De hecho no nos estamos desviando, que salió el hecho de que es mejorable el código, pues si, pero fue debido a que precisamente se esta analizando para ver por que no actualiza. Yo sigo en la idea de que algunos de los "candados" (o condiciones) que tienes esta haciendo que no se ejecute el código del delete. Para entender esas condiciones fue que modifiqué un poco el código y por eso la recomendación de colocar los desplegados y comentar los redirect.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... Ahora, lo de las tres tablas también tiene "vela en el entierro" ya que si haces una consulta relacional (INNER JOIN) quizá colocaste un ID que no es, me gustaría verla si fuera posible, para detectar si por alguna razón estamos enviando el código de vivienda que no es. |
| ||||
Re: Como hacer buen uso de los rs Cita: Lo que pasa es que el código SI borra el registro cuando debe borrarlo, o sea el delete si se ejecuta.
Iniciado por Myakire ![]() Yo sigo en la idea de que algunos de los "candados" (o condiciones) que tienes esta haciendo que no se ejecute el código del delete. Para entender esas condiciones fue que modifiqué un poco el código y por eso la recomendación de colocar los desplegados y comentar los redirect. Ahora, lo de las tres tablas también tiene "vela en el entierro" ya que si haces una consulta relacional (INNER JOIN) quizá colocaste un ID que no es, me gustaría verla si fuera posible, para detectar si por alguna razón estamos enviando el código de vivienda que no es. Tengo una idea, que te parece si te envío los 3 archivos y las tablas para que lo revises...? Saludos |
| ||||
Re: Como hacer buen uso de los rs Si puedes mandármelos pero modificados a una BD's access (y la incluyes, pf), para que pueda correrlos yo y constatar de ese extrañísimo comportamiento ![]() Saludos |