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

VB.NET Discussion :

Conversion from string "True" to type 'Integer' is not valid.


Sujet :

VB.NET

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2016
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2016
    Messages : 35
    Par défaut Conversion from string "True" to type 'Integer' is not valid.
    Voici le message d'erreur :
    An unhandled exception of type 'System.InvalidCastException' occurred in Microsoft.VisualBasic.dll

    Additional information: Conversion from string "True" to type 'Integer' is not valid.

    Et voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim Datetmp, sSql As String
            Dim DLUrecup As Date
             sSql = "SELECT BECJPEREMP " &
            " FROM BESOIN " &
            " WHERE BEKTSOC='" & Num_Soc & "' AND BEKTNUMERO='" & _Cmde & "' AND BEKTLIGNE='" & _Cmde_lig & "' " &
            " AND BECTCODEPF ='" & _C_ref & "' AND BECTCOMPPF='" & _CC_ref & "' AND BECTLGNOME = '00900'"
            Datetmp = ExecuteSQLStmt(sSql)
            DLUrecup = New Date(Datetmp.Substring(0, 4), Datetmp.Substring(4, 2), Datetmp.Substring(6, 2))
            Recupere_DLU = DLURecup
    L'erreur se produit lorsque je donne la valeur à sSQL alors qu'il n'y a aucun integer et aucun boolean.
    Les 5 variables sont des string.

    Quelqu'un peut m'aider c'est vraiment urgent.

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Par défaut
    L'erreur se produit lorsque je donne la valeur à sSQL alors qu'il n'y a aucun integer et aucun boolean.
    Les 5 variables sont des string.
    Le message d'erreur n'indique pas de Boolean mais bien d'un String "True". Tu essayes donc de faire rentrer un String dans un Integer. Le fait est qu'on ne peut pas deviner où avec le peu d'informations que tu nous donnes.

    Es-tu sûr que l'exception est générée lors de l'affectation de sSql, ou plutôt lors de la requete?

  3. #3
    Membre émérite

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Par défaut
    Bonjour

    Il serait préfèrable d'écrire une requete parametrée

    http://webman.developpez.com/article...eter/vbnet/#L1

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1) Pensez à utilisez CODE afin de rendre plus lisible votre code
    2) Dans ce genre de problème, mettez un point d'arrêt et vous verrez d'où pourrait venir le soucis

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    ta question m'en apporte dautre!

    quelle type de base de données Access ou autre?

    quel est le type de champs dans ta Table?

    quel est le champ incriminé dans ta requête que je puisse comprendre si tu as mis =true ou = 'true'?

    la concaténation d'un string contenant du numérique ne pose pas de problème dans une requête! "... num =" & "123"
    en revanche un numérique si ! "... num =" & 123.tostring

    un booléen dans Access ne pose pas de problème "bool=" & "True" dans SqlServeur si "...bool= " & "True".replace("True","1").replace("False","0")

    mais comme dit plus haut, une requête paramétrée t'aurais affranchie de ça!

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2016
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2016
    Messages : 35
    Par défaut
    L'erreur se produit directement avec la création de la string sSql sans même utiliser la requête.
    Et j'ai vérifié chaque variable est un string.

    Citation Envoyé par rdurupt Voir le message
    Bonjour,
    ta question m'en apporte dautre!

    quelle type de base de données Access ou autre?

    quel est le type de champs dans ta Table?

    quel est le champ incriminé dans ta requête que je puisse comprendre si tu as mis =true ou = 'true'?

    la concaténation d'un string contenant du numérique ne pose pas de problème dans une requête! "... num =" & "123"
    en revanche un numérique si ! "... num =" & 123.tostring

    un booléen dans Access ne pose pas de problème "bool=" & "True" dans SqlServeur si "...bool= " & "True".replace("True","1").replace("False","0")

    mais comme dit plus haut, une requête paramétrée t'aurais affranchie de ça!

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Il y a 2 chose la provenance et la destination!

    Si dans ta table le champ est un string alors champ ='valeur'

    Si ta valeur est un string alors Sql="select.. where champ ='" & valeur & "'"

    Si ta valeur est un booléen et que tu stock le résultat dans un champ string de ton Sql.
    sal ="champ ='" & booléen.toString.replace("False","0").replace("True","0") & "'"

    Ta requête Sql est un string toutes les valeurs a concaténer qui ne sont pas du texte toString
    Toutes les valeurs qui sont du texte dans requête champ='" & valeur.tostring & "''

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/05/2010, 08h58
  2. Réponses: 2
    Dernier message: 08/12/2009, 12h57

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