1. #1
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    mars 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : mars 2017
    Messages : 18
    Points : 5
    Points
    5

    Par défaut Problème ajout d'information base de données

    Bonsoir,

    J'ai une application qui a pour but de gérer un fichier client, d'avoir une partie marketing et une partie gestion des stocks.
    La partie fichier client marche très bien pour afficher mes données, les modifier ainsi que les supprimer.

    J'ai donc voulu faire de même avec la gestion des produits cependant j'ai une erreur : "type de données incompatible dans l'expression du critère" et je ne comprend par car j'ai la même méthode pour mon autre partie qui marche très bien.
    Voici mon code avec prix et epiloderm se sont des chiffres

    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
     Private Sub saveContact()
            If conn.State = ConnectionState.Closed Then
                conn.Open()
            End If
            Try
     
     
                If TbProduits.Text <> "" And TbPrix.Text <> "" And TbCireepiloderm.Text <> "" Then
                    sqll = "insert into soins([ID], [produits], [prix], [epiloderm])" &
                        "values(?,?,?,?)"
     
                    Dim cmdd As OleDbCommand = New OleDbCommand(sqll, conn)
                    cmdd.Parameters.Add(New OleDbParameter("ID", CType(TbID.Text, String)))
                    cmdd.Parameters.Add(New OleDbParameter("produits", CType(TbProduits.Text, String)))
                    cmdd.Parameters.Add(New OleDbParameter("prix", CType(TbPrix.Text, String)))
                    cmdd.Parameters.Add(New OleDbParameter("epiloderm", CType(TbCireepiloderm.Text, String)))
     
     
                    Try
                        cmdd.ExecuteNonQuery()
                        cmdd.Dispose()
                        conn.Close()
                        MessageBox.Show("Produits/Services Ajouté")
                        clearChamps()
                    Catch ex As Exception
                        MessageBox.Show(ex.Message)
                    End Try
                Else
                    MessageBox.Show("Remplir tous les champs")
                End If
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
            BtnAjouter.Enabled = True
            BtnSupprimer.Enabled = True
            BtnModifier.Enabled = True
     
        End Sub

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

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : février 2010
    Messages : 3 257
    Points : 8 661
    Points
    8 661
    Billets dans le blog
    3

    Par défaut

    Peux-tu poster ton DDL CREATE pour voir les types cote base de donnees ?
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige

  3. #3
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    février 2010
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : février 2010
    Messages : 2 965
    Points : 4 893
    Points
    4 893
    Billets dans le blog
    1

    Par défaut

    ID et PRIX, j'ai comme un sérieux doute quand au type... L'un ne serait-il pas INT et l'autre DECIMAL ?

    A mon avis, ça vient de là, tu balances des STRING dans des paramètres qui ne sont pas des (VAR)CHAR.
    On ne jouit bien que de ce qu’on partage.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    mars 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : mars 2017
    Messages : 18
    Points : 5
    Points
    5

    Par défaut

    Salut,

    Merci a vous d'avoir été rapide.

    DotNetMatt : où est ce que je le trouve ?

    StringBuilder : Ce qui veux dire qu'ici il faudrais que je change mes String en Double ?

  5. #5
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    février 2010
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : février 2010
    Messages : 2 965
    Points : 4 893
    Points
    4 893
    Billets dans le blog
    1

    Par défaut

    Dans une requête paramétrée, il faut passer les paramètres dans le bon type : pas de string pour un type numérique par exemple.

    Donc l'ID qui est logiquement un integer en base, il faut le transformer en int avant de l'envoyer, et le prix, qui devrait être un decimal en base, il faut le transformer en decimal avant.

    Et pas de double pour un prix, ou tu t'exposes à de gros soucis d'arrondis.
    On ne jouit bien que de ce qu’on partage.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    mars 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : mars 2017
    Messages : 18
    Points : 5
    Points
    5

    Par défaut

    Ok donc se qui veux dire qu'il faudrait que je le change ici ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim cmdd As OleDbCommand = New OleDbCommand(sqll, conn)
                    cmdd.Parameters.Add(New OleDbParameter("ID", CType(TbID.Text, String)))
                    cmdd.Parameters.Add(New OleDbParameter("produits", CType(TbProduits.Text, String)))
                    cmdd.Parameters.Add(New OleDbParameter("prix", CType(TbPrix.Text, String)))
                    cmdd.Parameters.Add(New OleDbParameter("epiloderm", CType(TbCireepiloderm.Text, String)))

  7. #7
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    février 2010
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : février 2010
    Messages : 2 965
    Points : 4 893
    Points
    4 893
    Billets dans le blog
    1

    Par défaut

    Citation Envoyé par Corentin_G Voir le message
    Ok donc se qui veux dire qu'il faudrait que je le change ici ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim cmdd As OleDbCommand = New OleDbCommand(sqll, conn)
                    cmdd.Parameters.Add(New OleDbParameter("ID", CType(TbID.Text, String)))
                    cmdd.Parameters.Add(New OleDbParameter("produits", CType(TbProduits.Text, String)))
                    cmdd.Parameters.Add(New OleDbParameter("prix", CType(TbPrix.Text, String)))
                    cmdd.Parameters.Add(New OleDbParameter("epiloderm", CType(TbCireepiloderm.Text, String)))
    Oui, le "CType" doit être changé pour transformer ID en int, prix en decimal ou autre selon ce qu'il y a en base.
    On ne jouit bien que de ce qu’on partage.

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/12/2016, 14h40
  2. Problème d'ajout dans la base de données
    Par momy2014 dans le forum AWT/SWING
    Réponses: 7
    Dernier message: 19/01/2015, 10h59
  3. Problème d'ajout dans la base de donnée
    Par minouchaimen dans le forum Doctrine2
    Réponses: 2
    Dernier message: 11/03/2013, 18h27
  4. Réponses: 1
    Dernier message: 27/06/2006, 13h47
  5. pb d'ajout dans une base de donnée
    Par loic.440 dans le forum ASP
    Réponses: 15
    Dernier message: 17/01/2005, 10h06

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