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 :

La conversion de la chaine "" en 'Integer' n'est pas valide


Sujet :

VB.NET

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut La conversion de la chaine "" en 'Integer' n'est pas valide
    bonjour j'essaye de faire une suppression dans ma base de donnée mon projet affiche La conversion en de la chaine "" en 'Integer' n'est pas valide j'utilise VISUAL STUDIO 2012 et ma base de donnée est dans access 2013. j'ai besoin de votre aide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     OUVERTUREBASE()
                    CMD = New OleDb.OleDbCommand
                    CMD.Connection = CNX
                    CMD.CommandText = "delete * from CLIENT where NUMERO = " & Me.List_Client.SelectedItems.Item(0).SubItems(0).Text & ""
                    Dim i As Int16 = CMD.ExecuteNonQuery()
                    CNX.Close()

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Deja il est tres mauvais de faire de la concatenation avec des requetes SQL... Il faut utiliser des requetes parametrees (voir Tuto ou FAQ).

    Ensuite, quel est le type de la colonne "NUMERO" dans ta base de donnees ?
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    c'est NuméroAuto de access
    donc un numerique

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Ok, le probleme ne vient pas de la, mais je viens de voir une erreur de syntaxe dans ta requete. Elle devrait etre somme suit :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM CLIENT WHERE NUMERO = ...
    (J'ai supprime l'asterisque '*').

    Ensuite, le probleme vient probablement du fait que Me.List_Client.SelectedItems.Item(0).SubItems(0).Text te retourne une chaine vide... Ensuite ton SGBD essaie de convertir cela en INT pour matcher le type de la colonne NUMERO et ca ne marche pas. Verifie donc que la ligne de code te renvoie bien une valeur.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    j'ai vérifié sa retourne une valeur et j'ai récuperé cette valeur avec une variable integer et j'ai inséré cette variable dans la requete sa fait toujours la meme chose

  6. #6
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Bizarre. Peux-tu poster ton code avec la variable ?
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    j'ai affiché le contenu dans un msgbox sa affiche 1
    voila le code avec la requête parametre c'est ma premiere fois de l'utiliser mais sa affiche le meme message
    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
     MsgBox(Me.List_Client.SelectedItems.Item(0).SubItems(0).Text)
            Try
                Dim ittt As Integer = Me.List_Client.SelectedItems.Item(0).SubItems(0).Text
                OUVERTUREBASE()
                Dim Rquet As String
                Rquet = "DELETE FROM [CLIENT] WHERE [NUMERO] = @numero"
                CMD = New OleDb.OleDbCommand(Rquet, CNX)
                With CMD
                    .Parameters("@numero").Value = CInt(Me.List_Client.SelectedItems.Item(0).SubItems(0).Text)
                End With
                Try
                    CMD.Connection.Open()
                    CMD.ExecuteNonQuery()
                    CMD.Connection.Close()
                Catch ex As Exception
                    MsgBox(ex.Message)
                End Try
                CHARGEMENT()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try

  8. #8
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Il me semble qu'Access ne supporte par les parametres nommes. Il faut utiliser un '?' pour chaque parametre, puis les ajouter dans la commande dans le meme ordre. Exemple :
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Rquet = "DELETE FROM [CLIENT] WHERE [NUMERO] = ?"
                CMD = New OleDb.OleDbCommand(Rquet, CNX)
                With CMD
                    .Parameters.AddWithValue("numero", CInt(Me.List_Client.SelectedItems.Item(0).SubItems(0).Text))
                End With
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    pourquoi convertir le string en iteger alors que ça fonctionne direct sans conversion?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    quet = "DELETE FROM [CLIENT] WHERE [NUMERO] = ?"
                CMD = New OleDb.OleDbCommand(Rquet, CNX)
               CMD.Parameters.AddWithValue("@numero", Me.List_Client.SelectedItems.Item(0).SubItems(0).Text)
    si non tu laisse Access faire le travail!*
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CMD.CommandText = "delete * from CLIENT where NUMERO =val( " & Me.List_Client.SelectedItems.Item(0).SubItems(0).Text & ")"

  10. #10
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Citation Envoyé par DotNetMatt Voir le message
    Il me semble qu'Access ne supporte par les parametres nommes. [..]
    Il me semble qu'il les accepte ... mais qu'il s'en fout : il fait le replace selon l'ordre d'insertion des Parameters, peu importe leurs noms.
    Plus je connais de langages, plus j'aime le C.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par jopopmk Voir le message
    Il me semble qu'il les accepte ... mais qu'il s'en fout : il fait le replace selon l'ordre d'insertion des Parameters, peu importe leurs noms.
    Access utilise ?,?,?,? Pour chaque paramètres mais veut @Champ en paramètres!

  12. #12
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Re,

    soit la fonction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // Ma_Connexion est une connexion valide et ouverte vers un .accdb avec le provider Microsoft.ACE.OLEDB.12.0
    public string ExecuteStuff(string pReqName1, string pParName1, string pReqName2, string pParName2) {
    	OleDbCommand cmd = new OleDbCommand("SELECT nickname FROM employes WHERE firstname = " + pReqName1 + " AND lastname = " + pReqName2, Ma_Connexion);
    	cmd.Parameters.Add(pParName1, OleDbType.VarChar).Value = "Marc";
    	cmd.Parameters.Add(pParName2, OleDbType.VarChar).Value = "DUPONT";
    	object tmp = cmd.ExecuteScalar();
    	return tmp != null ? tmp.ToString() : "[not found]";
    }
    Alors tous les appels suivants renvoient la même valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    cnx.ExecuteStuff("@a", "@a", "@b", "@b");
    cnx.ExecuteStuff("?", "@a", "?", "@b");
    cnx.ExecuteStuff("@a", "@b", "@c", "@d");
    cnx.ExecuteStuff("?", "x", "?", "y");
    cnx.ExecuteStuff("?", "?", "?", "?");
    cnx.ExecuteStuff("?", "", "?", "");
    cnx.ExecuteStuff("?", null, "?", null);
    Plus je connais de langages, plus j'aime le C.

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/10/2014, 12h50
  2. conversion de la chaîne "" en double n'est pas valide
    Par AngeAbstraction dans le forum VB.NET
    Réponses: 3
    Dernier message: 27/09/2012, 19h35
  3. Réponses: 17
    Dernier message: 11/04/2011, 08h55
  4. La conversion de la chaîne n'est pas valide
    Par loverdev dans le forum VB.NET
    Réponses: 9
    Dernier message: 18/07/2007, 09h37
  5. Réponses: 16
    Dernier message: 06/06/2007, 15h46

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