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

Error personalizado si no conecta a base de datos?

Estas en el tema de Error personalizado si no conecta a base de datos? en el foro de ASP Clásico en Foros del Web. Hola, tengo una página en asp que conecta con una base de datos access directamente especificando la ruta con MapPath: cnx.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath("base.mdb")&";" Hay ...
  #1 (permalink)  
Antiguo 18/06/2008, 04:25
 
Fecha de Ingreso: mayo-2005
Mensajes: 10
Antigüedad: 20 años
Puntos: 0
Error personalizado si no conecta a base de datos?

Hola, tengo una página en asp que conecta con una base de datos access directamente especificando la ruta con MapPath:

cnx.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath("base.mdb")&";"

Hay alguna manera en asp de que, si esta base de datos no se encuentra, en lugar de que salga el error de ASP:
"Microsoft JET Database Engine error '80004005' No se pudo encontrar el archivo"

salga algún tipo de error personalizado del tipo:
No se pudo encontrar la base de datos (es decir, tipo el "or die" de php.)

Saludos!
  #2 (permalink)  
Antiguo 18/06/2008, 06:00
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años, 4 meses
Puntos: 126
Respuesta: Error personalizado si no conecta a base de datos?

Hola

Prueba con esto

En un include (errores) montas un sub tipo

Código PHP:
<%
sub AvisoError ()
%>
Aquí el texto que quieras
<%
end sub
%> 
Ahora en la página donde haces la consulta

Código PHP:
<% On Error Resume Next  %>
<!--
#include file="./errores.asp"-->

SQL="SELECT campo FROM tabla"
rs.Execute(SQL)

' ===== SE HA PRODUCIDO UN ERROR?? =====
if Err.number <> 0 Then 
Response.Clear
Call AvisoError ()
Err.Clear
end if
==================================== 
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 18/06/2008, 08:41
 
Fecha de Ingreso: mayo-2005
Mensajes: 10
Antigüedad: 20 años
Puntos: 0
Respuesta: Error personalizado si no conecta a base de datos?

Hola Adler, muchas gracias. No obstante...lo he puesto y cuando voy a probarlo (por ejemplo, renombrando la base de datos para que salga error), se queda intentando cargar la página hasta que salta el time out del iis.

Lo tengo montado de la siguiente manera:

Página errores.asp:
Código PHP:
<%
sub AvisoError ()
%>
Estamos actualizando la base de datos
<%
end sub
%> 

Página de la consulta:
Zona superior:
Código PHP:
<% On Error Resume Next  %>
<!-- 
#include file="errores.asp" --> 
Luego tengo algunas funciones, etc, y a continuación, la conexión con el código para que salte el error que me has pasado:
Código PHP:
Set cnx Server.CreateObject("ADODB.Connection")
Set rs =Server.CreateObject("ADODB.RecordSet")
cnx.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath("base/base.mdb")&";"

sql="SELECT * FROM descargas WHERE apartado=" ap " AND (marca like '" sql_marca "' OR marca=99) ORDER BY fecha "&session("tiporden_des")&", id ASC;"
rs.Open sql,cnx,adopenstatic,adcmdtext

if Err.number <> 0 Then 
Response
.Clear
Call AvisoError 
()
Err.Clear
end 
if 
Saludos!
  #4 (permalink)  
Antiguo 18/06/2008, 09:35
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
Respuesta: Error personalizado si no conecta a base de datos?

ummm prueba asi

Cita:
<%
sub AvisoError ()
%>
<p>Estamos actualizando la base de datos</p>

<%
response.end
end sub
%>
suerte
__________________
JuanRa Pérez
San Salvador, El Salvador
  #5 (permalink)  
Antiguo 18/06/2008, 10:00
 
Fecha de Ingreso: mayo-2005
Mensajes: 10
Antigüedad: 20 años
Puntos: 0
Respuesta: Error personalizado si no conecta a base de datos?

Muchas gracias a los dos! el sub de la segunda manera (con el response.end) funcionó perfecto :)


Saludos!
  #6 (permalink)  
Antiguo 18/06/2008, 10:28
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
Respuesta: Error personalizado si no conecta a base de datos?

bueno suerte ahi para poder optimizar tu web tu tendrias que definir algunas cosa mas

<%
sub AvisoError ()
'captura el error
'enviar por correo al webmaster
'o insertar en un log de errores para saber que tu web esta tronando por algo

%>

<p>Estamos actualizando la base de datos</p>
<%
response.end
end sub
%>
__________________
JuanRa Pérez
San Salvador, El Salvador
  #7 (permalink)  
