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

Accès aux données Discussion :

"No value given for one or more required parameters", et pourtant si !?


Sujet :

Accès aux données

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut "No value given for one or more required parameters", et pourtant si !?
    J'effectue un SELECT avec un paramètre, de façon à récupérer uniquement les valeurs de la ligne dont je donne la clé primaire. J'ai bien donné une valeur à mon paramètre avant d'exécuter la requête, pourtant elle lève une OleDbException "No value given for one or more required parameters".

    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
    System.Data.OleDb.OleDbCommand cmd1 = new System.Data.OleDb.OleDbCommand("SELECT Nom, Prenom, Age FROM Personnes WHERE PersonneID = ?", new System.Data.OleDb.OleDbConnection(cnStr1));
    cmd1.Parameters.Add(null, System.Data.OleDb.OleDbType.Integer);
    cmd1.Parameters[0].Value = 1;
    cmd1.Connection.Open();
    System.Data.OleDb.OleDbDataReader dr1 = cmd1.ExecuteReader();
    dr1.Close();
    cmd1.Connection.Close();
    
    System.Data.OleDb.OleDbCommand cmd2 = new System.Data.OleDb.OleDbCommand("SELECT Surname, Name, Class FROM Persons WHERE PersonID = ?", new System.Data.OleDb.OleDbConnection(cnStr2));
    cmd2.Parameters.Add(null, System.Data.OleDb.OleDbType.Integer);
    cmd2.Parameters[0].Value = 1;
    cmd2.Connection.Open();
    System.Data.OleDb.OleDbDataReader dr2 = cmd2.ExecuteReader(); // c'est là que ça plante
    dr2.Close();
    cmd2.Connection.Close();
    Le plus perturbant est que ça marche pour la première base, mais pas pour la seconde.
    Les deux bases sont des bases Access, de structures semblables. Les champs PersonneID et PersonID sont bien des entiers dans les deux cas.
    Si je modifie le texte de ma requête pour obtenir : "SELECT Surname, Name, Class FROM Persons WHERE PersonID = 1", ça marche, donc ce n'est pas dans la requête qu'il y a une erreur.

    Je ne comprends vraiment pas ce qui peut se passer pour qu'une exception soit levée à cet endroit... Je suis persuadée qu'il n'y a pas d'erreur de fond dans le code - l'exemple de la première base étant là pour confirmer - , et surtout je ne comprends pas la différence de traitement entre les deux requêtes. Quelqu'un aurait-il une explication possible ?

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    Après vérification, il y avait bien une erreur dans la requête (grrr), erreur sur le nom du champ Class qui s'appelle en fait ClassID.

    Ce que je ne comprends pas c'est alors pourquoi l'exécution de la requête ne levait pas d'exception quand je supprimais le paramètre... L'erreur sur le champ était pourtant toujours là !
    Et puis £¤$*%§! d'Exception au message qui induit en erreur. Surtout au vu de mes manipulations.

    Bref. Je suis toujours aussi douée pour passer 3h sur un problème futile.
    Comment on supprime une "discussion" devenue inutile ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/04/2010, 02h17
  2. Erreur : One or more output arguments not assigned
    Par adrian07 dans le forum MATLAB
    Réponses: 8
    Dernier message: 19/07/2008, 21h28
  3. Réponses: 1
    Dernier message: 25/08/2006, 07h57
  4. Réponses: 1
    Dernier message: 28/04/2006, 20h36
  5. Réponses: 16
    Dernier message: 12/01/2006, 16h14

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