2017-10-18 1 views
-1

J'ai une application winform avec un datagridview et quelques boutons. Il y a un bouton pour insérer des données dans un db sql. Le code est:Afficher ex.message sur le bouton click

try 
    dim con as new sqlconnection(MY CONNECTION STRING) 
    dim cmd as new sqlcommand("Insert into MYDB (firstname) values (@fname)",con) 
    cmd.parameters.add("@fname",sqldbtype.varchar).value=fname.text 
catch ex as exception 
    detailsbtn.visible=true 
end try 

Maintenant ce que je veux est, si pour une raison quelconque, il ne parvient pas à insérer des données dans la db, le msgbox contenant un message d'exception montrera quand je clique sur le bouton detailsbtn sous ma forme. Y a-t-il un moyen de le faire ?

i obtenu ce formulaire MSDN Code forum

Public Sub ExceptionLogTest(ByVal fileName As String) 
Try 
    ' Code that might generate an exception goes here. 
    ' For example: 
    ' Dim x As Object 
    ' MsgBox(x.ToString) 
Catch ex As Exception 
    My.Application.Log.WriteException(ex, 
     TraceEventType.Error, 
     "Exception in ExceptionLogTest " & 
     "with argument " & fileName & ".") 
End Try 
End Sub 

mais je ne vois pas comment un bouton clic récupérerait le message d'exception! Que faire ?

+0

Pensez-y. Lorsque l'utilisateur clique sur ce bouton, tout texte affiché doit être codé en dur ou récupéré quelque part. Évidemment, vous ne pouvez pas accéder à la variable 'ex' du code que vous avez posté, alors quelle est la solution évidente? Vous devez placer les données dont vous avez besoin quelque part auxquelles il peut être accédé à partir du gestionnaire d'événement 'Click' de ce second' Button'. C'est juste un élément fondamental de la programmation: si vous voulez accéder aux données plus tard, vous devez les placer dans un endroit accessible ultérieurement. – jmcilhinney

+0

alors .... suggérez-vous d'enregistrer le fichier .exe dans le fichier .txt à l'aide de filestram, puis cliquez sur un bouton pour afficher une boîte de message qui récupère les données du fichier txt. –

+0

s'il vous plaît lire le message à nouveau! édité juste maintenant –

Répondre

0

Vous pouvez utiliser cette technique:

Public Class YourClassName 

    Dim ErrorMessage As String = "" 

    Public Sub YourSubName() 
     Try 
      dim con as new sqlconnection(MY CONNECTION STRING) 
      Dim cmd As New SqlCommand("Insert into MYDB (firstname) values (@fname)", con) 
      cmd.Parameters.Add("@fname", SqlDbType.VarChar).Value = fname.text 
     Catch ex As Exception 
      ErrorMessage = ex.Message.ToString() 
      detailsbtn.visible = True 
     End Try 
    End Sub 

End Class 

Et dans votre bouton detailsbtn événement click, vous pouvez afficher la valeur de la variable ErrorMessage comme ci-dessous:

MessageBox.Show(ErrorMessage) 
+0

Je l'ai corrigé !!!!!!! DIM ERR AS Integer = "" EX CATCH AS = ERR EXCEPTION ERR + (ex.Message) CLIQUEZ BUTTON _event MSGBOX (ERR) –

+0

"DIM ERR AS Integer" devrait être « DIM ERR AS Chaîne " –

+0

OH DÉSOLÉ! C'est une chaîne! TYPING ERREUR LOL !! –

0

I !!! FIXES IT !!!!

DIM ERR AS STRING= "" 
CATCH EX AS EXCEPTION 
ERR=ERR + (EX.MESSAGE) 
BUTTON CLICK _EVENT MSGBOX(ERR) 
+0

Veuillez fournir des informations supplémentaires sur la cause de l'erreur et comment votre solution résout ce problème. – Lepidopteron

+0

j'ai posté le code ... s'il vous plaît vérifier –

0

Je pense que vous pouvez simplement préparer une chaîne vide appelée lsExceptionalError et remplissez-le dans la section Catch avec ex.Message

plus tard, en dehors de la méthode de vérification comme mettre un peu sinon String.IsNullOrEmpty (lsExceptionalError) puis msgbox (lsExceptionalError) fin si