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

Otra vez Redireccionamiento y Recarga

Estas en el tema de Otra vez Redireccionamiento y Recarga en el foro de ASP Clásico en Foros del Web. hola que tal, soy nuevo en asp y hasta el momento me he encontrado con un par de dudas, estoy manejando una pagina con frames ...
  #1 (permalink)  
Antiguo 14/06/2004, 17:29
Avatar de jostrix  
Fecha de Ingreso: mayo-2004
Mensajes: 15
Antigüedad: 20 años
Puntos: 0
Exclamación Otra vez Redireccionamiento y Recarga

hola que tal, soy nuevo en asp y hasta el momento me he encontrado con un par de dudas, estoy manejando una pagina con frames que hace uso de MySQL, en un frame tengo un listado de todos los estados de la republica y en otro un formulario para ingresar un nuevo estado. Mis preguntas son

1.- Al ingresar un nuevo estado llamo a una pagina nuevoestado.asp, como puedo hacer que esta no apezca y no afectar la pagina que afecte el formulario

2. Puedo tener el codigo que ingresa el registro en una funcion dentro de la pagina que tengo el formulario y llamarlo en el evento onClick()

3. Que instruccion me permite actualizar la pagina del listado de estados, al ingresar un nuevo estado

4. Estoy pensando poner un radio button para cada registro mostrado, obteniendo como valor la llave primaria de la BD., en teoria solo debere poder seleccionar un registro, y al final de la tabla quiero poner unos botones para borrar y editar el registro ¿es la misma instruccion del caso 3 para recargar la pagina, una funcion que haga el borrado o tengo que llamar a otra pagina asp que realize una nueva conexion a la B.D. para realizar la instruccion Delete en el registro deseado?

Agradezco de antemano a quien me pueda ayudar
GRACIAS
  #2 (permalink)  
Antiguo 15/06/2004, 02:33
Avatar de LeCLUB  
Fecha de Ingreso: abril-2003
Ubicación: Barcelona (España)
Mensajes: 205
Antigüedad: 21 años, 1 mes
Puntos: 1
Posibles Respuestas:

1.- Hombre,siempre la puedes cargar en un frame oculto

2.- No. Javascript se ejecuta en el lado del cliente/navegador y ASP en el lado del Servidor.

3.- En el frame oculto donde añades el nuevo estado, una vez se cargue la página,mediante Javascript puedes modificar el contenido del frame donde se listan los estados

4.- Tendrías que hacer lo mismo que en el paso 1, 2 y 3, pero en la página asp que se cargue en el frame oculto, en vez de añadir un nuevo estado a la BBDD, que lo borre de ella
  #3 (permalink)  
Antiguo 15/06/2004, 17:39
Avatar de jostrix  
Fecha de Ingreso: mayo-2004
Mensajes: 15
Antigüedad: 20 años
Puntos: 0
Ya encontre una de mis respuestas...

Gracias por responder a mis dudas, pero eso de una frame oculto como lo logro, encontre una solucion que es usar una instruccion que se llama Server.Transfer(), asi de la pagina donde tengo mi formulario(nuevoEstado.html) para ingresar un nuevo estado, al dar submit() el action llama a (ingresarestado.asp) y en este en la ultma linea de codigo (no dentro del body ni una antes del cierre HTML) puse Server.Transfer("nuevoEstado.html") tomando en cuenta que estan dentro del mismo directorio y host de lo contrario se recomienda Response.Redirect "url"

Hay otra instruccion que se llama Server.Execute("pagina.asp") que ejecuta todo el codigo asp de la pagina a la que se llama, y alterminar regresa a la pagina que la llama

Lo que sigo sin saber es como y si existe un metodo Reload o refresh de la pagina o insertar otra linea despues de
server.transfer ("NuevoEstado.html")
server.transfer ("ListaEstados.asp") target= "MiFrame" SE PUEDE HACER ESTO?
  #4 (permalink)  
Antiguo 15/06/2004, 21:51
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, 3 meses
Puntos: 535
Nunca. Los "target" son cosa del cliente y ese código se ejecuta en el servidor.. son ámbitos diferentes.
  #5 (permalink)  
