DetailsView - INSERT - TRIGGER, non ne vengo fuori !!

venerdì 04 luglio 2008 - 11.50

gmt Profilo | Junior Member

Salve, ho una applicazione asp.net 2.0
Sono riuscito a fare tutto con il controllo DetailsView..
Il problema è questo: durante l'INSERT (il detailsview si appoggia a SQLDataSource) nel db (SQL Server 200) c'è un trigger che fa dei controlli..
Se dai controlli risultano anomalie non voglio inserire il record .. quindi nel trigger ho messo

....
ROLLBACK TRANSACTION
...

Tutto ok.. ma non riesco a gestire l'errore che (giustamente) mi ritorna la pagina.. errore che dice ..
The transaction ended in the trigger. The batch has been aborted.

come posso intercettare questo evento ?
L'insert la fa il SQLDataSource e non io da codice.. vorrei rimanesse cosi'..

Grazie

Stroke Profilo | Junior Member

Una soluzione può essere di intercettare l'inserted del tuo sqldatasource con una funzione così


Protected Sub SqlDataSource1_Inserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs) Handles SqlDataSource1.Inserted
dim Risoltato as string = e.Exception.Message.ToString
'se il risultato è un errore oppure puoi verificare se non ci sono righe toccate
If e.AffectedRows = 0 Then
'fai qualcosa
End If

End Sub
Sostanzialmente non è la soluzione definitiva, ma la base su cui lavorare per gestire il problema.
ciao

Furio
http://www.opsi.ws

gmt Profilo | Junior Member

Si, il problema è proprio li'.. ho già questo controllo.. ma la mia domanda era:
come faccio a gestire l'errore ?.. Io vorrei visualizzare il messaggio su una label e restare nella pagina senza aver inserito nulla..
invece mi si carica una pagina di errore cosi'..

Errore server nell'applicazione '/www.notespese'.
--------------------------------------------------------------------------------

The transaction ended in the trigger. The batch has been aborted.
Descrizione: Eccezione non gestita durante l'esecuzione della richiesta Web corrente. Per ulteriori informazioni sull'errore e sul suo punto di origine nel codice, vedere l'analisi dello stack.

Dettagli eccezione: System.Data.SqlClient.SqlException: The transaction ended in the trigger. The batch has been aborted.

Errore nel codice sorgente:

Durante l'esecuzione della richiesta Web corrente è stata generata un'eccezione non gestita. Per informazioni sull'origine e la posizione

Stroke Profilo | Junior Member

1 soluzione
metti il command insert nel codice con try catch e colleghi l'ex.message alla tua label
2 soluzione
metti sempre il command insert nel codice e inserisci nella sp un parametro in output che ti renda un integer per esempio 0 se va tutto bene 1 se va in rollback
3 soluzione
metti un customvalidator personalizzato che verifica i parametri che devi salvare e se provocano l'errore il customvalidator segnala l'errore e non consente l'operazione.
Furio
http://www.opsi.ws
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5