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 :

Problème avec requête UPDATE: mystère


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2007
    Messages : 20
    Points : 16
    Points
    16
    Par défaut Problème avec requête UPDATE: mystère
    Bonjour à tous.
    Est-ce quelqu'un peut me dire pourquoi la ligne en gras ne fait pas la mise à jour demandée tandis que celle en italique fonctionne parfaitement (évidemment je teste l'une ou l'autre en désactivant le commentaire)
    Parce que moi je comprends vraiment pas !
    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
            Dim wCommand As New OleDb.OleDbCommand
    
            LibelleArticle = Me.tbx_LibelleDef.Text
    
            With wCommand
                .Connection = G_cnClient
                '.CommandText = "UPDATE Articles SET Articles.LibelleDef=@LibArt WHERE (((Articles.AbrDef)=@CodeArticle))"
                '.CommandText = "UPDATE Articles SET Articles.LibelleDef='" & LibelleArticle & "' WHERE (((Articles.AbrDef)=@CodeArticle))"
                .CommandType = CommandType.Text
                .Parameters.Add(New OleDbParameter("@CodeArticle", OleDbType.VarChar, 50)).Value = CodeArticle
                .Parameters.Add(New OleDbParameter("@LibArt", OleDbType.VarChar, 255)).Value = LibelleArticle
    
                .ExecuteNonQuery()
    
                wCommand = Nothing
    
            End With

  2. #2
    Membre actif Avatar de schwarzy2
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 464
    Points : 288
    Points
    288
    Par défaut
    ben =@LibArt c'est pas libelleArticle...?
    Feel good, feel geek

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2007
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par schwarzy2 Voir le message
    ben =@LibArt c'est pas libelleArticle...?
    Ben non car j'ai bien
    .Parameters.Add(New OleDbParameter("@LibArt", OleDbType.VarChar, 255)).Value = LibelleArticle
    ou LibelleArticle est chargé avec la nouvelle valeur....

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2007
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par schwarzy2 Voir le message
    ben =@LibArt c'est pas libelleArticle...?
    Par acquis de conscience (si, si) j'ai testé avec
    .CommandText = "UPDATE Articles SET Articles.LibelleDef=@LibelleArticle WHERE (((Articles.AbrDef)=@CodeArticle))"
    .Parameters.Add(New OleDbParameter("@LibelleArticle", OleDbType.VarChar, 255)).Value = LibelleArticle

    Eh bien elle continue à se foutre de moi !

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Méfie-toi des noms de paramètres : certains SGBD ne les prennent pas en compte. Il faut alors ajouter les paramètres dans le même ordre où ils apparaissent dans la requête. Essaie d'inverser les 2 .Parameters.Add, je pense que ça va résoudre le problème.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2007
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Méfie-toi des noms de paramètres : certains SGBD ne les prennent pas en compte. Il faut alors ajouter les paramètres dans le même ordre où ils apparaissent dans la requête. Essaie d'inverser les 2 .Parameters.Add, je pense que ça va résoudre le problème.
    Bien vu. C'était çà. Cà me paraît quand même étrange (pour par dire c..) que la syntaxe accepte des paramètres nommés et ne tienne compte que de l'ordre de présentation lors de l'exécution. Le bouquin que j'ai parle de ce problème mais j'avais mal interprété ce qui était dit.
    Merci beaucoup !

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    oui, ça parait un peu mal foutu mais ca s'explique assez bien :
    - beaucoup de SGBD supportent la fonctionnalité, donc la propriété ParameterName est commune à toutes les classes *Parameter (déclarée dans la classe de base DbParameter)
    - même si le nom n'est pas utilisé par le SGBD, c'est plus pratique pour le développeur d'avoir un nom, ne serait-ce que pour accéder à un paramètre par son nom (command.Parameters("mon_parametre").Value = ...)

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

Discussions similaires

  1. Problème avec un update dans une requête
    Par cracozore dans le forum Langage SQL
    Réponses: 8
    Dernier message: 15/08/2008, 13h45
  2. Réponses: 5
    Dernier message: 10/07/2006, 12h05
  3. Problème avec un update et un champs
    Par kornmuse90 dans le forum Requêtes
    Réponses: 3
    Dernier message: 27/03/2006, 15h55
  4. Problème avec requête ajout
    Par mitnick32 dans le forum Access
    Réponses: 1
    Dernier message: 02/02/2006, 18h02
  5. [VB6] Problème avec requête Update
    Par bb62 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 02/02/2006, 03h40

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