Antiguo 16/06/2004, 00:08
Avatar de LeCLUB  
Fecha de Ingreso: abril-2003
Ubicación: Barcelona (España)
Mensajes: 205
Antigüedad: 21 años, 1 mes
Puntos: 1
Bueno, mejor hago un resumen de lo que yo creo que quieres hacer, así me aclaro un poco, porque entre que no me entero muy bien de lo que quieres, y en consecuencia mis respuestas pueden ser algo confusas, empezaremos de nuevo, te parece ;)

Si no he entendido mal, tienes una web donde hay 2 frames:

Frame1 - Formulario donde el usuario puede introducir un nuevo nombre de Estado
Frame2 - Página web donde se muestra una lista de estados de la BBDD

y lo que quieres hacer es que cuando un usuario introduzca un nuevo nombre de Estado en el formulario del Frame1 y le de al botón ENVIAR, éste Frame1 no se actualice, es decir, que en el Frame1 no se cargue ninguna página más que el formulario inicial y que automáticamente en el Frame2 se actualice la página que muestra la lista de Estados de la BBDD (evidentemente, actualizada con el nombre del nuevo Estado que se ha introducido en el formulario del Frame1)

Si es esto lo que quieres hacer, la verdad es que es muy sencillo, solo tienes que hacer que el formulario del Frame1 se envíe al Frame2 mediante TARGET, y ya está !!!

Ahora bien, la página de resultados del Frame2 será la encargada de recuperar los datos del formulario del Frame1, actualizar la BBDD, y mostrar la nuevalista actualizada en el Frame2.

Además, si también quieres poder seleccionar que estados borrar de la lista que se muestra en el Frame2, solo tienes que crear un formulario, y dentro de éste que estén los nombres de los Estados, con un botón al lado de cada uno de ellos, con la opción BORRAR, y un campo oculto con el ID (identificador único) de ese registro en la BBDD.

Este formulario que se reenvíe sobre si mismo dentro del Frame2, y que la misma página ASP mire que registrose quiere borrar, y lo elimine de la BBDD.

Así rápido es lo que yo he entendido

Un saludo
  #6 (permalink)  
Antiguo 16/06/2004, 22:20
Avatar de jostrix  
Fecha de Ingreso: mayo-2004
Mensajes: 15
Antigüedad: 20 años
Puntos: 0
Pues efectivamente LeCLUB eso es lo que deseo realizar, ahora dejame ver si yo te entendi, en mi formulario para ingresar un nuevo estado, que se encuentra en el Frame1 en su metodo action en lugar de llamar a IngresarEstado.asp, pongo ListarEstado.Asp, y dentro de esta antes de mostrar el Listado realizo las instrucciones para la Insercion y luego muestro? o es aqui donde tambien entra la instruccion Server.Execute?

Pero entonces mi bronca seria, al cargar la pagina por primera vez, cuando no se ha realizado la peticion de insercion del registro, ¿Como me salto esas instrucciones? a menos que evalue primero que el estado a ingresar sea diferente de Nulo, si no lo es que muestre el listado normal, o de lo contrario que realize la insercion y despues muestre el listado ¿Estoy en lo correcto?

Y bueno en cuanto a la eliminacion de registros, no tengo ningun problema, y una vez mas agradezco sus comentarios y su paciencia para conmigo
  #7 (permalink)  
Antiguo 17/06/2004, 00:47
Avatar de LeCLUB  
Fecha de Ingreso: abril-2003
Ubicación: Barcelona (España)
Mensajes: 205
Antigüedad: 21 años, 1 mes
Puntos: 1
Bueeeeno, veo que vamos por buen camino xDDDD

Entonces haz una cosa, en el formulario del Frame1 incluye un campo oculto que se llame por ejemplo ACCION con el valor NUEVO, es decir:

<input name="ACCION" type="hidden" id="ACCION" value="NUEVO">

Luego, en la página ListarEstado.asp del Frame2, cuando se cargue, antes de realizar ninguna acción "miras" si se está enviando un formulario (es decir, se está añadiendo un nuevo nombre a la BBDD), o no (es decir, se está cargando la página por primera vez)

Y lo puedes hacer así:

If Request.Form("ACCION") = "NUEVO" Then
* Te conectas a la BBDD y la actualizas con el nuevo nombre
End if

Luego, cargas la página normalmente, es decir, volviéndote a conectar a la BBDD para recuperar los datos de la misma y mostrándolos en pantalla.

Espero que te sirva ;) y ánimo queya casi lo tienes
  #8 (permalink)  
Antiguo 18/06/2004, 17:00
Avatar de jostrix  
Fecha de Ingreso: mayo-2004
Mensajes: 15
Antigüedad: 20 años
Puntos: 0
Gotcha

Por fin lo hicimos, al fin logre hacer lo que deseaba, gracias LeClub, aunque en lo ultimo de la forma oculta, no estabamos complicando las cosas, bueno creo?, pongo a su dispocision el codigo de mis paginillas, pa que le den una checada, y me dicen que opinan, vale?

Listado Estados.html
<HTML>
<HEAD>
<TITLE>SARG-CETRAM</TITLE>
</HEAD>
<frameset cols="*,22%" frameborder="0" framespacing="0">
<Frame src="Statelist.asp" name="Federaciones" noresize>
<Frame src="NuevoEstado.html" name="NewState" scrolling="no" noresize>
</frameset>
</HTML>

Listado StateList.asp

<%@ Language=VBScript %>
<html>
<head>
<meta http-equiv="Expires" Content="0">
<title> Listado de Estados </title>

<style type="text/css">
.celda{
font-size=12px;
font-family: Verdana,Helvetica;
color: white;
font-weight:bold;
padding-left:3px;
padding-bottom:2px;
}

.boton{
font-size=10px;
font-family: Verdana,Helvetica;
color: black;
font-weight:bold;
padding-left:3px;
padding-bottom:2px;
}
</style>
</head>
<%
'Declaracion de las Variables
Dim rstEstados 'Recordset ADO
Dim mConn 'Conexion ADO
Dim mCmd 'Comando ADO

Dim vRecordCount

'Crea los objetos ADO
Set mConn = Server.CreateObject("ADODB.Connection")
Set mCmd = Server.CreateObject("ADODB.Command")
set rstEstados = Server.CreateObject("ADODB.Recordset")

'Especifica los parametros de la conexion
mConn.CommandTimeout = 40
mConn.CursorLocation = 1 ' Del lado del Cliente
mConn.ConnectionString = "server=localhost;driver=MySQL;db=SAPAC;uid=minomb re;pwd=micontra"
mConn.Open

mCmd.ActiveConnection = mConn
mCmd.CommandType = 1 'texto
mCmd.CommandText = "Select * from Entidades_Federativas"

'Abre los registros basados en la consulta de mCmd
rstEstados.Open mCmd,,1,1

%>
<BODY bgcolor="#ffddcc" background="images/background.gif" bgproperties="fixed" alink="white" vlink="white">

<font face="Arial" color="white">
<P align="center"><STRONG> Lista de Estados registrados en SARG CETRAM </STRONG>
<p align="center">
</font>

<FORM method="post" ACTION="EliminarEstado.asp">
<table align="center" border="1" cellpadding="1" cellsapcing="1">
<tr>
<td align="center"><b> <font face="Verdana" color="white" size="2"> - </font></b></td>
<td align="center"><b> <font face="Verdana" color="white" size="2">Id_Entidad </font></b></td>
<td align="center"><b> <font face="Verdana" color="white" size="2">Entidad Federativa </font></b></td>


<%
vRecordCount = 0
Do until rstEstados.EOF
Response.Write "<tr>"
Response.Write "<td align=center> <input type=radio name=estado value=" &rstEstados.Fields("Id_Entidad") &">"
Response.Write "<td align=center class=celda>" & rstEstados.Fields("Id_Entidad") & "</td>"
Response.Write "<td align=center class=celda>" & rstEstados.Fields("Descripcion") & "</td>"
Response.Write "</tr>"

