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

Windows Forms Discussion :

VB NET Probleme de format de chaine d'entrée


Sujet :

Windows Forms

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 107
    Par défaut VB NET Probleme de format de chaine d'entrée
    bonjour

    j'ai une apllication VB NET avec une base de donnée et des TextBox:
    Nom
    date
    montant
    regle

    il se peu qu'un montant soit deja renseigné ou non.
    j'aimerai qu'à la perte de focus de la textbox montant, une autre textbox apelé txtBox1 prenne la valeur du montant d'avant (la valeur ou 0 si il en existe pas) plus la valeur de la text box actuelle.

    Cependant, une erreur chaine d'entrée incorect se preduit et je ne vois pas pourquoi ??

    Voila mon code
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Private Sub txt_reg_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txt_reg.LostFocus
            'Declaration d'un objet permettant la connexion à la base de données
            Dim maConnexion As OleDbConnection
            'Declaration d'un objet permettant léxécution des requêtes sur la based
            Dim maCommande2 As OleDbCommand
            'Declaration d'un objet permettant de récupérer le resultat de la requête
            Dim drNomSal As OleDbDataReader
            'Declaration d'une variable permettant de spécifier les parametres de connexion à la base
            Dim strConnect As String
            'Declaration d'une variable permettant de définir la requetes SQL
            Dim strSql2 As String
     
            Dim montant As Double
            montant = Convert.ToDouble(txt_MT.Text)
     
            Try
                'Renseignement des parametres de connexion
                strConnect = "Provider='Microsoft.Jet.OLEDB.4.0';Data Source='C:\Documents and Settings\fdefrocourt\Bureau\Caisse\bdd_agroform.mdb';User ID=Admin;Password=;"
                'Creation de l'objet maConnexion responsable de la connexion
                maConnexion = New OleDbConnection(strConnect)
                'Ecriture de la requete SQL
                strSql2 = "Select nomSal, MTEnc FROM Encaissement"
                'Creation de l'objet maCommande contenant la requete
                maCommande2 = New OleDbCommand(strSql2, maConnexion)
                'Ouverture de la base de données
                maConnexion.Open()
                'Exécution de la requete retournant une lignes
                drNomSal = maCommande2.ExecuteReader
     
                While (drNomSal.Read() = True)
                    If drNomSal("nomSal") = txt_nom.Text Then
                        TextBox1.Text = drNomSal("MTEnc")
                        TextBox1.Text = Convert.ToDouble(TextBox1.Text)
                        TextBox1.Text = TextBox1.Text + montant
                    End If
                End While
     
            Catch err As System.Data.OleDb.OleDbException
                MessageBox.Show("ERREUR requête ACCESS:" + err.Message)
            Catch err As System.InvalidOperationException
                MessageBox.Show("ERREUR:" + err.Message)
            Catch err As Exception
                MessageBox.Show("ERREUR GRAVE:" + err.Message)
            End Try
        End Sub

    En vous remerciant !

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Essaie avec Double.Parse en lui passant la culture correspondant au format de la chaine, et une enum NumberStyle le cas échéant.
    C'est expliqué en détail dans la doc de Double.Parse.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 107
    Par défaut
    ca ne marche pa non plus

  4. #4
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Citation Envoyé par floriaan60 Voir le message
    ca ne marche pa non plus
    Voila une réponse précise, bien argumentée et en plus accompagnée du code en question qui nous permet de savoir exactement l'origine du problème...
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 107
    Par défaut
    j'ai ajouté le number style ...

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Private Sub txt_MT_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txt_MT.LostFocus
            'Declaration d'un objet permettant la connexion à la base de données
            Dim maConnexion As OleDbConnection
            'Declaration d'un objet permettant léxécution des requêtes sur la based
            Dim maCommande2 As OleDbCommand
            'Declaration d'un objet permettant de récupérer le resultat de la requête
            Dim drNomSal As OleDbDataReader
            'Declaration d'une variable permettant de spécifier les parametres de connexion à la base
            Dim strConnect As String
            'Declaration d'une variable permettant de définir la requetes SQL
            Dim strSql2 As String
     
            Dim montant As Double
            montant = Double.Parse(txt_MT.Text, Globalization.NumberStyles.AllowDecimalPoint)
            TextBox1.Text = Double.Parse(TextBox1.Text, Globalization.NumberStyles.AllowDecimalPoint)
     
            Try
                'Renseignement des parametres de connexion
                strConnect = "Provider='Microsoft.Jet.OLEDB.4.0';Data Source='C:\Documents and Settings\fdefrocourt\Bureau\Caisse\bdd_agroform.mdb';User ID=Admin;Password=;"
                'Creation de l'objet maConnexion responsable de la connexion
                maConnexion = New OleDbConnection(strConnect)
                'Ecriture de la requete SQL
                strSql2 = "Select nomSal, MTEnc FROM Encaissement"
                'Creation de l'objet maCommande contenant la requete
                maCommande2 = New OleDbCommand(strSql2, maConnexion)
                'Ouverture de la base de données
                maConnexion.Open()
                'Exécution de la requete retournant une lignes
                drNomSal = maCommande2.ExecuteReader
     
                While (drNomSal.Read() = True)
                    If drNomSal("nomSal") = txt_nom.Text Then
                        TextBox1.Text = drNomSal("MTEnc")
                        TextBox1.Text = TextBox1.Text + montant
                    End If
                End While
     
            Catch err As System.Data.OleDb.OleDbException
                MessageBox.Show("ERREUR requête ACCESS:" + err.Message)
            Catch err As System.InvalidOperationException
                MessageBox.Show("ERREUR:" + err.Message)
            Catch err As Exception
                MessageBox.Show("ERREUR GRAVE:" + err.Message)
            End Try

  6. #6
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    As tu vérifié que la culture de l'application correspond à la culture de la machine ? Et que le format de saisie des nombres correspond à la culture de l'application ?
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  7. #7
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 107
    Par défaut
    mais je ne sais pas si a la perte de focus de la text box montant, le montant est deja mémorisé ?

  8. #8
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 107
    Par défaut
    dans ma base le montant est en reel double
    et je ne sais pas comparé la culture de l'application et celle de la machine ?

  9. #9
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 107
    Par défaut
    mais ce matin ca marchais. j'ai repri ce midi et ca ne voulais plus. J'ai du modifier quelque chose qu'il ne fallait pas lol

  10. #10
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 107
    Par défaut
    Lorsqu'un montant est deja renseigné, alors la textbox textBox1 prend cette valeur + la nouvelle que l'on vient de saisir.
    Dans ce cas la, ca marche, mais pas le cas ou le montant vaut 0

  11. #11
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Quand le montant veut 0, y a-t-il vraiment un 0 écrit dans la TextBox ou bien est-elle vide ?

    Si elle est vide, c'est de la que vient le problème. Sinon, j'en sais rien, j'ai lu en diagonale

    Griftou.

  12. #12
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 107
    Par défaut
    non c'est bien ca le probleme.
    s'il y a autre que 0 dans la base alors ce montant ce met bien dans la textbox, mais si le montant vaut 0 il me di erreur de format de la chaine d'entrée ...

  13. #13
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Est-ce que 0 ou est-ce que c'est null ?

    A quel moment survient l'erreur ? Au moment de faire le cumul dans la TextBox ou bien au moment de l'extraction de l'info dans la DB ?

    Si l'erreur survient lors du cumul, je repose ma question : Y a-t-il bien un "0" dans la TextBox ou bien est-elle vide ? Si elle est vide, il est logique d'avoir une erreur.

    Si l'erreur suivient lors de l'extraction : Qu'y a-t-il dans la DB ? Un vrai 0 ou simplement rien ? S'il n'y a rien, il est logique d'avoir une erreur car comment transformer quelque chose en un nombre valant 0 alors qu'il n'y a rien à transformer.

    Griftou.

  14. #14
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 107
    Par défaut
    je pense avoir trouvé.

    je fais une requete qui me donne le nom et le montant mais la base est vide.
    aprés je comapre la textbox nom avec la base donc forcement la textbox ne sera jamais égale a ce qu'il y a dans la base.

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

Discussions similaires

  1. [AJAX] Format de chaine de caractères.
    Par mims1664 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 21/06/2008, 12h03
  2. [vb.net] probleme de construction de chaine dynamiquement
    Par graphicsxp dans le forum Windows Forms
    Réponses: 4
    Dernier message: 17/01/2006, 14h52
  3. [vb.net]Formater une chaine en date
    Par Dnx dans le forum Windows Forms
    Réponses: 2
    Dernier message: 20/10/2005, 12h40
  4. [VB.Net] Probleme avec dialogues (confirm et alert)
    Par crackity_jones666 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 26/11/2003, 22h05
  5. [langage] cherche script pour formater une chaine
    Par MASSAKA dans le forum Langage
    Réponses: 7
    Dernier message: 12/11/2003, 12h18

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