asp classic - rst - los errores de asp no se muestran
set rst (7)
Creo que Server tiene un método GetLastError, que puede verificar para descubrir qué error ocurrió al ejecutar cualquier instrucción.
por ejemplo, en caso de error reanudar la siguiente ... declaración que podría causar un error .... errorObject = Server.GetLastError ()
Para el objeto ASPError, consulte http://www.w3schools.com/asp/asp_ref_error.asp
He movido una base de datos sql de un servidor a uno nuevo (separado / adjunto)
Ahora experimento un comportamiento extraño ya que no funciona pero NO se muestra ningún error.
Este es el código
<%
const database_dsn="PROVIDER=SQLNCLI10; SERVER=FR-2626/SQLLOP;DATABASE=Lop;Uid=admin-sql;Pwd=xxxx;"
response.write "Step 0//"
set conn=server.CreateObject("ADODB.Connection")
set RS=server.CreateObject("ADODB.Recordset")
conn.Open database_dsn
response.write "Step 1//"
req = "Select count(*) From tblArticleList"
response.write "Step 2//"
set RS = conn.Execute(req)
response.write "Step 3//"
%>
El programa se detiene en el paso 2; entonces nada, no se muestra ningún error ...
Simplemente no sé qué hacer ... ¿Cómo puedo obtener un error?
Gracias Jonathan
Oh, encontré parcialmente la respuesta para la pantalla de error.
En el panel Depurar de la configuración del directorio de IIS, NO se debe marcar Habilitar eliminación de ASP ... aunque creo que debería ...
¿Tiene configurado su navegador para "mostrar errores http amistosos" junto con lo que ya ha identificado es la causa común que he tenido para no ver un mensaje de error.
Shahkaplesh también tiene razón en que puedes usar Server.GetLastError () para obtener el último error que ocurrió pero no deberías hacer esto en este ejemplo.
Al ejecutar una consulta, no utiliza el comando "Establecer". No sé por qué no te muestra nada, pero tu código debería verse más como esto:
<%
const database_dsn="PROVIDER=SQLNCLI10; SERVER=FR-2626/SQLLOP;DATABASE=Lop;Uid=admin-sql;Pwd=xxxx;"
response.write("Step 0//")
set conn=server.CreateObject("ADODB.Connection")
set RS=server.CreateObject("ADODB.Recordset")
conn.Open database_dsn
response.write("Step 1//")
req = "Select count(*) From tblArticleList"
response.write("Step 2//")
RS = conn.Execute(req)
response.write("Step 3//")
%>
Sí, los paréntesis en "Response.Write" son opcionales. Pero soy OCD así y hace que la resolución de problemas sea un poco más fácil.
En realidad, no significa ser desagradable, pero sí necesita un conjunto allí, ya que está configurando un tipo de objeto y presumiblemente queriendo usar el valor de retorno en algún momento (si esto no fue solo un script de prueba que parece a mi).
También, por cierto, los paréntesis no son realmente correctos en Response.Write () ya que no devuelve un valor. Solo funcionan en subunidades de parámetro único porque puede poner paréntesis en cualquier lugar que desee alrededor de las expresiones.
p.ej:
a = (b)
Response.Write ((("test"))&(1))
Debe colocar el código de comprobación de errores para descubrir cuál podría ser el error real. Sugeriría que cambies tu código así:
<%
const database_dsn="PROVIDER=SQLNCLI10; SERVER=FR-2626/SQLLOP;DATABASE=Lop;Uid=admin- sql;Pwd=xxxx;"
''Its very important to add this line!!! ''
On Error Resume Next
''Its very important to add this line!!! ''
response.write "Step 0//"
set conn=server.CreateObject("ADODB.Connection")
set RS=server.CreateObject("ADODB.Recordset")
conn.Open database_dsn
if err.number<>0 then
response.write err.description
end if
response.write "Step 1//"
req = "Select count(*) From tblArticleList"
response.write "Step 2//"
set RS = conn.Execute(req)
if err.number<>0 then
response.write err.description
end if
response.write "Step 3//"
%>
Y no para dar un puntapié a un caballo muerto, pero estoy haciendo algo similar en contra de una base de datos Oracle y he tenido dos problemas fantasmas. Aún tengo que identificar la causa raíz, pero he aquí dos cosas que los hicieron desaparecer.
1. Nombre todas las columnas en una consulta y alias cualquiera que se calculen (suma, recuento, promedio, etc.) para que su consulta se convierta en
req = "Select count(*) NumRows From tblArticleList"
2. Envolver mi cadena de consulta en una llamada a cstr hizo que el indicador result.EOF se completara correctamente en lugar de devolverse con un valor vacío o nulo, lo que provocó un simple DO WHILE NOT result.EOF Some Action LOOP para crear un ciclo infinito hasta que solicitud web agotó el tiempo de espera. Por ejemplo,
response.write "Step 2//"
set RS = conn.Execute(cstr(req))
Nada importante solo un par de consejos si te quedas atascado y no puedes descubrir por qué. Sin embargo, sigue los consejos de depuración, esa es una buena información.