rstEstados.MoveNext
vRecordCount = vRecordCount + 1
Loop
rstEstados.Close
mConn.Close
%>
</table></p>
<font face="Arial" color="white" size="2">
<%
Response.Write "<p align=right> Total de Resgistros: " & vRecordCount
%>
</font>
<table align="center" border="1" cellpadding="1" cellsapcing="1">
<tr>
<td align="center"><input type=button class="boton" name=Delete value="Eliminar Registro" onClick=submit()></td>
</tr>
</table>
</FORM>
</body>
</html>

Listado IngresarEstado.asp

<%@ Language=VBScript %>
<HTML>
<HEAD>
</HEAD>
<%
Dim mCmd
Dim mConn
Dim strSQL

Set mCmd = Server.CreateObject("ADODB.Command")
Set mConn = Server.CreateObject("ADODB.Connection")

mConn.CommandTimeout = 40
mConn.ConnectionTimeout = 40

mConn.ConnectionString = "server=localhost;driver=MySQL;db=SAPAC;uid=minomb re;pwd=micontra"

mConn.Open
strSQL = "INSERT INTO Entidades_Federativas"
strSQL = strSQL & "(Id_Entidad,Descripcion)"
strSQL = strSQL & " VALUES (Null, "
strSQL = strSQL & "'" & Request("Estado") & "')"

mCmd.ActiveConnection = mConn
mCmd.CommandTimeout = 40
mCmd.CommandType = 1

mCmd.CommandText = strSQL
mCmd.Execute
Server.Transfer("StateList.asp")
%>
<BODY>

</BODY>
</HTML>

Listado EliminarEstado.asp

<%@ Language=VBScript %>
<HTML>
<HEAD>
</HEAD>
<%
Dim mCmd
Dim mConn
Dim strSQL

Set mCmd = Server.CreateObject("ADODB.Command")
Set mConn = Server.CreateObject("ADODB.Connection")

mConn.CommandTimeout = 40
mConn.ConnectionTimeout = 40

mConn.ConnectionString = "server=localhost;driver=MySQL;db=SAPAC;uid=minomb re;pwd=micontra"

mConn.Open
strSQL = "DELETE FROM Entidades_Federativas where Id_Entidad="
strSQL = strSQL & "'" & Request("estado") & "'"

mCmd.ActiveConnection = mConn
mCmd.CommandTimeout = 40
mCmd.CommandType = 1

mCmd.CommandText = strSQL
mCmd.Execute
Server.Transfer("StateList.asp")
%>
<BODY>
</BODY>
</HTML>

Listado IngresarEstado.html

<HTML>
<HEAD>
<TITLE>Ingresar Estado</TITLE>
<style type="text/css">
.celda{
font-size=10px;
font-family: Verdana,Helvetica;
color: black;
font-weight:bold;
padding-left:3px;
padding-bottom:2px;
}
.boton1{
font-size=10px;
font-family: Verdana,Helvetica;
color: black;
font-weight:bold;
padding-left:3px;
padding-bottom:2px;
}
</style>

</HEAD>

<BODY bgcolor="#ffddcc" background="images/background.gif" bgproperties="fixed" alink="white" vlink="white" >
<form method="post" ACTION="IngresarEstado.asp" target="Federaciones">
<table cellpadding="3" cellspacing="2" border="0" align="right" background="images/vertical.gif">
<tr>
<td align="center" class="celda">Ingrese un nuevo <br> nombre de Estado</td>
</tr>
<tr>
<td class="celda"><Input name="Estado" size=20> </td>
</tr>
<tr>
<td align="center" class="celda"><Input type=button class="boton1" value="Aceptar" OnClick=submit()> </td>
</tr
</table>
</form>
</BODY>
</HTML>


No mas que me encontre con pequeño detalle que no me gusto, cuando le di ingresar nuevo estado todo lo hizo bien pero cuando le recargar la pagina, me mostro un mensaje diciendo que la pagina no podia ser actualizada sin renviar la informacion, al darle aceptar me muestra mi listado, y me di cuenta que el ultimo estado que ingrese, lo ingreso dos veces, obviamente con diferente ID, que puedo hacer en este caso?
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:49.