Problema con una ventana de confirmación

Hola buenas, soy nuevo por aquí. Verás el problema que tengo es que he realizado un código en asp para borrar registros de una base de datos. La pega es que no consigo poner una ventana de confirmación entre la página desde donde se da la orden de borrar y la que lo realiza. Así que ahora mismo, si se le da al botón de borrado, elimina el registro sin más y como se le de por error se puede perder información sin querer. He probado de mil formas con funciones que utilicen MsgBox() y Confirm(), pero lo más que consigo es que aparezca la ventana. Si le doy a no borrar en dicha ventana, lo ignora y borra el registro de todos modos. Me puedes ayudar a solucionarlo. Si necesitas que ponga el código me lo dices.
Gracias. Un saludo
Respuesta
1
Una de las maneras de borrar en añadir en la etiqueta form del formulario lo siguiente:
OnSubmit=return Confirm("Esta seguro que desea borrar el registro?")
Si le da aceptar el formulario enviará a la página donde realizas el borrado si no, se quedará en la página del formulario.
La página que realiza el borrado simplemente puede tener un código parecido a este y que avise de que el registro se ha borrado:
<%Set borra = Server.CreateObject("ADODB.Recordset")
borra.ActiveConnection = con
borra.Source = "DELETE GG_CLIENTES WHERE Id=" & Request.Form("codigo borra.CursorType = 0
borra.CursorLocation = 3
borra.LockType = 3
borra.Open() %>
En la Request. Form("codigo") viene el codigo del registro a borrar.
Hola, muchas gracias por contestarme tan pronto. Lo que pasa es que no estoy utilizando ningún formulario en la página desde la que accedo al asp que hace el borrado.
La página desde donde le doy la orden de borrar simplemente es una página donde visualizo todos los registros de la tabla y aprovecho ese listado para acceder al asp de modificación y al asp de borrado. El de modificación me funciona pero el de borrado no. He avanzado algo en el asp de borrado, aunque sigue sin funcionarme. Si quieres te pongo el código y le echas un vistazo.
Ponme el código y lo miro después...
Este es el código de mi página asp que utilizo para borrar. He comprobado que el parámetro que le paso para identificar el registro que tiene que borrar (y que guardo en la variable varborra) lo coge correctamente. Puede que sea un problema de que la variable que le estoy pasando (aborrar) desde el mensaje de confirmación, no está bien definida o es local a la función y tengo que definirla de otra manera. A ver si me puedes ayudar. Gracias
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<% Response.Buffer = True %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Borrado de registros en la Tabla Introprod</title>
<script language="javascript">
function confirma()
{
var aborrar = 0
if (confirm("Se borrará el registro seleccionado. ¿Desea continuar?"))
{
aborrar = 1
}
}
</script>
</head>
<body onLoad="confirma()">
<%
Dim conexion, strSQL, basedatos, varborra
basedatos = Server.MapPath("navasa.mdb")
Set conexion = Server.CreateObject("ADODB.Connection")
varborra = Request.QueryString("idintroprod")
conexion.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & basedatos & ";"
if aborrar = 0 then
varborra = 0
end if
strSQL="Delete From introprod Where idintroprod=" & varborra
conexion.Execute(strSQL)
conexion.Close
set conexion = nothing
%>
</body>
</html>
Según leo tu código, esta página diga lo quediga el usuario (mediante el confirm) va a borrar que la variable varborra no influye para nada en la ejecución del código. Siempre pase lo que pase con la confirmación va a borrar el registro cuyo id le pasas en la Request. QueryString("idintroprod").
Mira, para no variarte mucho lo que tienes yo dividiría en dos la página:
1) El confirm lo metería en la página donde listas los registros y imagino que para cada registro tendrás un botón (o enlace) que al darle antes de llamar a la página cuyo código me has mandao saque el confirm. Por ejemplo si tienes un botón yo a este botón le añadiría este evento:
OnClick=?comprueba(<%=rs(?id?)%>);?
¿Dónde rs(? ¿Id?) Es el código para ese registro
Y incluirila función comprueba que me muestras en la página donde muestras los registros pero modficada así:
function confirma(cod)
{
if (confirm("Se borrará el registro seleccionado. ¿Desea continuar?"))
{
location.href=?borrar.asp?idintroprod=? + cod ;
}
}
¿Dónde borrar es la página que me has enviado pero ya si la función confirm, que quedaría así + o?
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<% Response.Buffer = True %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Borrado de registros en la Tabla Introprod</title>
</head>
<body>
<%
Dim conexion, strSQL, basedatos, varborra
basedatos = Server.MapPath("navasa.mdb")
Set conexion = Server.CreateObject("ADODB.Connection")
varborra = Request.QueryString("idintroprod")
conexion.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & basedatos & ";"
if aborrar = 0 then
varborra = 0
end if
strSQL="Delete From introprod Where idintroprod=" & varborra
conexion.Execute(strSQL)
conexion.Close
set conexion = nothing
%>
The record is dead. R.I.P.
</body>
</html>
Muchísimas gracias por la ayuda. No termina de funcionarme, estoy metiendo la pata en algún sitio seguro, pero no quiero ser más plasta, así que ya me lo miraré yo detenidamente. Muchas gracias. 1 saludo desde Almería.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas