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

ADO.NET Discussion :

OLEDB - Une opération OLE-DB en plusieurs étapes a généré des erreurs


Sujet :

ADO.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 171
    Par défaut OLEDB - Une opération OLE-DB en plusieurs étapes a généré des erreurs
    Bonjour,

    j'ai une erreur assez incompréhensible lors d'une mise à jour :

    "Une opération OLE-DB en plusieurs étapes a généré des erreurs. Vérifiez chaque valeur d'état OLE-DB disponible. Aucun travail n'a été effectué."



    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
     
                OleDbCommand commande = new OleDbCommand();
                commande.Connection = connection;
                commande.CommandType = CommandType.Text;
                commande.CommandText = "UPDATE Produits SET stock = stock - @stock WHERE nom_produit = @nom_produit";
                OleDbParameter stockParam = new OleDbParameter();
                stockParam.ParameterName = "@stock";
                stockParam.OleDbType = OleDbType.Integer;
                OleDbParameter nomParam = new OleDbParameter();
                nomParam.ParameterName = "@nom_produit";
                stockParam.OleDbType = OleDbType.Char;
     
                commande.Parameters.Add(stockParam);
                commande.Parameters.Add(nomParam);
     
                if (connection.State == ConnectionState.Closed) connection.Open();
     
                foreach (KeyValuePair<Produit, Int32> keyValue in Global.CommandeEnCours.Consommations)
                {
                    nomParam.Value = keyValue.Key;
                    stockParam.Value = keyValue.Value;
     
                    commande.ExecuteNonQuery();
                }
                connection.Close();
    L'erreur est levée à l' ExecuteNonQuery().

    Je précise que la connection est utilisée pour des actions antérieures et je n'ai aucun soucis.

    voici la connection :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private static string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\GestionBar\\Ping.mdb;Persist Security Info=True";
    Une idée?

    Merci

  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 : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Avec Access les paramètres sont juste '?' ensuite en C# il faut les ajouter dans le même ordre. Donc ta requête devient :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE Produits SET stock = stock - ? WHERE nom_produit = ?
    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
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 171
    Par défaut
    Bonjour et merci de te pencher sur mon problème.

    je n'ai jamais travaillé avec des ?, et celà a toujours fonctionné correctement.

    J'ai d'ailleurs modifié mon query et toujours le même message d'erreur.

    N'est pas du au fait que je modifie la valeur de mes paramètres après les avoir ajouté au query?

  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 : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    En regardant de plus près, je pense que le problème vient de la boucle foreach :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    foreach (KeyValuePair<Produit, Int32> keyValue in Global.CommandeEnCours.Consommations)
    {
        nomParam.Value = keyValue.Key;
        stockParam.Value = keyValue.Value;
     
        commande.ExecuteNonQuery();
    }
    Quand tu assignes la valeur du paramètre nomParam, tu passes une variable de type Produit. Or il te faut le nom du produit et non le produit tout entier... Donc si par exemple ta classe Produit a une propriété Nom, alors tu devrais faire quelque chose comme ceci :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    nomParam.Value = keyValue.Key.Nom;
    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
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 171
    Par défaut
    suis-je bête...

    c'est effectivement celà

    Merci pour ton aide.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 04/07/2017, 20h15
  2. Une opération en plusieurs étapes a généré des erreurs
    Par randriano dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 07/11/2008, 15h43
  3. [OLEDB] Une opération en plusieurs étapes a généré des erreurs
    Par randriano dans le forum Interfaces de programmation
    Réponses: 1
    Dernier message: 05/11/2008, 13h06
  4. Réponses: 4
    Dernier message: 11/09/2008, 17h12
  5. Réponses: 19
    Dernier message: 21/11/2006, 11h57

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