Newsgroup: it.comp.www.asp
Titolo: Error line

Salve a tutti,
avrei l'esigenza di sapere la linea in cui si verifica un errore.
Pensavo che il comando fosse del tipo Err.Line, infatti ho trovato un
esempio:
On Error Resume Next
Err.Raise 6 'Raise an overflow error.
If Err.Number <> 0 Then Response.write("SQL: " & sql & "")
    Response.write("Error Code: " & Err.Number & "")
    Response.write("Error Description: " & Err.Description & "")
    Response.write("Error Source: " & Err.Source & "")
    Response.write("Error Line: " & Err.Line & "")
End If
Err.Clear ' Clear the error.
ma ho notato che non funziona e sull' MSDN non c'e' nessuna proprieta che mi
restituisce la linea dell'errore ......
Qualcuno saprebbe aiutarmi.
Grazie a tutti e buon lavoro

 avrei l'esigenza di sapere la linea in cui si verifica un errore.
Ciao!
Ricordo che si era già parlato di questo tempo fa.
Purtroppo ASP (classico, non so per .NET) non rende disponibile la
proprietà Line, né tantomeno altre proprietà simili.
In effetti è una grave mancanza, simile anche al fatto che puoi solo
specificare la direttiva
On Error Resume Next
senza cioé poter rimandare ad una funzione che gestisca l'errore.
Alex.
-- 
___________________________________________________________
a p bertolini
(
www.webwarrior.org
)

Puoi usare l'oggetto Error di ADO.
Prova questo. Dovrebbe fare l'output in HTML della stringa SQL che hai
passato, stoppandosi nel punto esatto in cui la query si è spezzata.
Nota 1: qui uso Con come nome della variabile oggetto di connessione al
database. Eventualmente, per usare la tua, cambia in questo script tutte le
occorrenze.
Nota 2: se hai una versione diversa dalla mia di VBScript, la costante
vbNewline potrebbe non funzionare. Se non usi server Server.HTMLEncode per
mandare in output l'HTML con l'errore, puoi sostituire questa costante con
il tag BR tra virgolette, ossia "<BR>".
<%
Sub CheckError
    If Err.Number > 0 Then
      Response.Write vbNewLine & "<COMMENT>" & vbNewLine & "Errore ASP! " &
vbNewLine
      Response.Write "     Numero: " & err.number & vbNewLine
      Response.Write "     Descrizione: " & err.description & vbNewLine
      Response.Write "     Sorgente: " & err.source & vbNewLine
      Response.Write "</COMMENT> " & vbNewLine
    End If
   If Not IsEmpty(Con) Then
     If Con.Errors.Count > 0 Then
       '
       ' Prima conta gli errori reali
       '
       Dim i, j
       j = 0
       For i = 1 to Con.Errors.Count
         if Con.Errors(i-1).number <> 0 Then
           j = j + 1
         End if
       Next
       '
       ' Ora li manda in output (se necessario)
       '
       If j > 0 Then
         j = 1
         Response.Write (vbNewLine & "<COMMENT>" & vbNewLine & "Errore ADO!
" & vbNewLine)
         For i = 1 to Con.Errors.Count
           If Con.Errors(i-1).number <> 0 Then
             Response.Write " Errore ADO " & j & vbNewLine
             Response.Write "    Numero: " & Con.Errors(i-1).number &
vbNewLine
             Response.Write "    Descrizione: " &
Con.Errors(i-1).description & vbNewLine
             Response.Write "    Sorgente: " & Con.Errors(i-1).source &
vbNewLine
             If Con.Errors(i-1).nativeerror <> "" Then
               Response.Write "    Errore nativo ADO: " &
Con.Errors(i-1).nativeerror & vbNewLine
             End If
             If Con.Errors(i-1).sqlstate <> "" Then
               Response.Write "    Stato SQL: " & Con.Errors(i-1).sqlstate &
vbNewLine
             End If
           End If
         Next
         Response.Write ("</COMMENT> " & vbNewLine)
       End If
     End If
   End If
End Sub
%>
spero ti funzioni.
ciao
Giovanni
http://www.gbservices.it

Scusa, ma comincio a perdere i colpi!
Non ti ho detto come usare lo script.
Includi la sub come file incluso nella pagina ASP che vuoi usare. Per
controllare se ci sono errori, sarà necessario chiamare la subroutine
CheckError dopo ogni operazione SQL, ossia aggiungere CheckError dopo tutte
le istruzioni Con.Execute nello script da debuggare.
Sebbene la pagina ne browser riporti che tutto è OK, controlla il codice
HTML sorgente nel browser. Vedrai il report dell'errore ADO come commento
nel codice:
 <COMMENT>
 Errore ADO!
   Errore ADO 1
  Numero: -
2147217900
  Descrizione: [Microsoft][ODBC Microsoft Access Driver] Syntax error
  (missing operator) in query expression ''Keb Mo'Greatest Hits',
  product_price=9, product_picture='kebmo.jpg', product_category='Blues',
  product_fulldescr='Grande del blues',
  product_status=1 WHERE produ'
  Sorgente: Microsoft OLE DB Provider for ODBC Drivers
  Errore Nativo ADO: -3100
  Stato SQL: 37000
 </COMMENT>
In questo esempio ho semplicemente mandato alla stringa SQL il valore di una
variabile con un apostrofo senza fare il replace, in modo da generare
l'errore. Come vedi, la stringa si ferma proprio nel punto esatto in cui
compare l'apice di troppo. Questo un po' aiuta a capire se c'è un errore
nella query.
Questo script, comunque, non funziona nel caso l'errore venga generato sul
browser. In questi casi potrebbe essere utile registrare gli errori in un
file di log e poi rileggerli tramite ASP (se non si ha accesso al server).
Ciao e scusa
Giovanni