Antiguo 18/06/2008, 11:39
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años, 4 meses
Puntos: 126
Respuesta: Error personalizado si no conecta a base de datos?

Cita:
Iniciado por JuanRAPerez Ver Mensaje
<%
sub AvisoError ()
'captura el error
'enviar por correo al webmaster
'o insertar en un log de errores para saber que tu web esta tronando por algo

%>
Un ejemplo de como hacerlo

Cita:
Iniciado por JuanRAPerez Ver Mensaje
<p>Estamos actualizando la base de datos</p>
<%
response.end
end sub
%>
Por cierto JuanRA nunca había visto un response.end en un sub tal y como el que nos ocupa. ¿Sería conveniente ponerlo?

Gracias
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #8 (permalink)  
Antiguo 18/06/2008, 13:09
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 2 meses
Puntos: 88
Respuesta: Error personalizado si no conecta a base de datos?

la manera que has puesto Adler tambien funcionaria, si en dado caso, agregaras la linea response.flush

algo asi
Cita:
<%
sub AvisoError ()
response.clear()
%>
Aquí el texto que quieras
<%
err.clear()
response.flush
end sub
%>
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #9 (permalink)  
Antiguo 18/06/2008, 14:48
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años, 4 meses
Puntos: 126
Respuesta: Error personalizado si no conecta a base de datos?

Hola Shiryu , yo no uso response.clear() en el sub ya que el buffer de la página en ocasiones es true y otras false.

Código PHP:
Sub AvisoError (inst)
%>
Mensaje de error
<%
 
Archivo log de errores
Dim objetivo
fsoarchivo
objetivo 
Request.ServerVariables("APPL_PHYSICAL_PATH") & "Errores\LogErrores.txt"
Set fso Server.CreateObject("Scripting.FileSystemObject")
Set archivo fso.OpenTextFile (objetivo8true)
archivo.WriteLine("Fecha -> " Now())
archivo.WriteLine("Sección -> " seccion)
archivo.WriteLine("Instrución -> " inst)
archivo.WriteLine("Error -> " Err.Description)
archivo.WriteLine("--------------------------------------------")
archivo.Close()
Set archivo Nothing
Set fso 
Nothing

End Sub
%> 
Lo llamo así

Código PHP:
if Err.number <> 0 Then
Response
.Clear ()
Call AvisoError (SQL)
Err.Clear ()
'Libero memoria y cierro todo 
Call LimpiarRS (rs)
Call LimpiarConexion (fconn)
Response.End ' 
Para la ejecución del resto del código
end 
if 
¿Veis algo que sobre o que falte? ¿Qué os parece?
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #10 (permalink)  
Antiguo 18/06/2008, 15:18
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 2 meses
Puntos: 88
Respuesta: Error personalizado si no conecta a base de datos?

lo que pasa, es que si utilizas response.end, ya no continuaria con las instrucciones siguientes

pero podrias evaluar el buffer
Cita:
<%
if response.Buffer then
response.Write "activado"
'si esta activado, pues entonces
response.flush()
else
response.Write "desactivado"
'procede como mencionas tu
response.end
end if
%>

recordemos que se puede evaluar todo, para evitar errores... no creen
ademas... ero mexicano , algo debo inventar
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #11 (permalink)  
Antiguo 18/06/2008, 20:25
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
Respuesta: Error personalizado si no conecta a base de datos?

jejejej

pues si funciona, funciona :)
__________________
JuanRa Pérez
San Salvador, El Salvador
  #12 (permalink)  
Antiguo 18/06/2008, 22:23
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 2 meses
Puntos: 88
Respuesta: Error personalizado si no conecta a base de datos?

Cita:
Iniciado por JuanRAPerez Ver Mensaje
jejejej

pues si funciona, funciona :)
ejem... ejem: lo se mi estimado amigo.... lo se

chingado invento mexicano
me salio de la manga.... y no la de los caballeros del zodiaco
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #13 (permalink)  
Antiguo 19/06/2008, 04:43
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años, 4 meses
Puntos: 126
Respuesta: Error personalizado si no conecta a base de datos?

entiendo una nueva magia del hombre zodiacal
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #14 (permalink)  
Antiguo 19/06/2008, 05:51
 
Fecha de Ingreso: mayo-2005
Mensajes: 10
Antigüedad: 20 años
Puntos: 0
Respuesta: Error personalizado si no conecta a base de datos?

Cita:
Iniciado por JuanRAPerez Ver Mensaje
bueno suerte ahi para poder optimizar tu web tu tendrias que definir algunas cosa mas
Lo tendré en cuenta! gracias! :)
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 15:03.