Manual de ASP

 
 
 

Mapa Web

 
borde   borde
Portada Lista de Códigos ASP Tratar errores en sentencias SQL ejecutadas en ASP

 

Tratar errores en sentencias SQL ejecutadas en ASP
Cómo hacer para que las sentencias SQL mal formadas no den errores en las páginas ASP y se puedan tratar para informar al usuario o administrador.

Vamos a ver un pequeño taller que puede servir para hacer nuestras aplicaciones ASP más completas y compactas. Se trata de evitar un error bastante frecuente en la programación de páginas, que ocurre cuando se intenta ejecutar una sentencia SQL mal formada. En esos casos, el servidor nos informa del error, aunque siempre ofrece información que no sirve de mucho al visitante, incluso despista. Sería preferible que nosotros tratásemos el error e informáramos por nuestra cuenta al usuario, de una manera agradable y clara.

Para ello vamos a realizar un tratamiento de errores en ASP, que evitará que la página se detenga ante un error y nos permita hacer cosas si ocurre.

On error Resume Next
conn.execute(ssql)
if Err<>0 then
' realizo acciones para tratar el error
end if

Con la primera línea estamos diciendo a ASP que si ocurre un error no informe de ello, sino que continúe. En la segunda línea ejecutamos una sentencia SQL.

En el siguiente bloque se evalúa la variable de sistema "Err", que almacena un posible error. Si la variable vale cualquier cosa distinto de 0, entonces es que ocurrió un error. Por tanto, en el caso positivo del if podremos realizar cualquier tipo de acción para tratar el error.

Tratar el error de una manera sencilla

Para tratar el error de una manera fácil de implementar, dentro del if podríamos llamar a una función que se encargase de hacer todas las acciones frente a un error.

Esa función podría recibir el error e introducirlo en un log de errores. Podría también informar por correo al administrador y por supuesto, mostrar un mensaje de error claro al visitante.

sub tratar_error_ssql(ssql,mierror)

'trato el posible error
'meto la sentencia erronea en un archivo de texto

'creamos el textstream del archivo
archivo= request.serverVariables("APPL_PHYSICAL_PATH") & "errores\log.txt"
set confile = createObject("scripting.filesystemobject")
set fich = confile.OpenTextFile (archivo,8)
'escribo en el archivo
fich.WriteLine(ssql)
fich.WriteLine(Err.Description)
fich.WriteLine("-----------------------------")

'cerramos el fichero
fich.close()

'voy a informar al administrador
set obj_mail = server.createObject("Persits.MailSender")
asunto_mensaje = "Error SQL en la página"
email_origen_mensaje = "[email protected]"
texto_origen_mensaje = "Empresa"
txt_mail = "Hemos detectado un error. Consulte el log de errores para encontrar descripción."
txt_mail = txt_mail & VBNEWLINE & VBNEWLINE & ssql
txt_mail = txt_mail & VBNEWLINE & VBNEWLINE & mierror

obj_mail.host = "smtp.dominio.com"
obj_mail.from = email_origen_mensaje
obj_mail.FromName = texto_origen_mensaje
obj_mail.Subject = asunto_mensaje
obj_mail.AddAddress email_alertas
obj_mail.body = txt_mail
'lo envio
obj_mail.send

'voy a informar al usuario
response.write "Lo sentimos, pero tu acción no ha podido ser realizada. Ponte en contacto con los administradores para obtener ayuda."

end sub

Esta función hace todo lo comentado para tratar el error. Primero escribe el log de errores en un fichero de texto, luego envía un correo electrónico al administrador y finaliza mostrando un error al usuario. Está comentada para entenderla mejor y todo lo que hemos realizado (como enviar el email desde ASP o abrir el fichero de texto) lo hemos visto ya en otros talleres de ASP.

Miguel Angel Alvarez
http://www.desarrolloweb.com/articulos/1838.php?manual=11

 

 
Portada
Capítulos del Manual de ASP
Crear una Página ASP
Agregar secuencias de comandos del servidor
Combinar HTML y comandos de secuencias de comandos
Utilizar directivas ASP
Espacio en Blanco en las secuencias de comandos
Introducción a las variables
Alcance de las variables
Alcance de sesión y Alcance de aplicación
Utilizar Constantes
Interactuar con secuencias de comandos del cliente
Escribir y Definir Procedimientos
Llamar a Procedimientos
Procesar los datos proporcionados por el usuario
La colección QueryString y la colección Form
Validar los datos de los formularios
Origen de Datos
Utilizar el objeto recordset para manipular resultados
Combinar formularios y el acceso a la base de datos
Transferencia entre archivos ASP
Practicar en línea
Lista de prácticas en línea
FAQ
Preguntas frecuentes
Códigos ASP
Lista de Códigos ASP
Foros
Foros ASP
Otros Manuales
Manuales de otros lenguajes
 
   
 
 
Alojamiento web en Hostalia