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

Accès aux données Discussion :

[VB.Net] Erreur de conversion de type


Sujet :

Accès aux données

  1. #1
    Membre régulier
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    112
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 112
    Points : 71
    Points
    71
    Par défaut [VB.Net] Erreur de conversion de type
    Bonjour tous le monde
    je cherche un moyen pour que je puisse convertir un nombre que je telecharge depuis une requete que j'effectue sur 2 tables: voila le code
    Code VB.Net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Try         
    connect.Open()
    Dim cmd As SqlCommand = New  SqlCommand("select qte_cmd*PUnitaire from Command,Pieces where Command.Designation = Pieces.Designation and NBon='" & ComboBox6.Text & "' and Command.Designation ='" & ComboBox4.SelectedItem & "'", connect)
     Dim r As SqlDataReader = cmd.ExecuteReader
     
      While r.Read
         prix_total_ajouter = System.Convert.ToDouble(r.GetValue(0))
           Exit While
      End While
    Catch ex As Exception
       MsgBox(ex.Message, MsgBoxStyle.Exclamation)
    End Try

    explication:
    ici je prend le prix total du dernier Article commandé ajouté que j'ai ajouté à la base de donnée pour le faire soustraire du Montant Que je possede"

    Code VB.Net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Try
     connect.Close()
     connect.Open()
     
    ' prix_total_ajouter est le prix total du dernier  Article
    ' montant  est le montant total que je posséde pour commander des articles 
    ' montant_restant est le nouvel montant apres la command 
     
     montant_restant = (montant - prix_total_ajouter)
     
    Dim command As SqlCommand = New SqlCommand("update Marche set Montant_Marche =  '" & prix_total_ajouter & "'  where IdMarche= '" & march & "'", connect)
     
     command.ExecuteNonQuery()
     connect.Close()

    c'est ici le probleme lors du mise a jours du montant
    ' la mise a jour s'effectue avec succée si e prix_total_ajouter ne 'contient' pas une virgule
    'si j'ai un float par exemple le message d'erreur qui s'affiche est:
    ' erreur de conversion de type varchar en float en sachant que dans la base de donnée j'ai définie le le prix unitaire en tant que float , qté commandé en tantque int et le montant en tantque float aussi

    Code VB.Net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Catch ex As Exception
       MsgBox(ex.Message, MsgBoxStyle.Exclamation")
    End Try

    SVP comment je peux faire cette mise à jour avec ce genre de probleme ( nombre avec virgule)

  2. #2
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669

  3. #3
    Membre régulier
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    112
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 112
    Points : 71
    Points
    71
    Par défaut aideez moi svp
    Bonjour Kelpan et merci pour les codes que vous m'avez donnez,
    mais le probleme que tous les cas sa marche pas avec mon cas
    si j'utilise cdbl , vb.net ignore la virgule lorque il veut effectuer la soustraction de 150,5 de 15000000 ce dernier me fournie le resultat de l'opperation (15000000 - 150) est pour les autres il me demande que c'est impossible de convertir varchar to float
    il faut que vous sachiez que je manipule des donnés aprtir d'un base de donnée et merci beaucoup

  4. #4
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Code VB.Net : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim command As SqlCommand = New SqlCommand("update Marche set Montant_Marche = '" & prix_total_ajouter & "' where IdMarche= '" & march & "'", connect)

    Prix_total_ajouter est de type double, non ???
    Pourquoi mettre des quotes simples ?

    Utilises les paramètres de commande pour être sur d'avoir la bonne synthaxe

    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    command.Connection = connect
    command.CommandText = ( _
    "update Marche set Montant_Marche = @Montant_Marche " & _
    "where IdMarche = @IdMarche" _
    )
    command.Parameters.Add("@Montant_Marche", prix_total_ajouter)
    command.Parameters.Add("@IdMarche", march)
    command.ExecuteNonQuery()
    connect.Close()

  5. #5
    Membre régulier
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    112
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 112
    Points : 71
    Points
    71
    Par défaut Encore des probleme
    bonjour merci pour le code mais c'est paraille au mien
    j'ai une idée si ça marche je vais t'informer
    et merci encore

  6. #6
    Membre régulier
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    112
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 112
    Points : 71
    Points
    71
    Par défaut enfin
    Merci Mehdi pour le code.

    J'ai reussi enfin, l'idée etait trop simple tout d'abord lors de la mise à jour

    Code VB.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim command As SqlCommand = New SqlCommand("update Marche set Montant_Marche =  '" & prix_total_ajouter & "'  where IdMarche= '" & march & "'", connect)
    command.ExecuteNonQuery()

    j'ai des remarques: un double sous visual studion dot net 2003 s'ecrit de cette form exemple:

    Code VB.Net : Sélectionner tout - Visualiser dans une fenêtre à part
    dim d as double = 150,55 ' avec virgule

    Au niveau du sqlserver et lors de l'insertion et la mise à jour il ne reconnait pas la virgule même si je declare un double. C'est le cas avec moi, il m'affiche une erreur de conversion de type varchar en float donc j'ai osé de considerer prix_total_ajouter comme un string et le code ci dessus devien :
    dim as string prix_total_ajouter

    Code VB.Net : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim command As SqlCommand = New SqlCommand("update Marche set Montant_Marche =  '" & prix_total_ajouter.replace(",", ".") & "'  where IdMarche= '" & march & "'", connect)

    pourquoi effectuer un string a un float ?

  7. #7
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    j'ai des remarques: un double sous visual studion dot net 2003 s'ecrit de cette form exemple:
    dim d as double = 150,55 ' avec virgule
    1. Alors là, je voudrait bien voir ça !!!!! car le séparateur décimal sous .net 2003 est le point.
    Je m'avance un peu, mais à ma connaissance, il n'y a pas de moyen de le changer.

    2. Si tu avais lu le lien que je t'avais mis au début et utilisé les Parameter.Add, tu aurais gagné du temps....

    Explication :

    Séparateur décimal :
    Le séprateur décimal est le séparateur paramétré dans les paramètres régionaux de ton système. (je ne parle pas du séparateur décimal saisi sous VS2003, mais d'un séparateur décimal qui se trouve dans un String)

    Un utilisateur peut très bien décider de modifier ses paramètres régionaux et mettre un "!" comme séparateur décimal pour le nombre et les symboles monétaires, ton replace ne te servirait plus à rien !!!!

    Je ne vais pas répéter ce qui a été dit sur le premier lien que je t'indique sur la marche à suivre....

    SqlParameter :
    Il existe dans la classe command des petits objets, appelés SqlParameter.
    Les paramètres ne sont pas essentiellement réservés pour les procédures stockées (Comme l'indique ce que je te l'ai indiqué plus haut).
    De plus, cela te permettra d'avoir quelque chose de plus propre...
    Je t'invite à consulter la doc MSDN à ce sujet...

    Autre chose (cela n'implique que moi) :
    Lorsque tu viens demander de l'aide sur un forum et que des personnes prennent du temps pour te répondre, les moindres du respect est de lire ce qu'ils te répondent jusqu'au bout ...
    ... et de soigner ton orthographe...

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

Discussions similaires

  1. erreur de conversion de type de donnée
    Par sunwind dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 05/05/2008, 10h44
  2. Réponses: 2
    Dernier message: 05/06/2007, 23h07
  3. Erreur 3421, Erreur de conversion de type de données
    Par khorn dans le forum VBA Access
    Réponses: 13
    Dernier message: 01/06/2007, 10h52
  4. [C++.NET] Erreur de conversion
    Par raboin dans le forum VC++ .NET
    Réponses: 10
    Dernier message: 28/04/2006, 17h51
  5. Erreur de conversion de type Null en String
    Par navis84 dans le forum Bases de données
    Réponses: 3
    Dernier message: 26/07/2005, 15h25

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