IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Gestion des erreurs standards (utilisation des formview et sqldatasource)


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations forums :
    Inscription : Mars 2006
    Messages : 148
    Points : 80
    Points
    80
    Par défaut Gestion des erreurs standards (utilisation des formview et sqldatasource)
    Bonjour à tous.
    Mon problème est le suivant : j’aimerais savoir comment gérer les erreurs survenues pendant les opérations de mise à jour de la BD lorsqu’on utilise des contrôle standard tel que le formview et le SQLdatasource. Comme cas précis si l’utilisateur fait une saisie qui viole la contrainte de clé primaire sur une table, j’aimerais récupérer cette erreur et l’afficher à l’utilisateur sans afficher la page d’erreur de .net.

    Je rappel que pour le cas d’espèce j’utilise un formview donc j’ignore ou je peux mettre une instruction TRY.

    Merci de me consacrer un peu de votre précieux temps.

  2. #2
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Ben en fait, je fais pas comme ça.
    Je fais en sorte que ce genre d'erreur n'arrive pas.

    Donc, je mets des Validator pour contrôler le contenu des champs de saisies, je gère les caractères spéciaux (gerne les ') et je vérouille au maximum.

    Ensuite les histoires de clé primaires pures et dures, ben je design ma base pour que l'utilisateur n'ait jamais besoins de la définir, je laisse ce soin à SQL Server.

    Mais je suis sûr que tu as un cas particulier où c'est obligatoirement l'utilisateur qui va le faire.
    La gestion des pages d'erreur c'est un poil la merdasse. Le début se trouve dans le Web.Config, là ou tu gère le CustomErrors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <system.web>
    	<customErrors mode="Off"/>
    Si tu le passe à "Remote Only" tu va gérer toi même toutes les erreurs du site. Mais désolé, j'en sais pas plus, j'ai jamais fait.

    Sinon, tu peux aussi voir du côté de System.ApplicationException, y a certainement des trucs interressants.

    Désolé de pas pouvoir en faire plus.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations forums :
    Inscription : Mars 2006
    Messages : 148
    Points : 80
    Points
    80
    Par défaut
    Je reviens encore sur mon problème. Pour la gestion des erreurs générées pendant l'insertion d'un nouvel enregistrment j'ai ajouter le code suivant mais l'erreur n'est toujours pas interceptée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Protected Sub FormView1_ItemInserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.FormViewInsertedEventArgs) Handles FormView1.ItemInserted
            If Not (e.Exception Is Nothing) Then
                lbl_error.Visible = True
                lbl_error.Text = "Message d'erreur: " + e.Exception.Message
            End If
     
    End Sub
    J'ai egalement essayé le bout de code suivant toujours sans succes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Protected Sub FormView1_ItemInserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.FormViewInsertedEventArgs) Handles FormView1.ItemInserted
     
            If e.ExceptionHandled Then
                lbl_error.Text = "Erreur lors de l'insertion: " + e.Exception.GetBaseException.Message
                lbl_error.Visible = True
            End If
     
    End Sub
    J'ai un label sur ma page nommé lbl_error j'aimerais qu'au lieu d'obtenir la page d'erreur que le message d'erreur s'affiche dans le label. Je ne comprends pas pourquoi le code quivant ne s'execute pas comme il devrait.

    Merci de vous pencher sur mon PB.

  4. #4
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    Ca ne va pas beaucoup t'aider mais il est normal que tu ne catches pas d'erreur sur l'événement ItemInserted puisque celui-ci suppose que l'insertion se soit bien passée.
    Tu n'arriveras donc pas dedans si tu as une erreur.

    Sois tu gères les erreurs sur le ApplicationError du Global.asax ou sur l'événement Error de ta page en mettant tes erreurs en session, mais c'est ULTRA MOCHE

    Sois tu gères toi-même tes insertions en ne passant pas par un SQLDataSource. Solution à privilégier.

  5. #5
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    A moi de m'auto flagéllé, mon cher Calagan99, j'ai loupé le truc aussi : il y un évènement ItemIsertING qui lui se fait pendant, l'insertion dans la BDD et donc qui lui peut capter l'erreur SQL, enfin, je crois bien.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations forums :
    Inscription : Mars 2006
    Messages : 148
    Points : 80
    Points
    80
    Par défaut
    A moi de m'auto flagéllé, mon cher Calagan99, j'ai loupé le truc aussi : il y un évènement ItemIsertING qui lui se fait pendant, l'insertion dans la BDD et donc qui lui peut capter l'erreur SQL, enfin, je crois bien.
    OK j'essaye de recuper l'erreur dans l'evenement ItemInserting et je vois comment ça fonctionne.

    Sois tu gères les erreurs sur le ApplicationError du Global.asax ou sur l'événement Error de ta page en mettant tes erreurs en session, mais c'est ULTRA MOCHE
    Je ne sais pas comment gerrer les erreurs de cette façon je vais faire des recherches la dessus.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations forums :
    Inscription : Mars 2006
    Messages : 148
    Points : 80
    Points
    80
    Par défaut
    Je ne peux pas placer le code ci apres dans la procedure ItemInserting, le message d'erreur est le suivant:

    "ExceptionHandled n'est pas un menbre de System.Web.UI.WebControls.FormViewInsertEventArgs"

    Donc impossible de savoir si une exception a été générée et de l'intercepter.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     If e.ExceptionHandled Then
                lbl_error.Text = "Erreur lors de l'insertion: " + e.Exception.GetBaseException.Message
                lbl_error.Visible = True
            End If

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations forums :
    Inscription : Mars 2006
    Messages : 148
    Points : 80
    Points
    80
    Par défaut
    J'ai trouver la solution à mon Problème.

    http://msdn.microsoft.com/fr-fr/libr...ed(VS.80).aspx

    dans mon cas sa donne à peu pres ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    If e.Exception Is Nothing Then
     
              If e.AffectedRows = 1 Then
     
                    lbl_error.Text = "Record inserted successfully."
                    lbl_error.Visible = True
                Else
     
                    lbl_error.Text = "An error occurred during the insert operation."
                    lbl_error.Visible = True
                    ' Use the KeepInInsertMode property to remain in insert mode
                    ' when an error occurs during the insert operation.
                    e.KeepInInsertMode = True
     
                End If
     
            Else
     
                ' Insert the code to handle the exception.
                lbl_error.Text = e.Exception.Message
                lbl_error.Visible = True
     
                ' Use the ExceptionHandled property to indicate that the 
                ' exception has already been handled.
                e.ExceptionHandled = True
                e.KeepInInsertMode = True
     
            End If
    Ce bout de code je le place dans l'evenement ItemInserted de mon FormView.

    Merci à tous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 11/05/2014, 15h19
  2. Réponses: 6
    Dernier message: 05/05/2010, 15h21
  3. Script avec gestion d'erreur pour loader des data depuis un csv
    Par olive_le_malin dans le forum Requêtes
    Réponses: 9
    Dernier message: 10/04/2009, 18h04
  4. Erreurs à l'utilisation des sessions
    Par kev484 dans le forum Langage
    Réponses: 8
    Dernier message: 02/01/2009, 17h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo