1. #1
    Nouveau membre du Club
    Profil pro
    Développeur D'Applications
    Inscrit en
    décembre 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Togo

    Informations professionnelles :
    Activité : Développeur D'Applications

    Informations forums :
    Inscription : décembre 2004
    Messages : 17
    Points : 29
    Points
    29

    Par défaut Probleme : message 'Aucune valeur donnée pour un ou plusieurs des paramètres'

    Salut les boss.

    Je suis en train de coder une appli. delphi en ce moment et là ça ne va pas ...
    Explications: J'utilise le fichier ADODB_TLB pour le codage de mon appli. En essayant des insertions ou des mise à jours, je reçois le message 'Aucune valeur donnée pour un ou plusieurs des paramètres requis'. La logique de mon appli est la suivante:
    "avant l'insertion d'un nouveau patient dans la table TPatient, je créé un objet de type TPatient et il est passé en paramètre à une fonction d'un objet de type TPatientBLL qui se charge de de la création de la requête d'insertion. Une fois créée, cette requête est passée en paramètre à un objet de type TManipData spécialisé dans la manipulation des données ..."

    Exemple de code:

    - création du patient à insérer ->

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    m_NewPatient := TPatient.Create;
     
        with m_NewPatient do
        begin
            Id := StrToInt(Self.txtNumero.Text);
            Nom := Self.txtNom.Text;
            Prenom := Self.txtPrenom.Text;
            Sexe := Self.cbxSexe.Text;
            Age := StrToInt(Self.txtAge.Text);
            TypePatient := 'true';
            Profession := TProfessionBLL.Instance.ProfessionHTable.GetKeyByValue(cbxProfession.Text);
            Adresse := Self.txtAdresse.Text;
        end;
    - insertion du patient ->

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TPatientBLL.Instance.Update(m_NewPatient);
    - céation de la requête d'insertion ->

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      ReqInsert := 'INSERT INTO TPatient VALUES (' +
                         IntToStr(NewPatient.Id) + ',' +
                         NewPatient.Nom + ',' + NewPatient.Prenom + ',' + NewPatient.Sexe + ',' +
                         IntToStr(NewPatient.Age) + ',' + NewPatient.Adresse + ',' + NewPatient.TypePatient + ',' +                                    IntToStr(NewPatient.Profession) + ')' ;
    - execution de la requête ->

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      m_ManipData.ExecuteCommand(ReqInsert);
    - définition de TManipData.ExecuteCommand(Req :string) ->

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
      procedure TManipData.ExecuteCommand(Req :String);
      var Count :OleVariant;
      begin
     
          Count := 0;
          try
            TConnexionBase.Instance.GetConnexion.Execute(Req,Count,adCmdText);
          except
            on EDataBaseError do ShowMessage('Erreur execution de commande !');
          end;
     
      end;
    Lorsque j'essais des suppressions, cela marche correctement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ReqDelete := 'DELETE FROM TPatient WHERE IdPat =' + IntToStr(PatientID);
     
    m_ManipData.ExecuteCommand(ReqDelete);
    J'ai essayer pas mal de code se rapportant à l'utilisation de la fonction Execute de l'objet Connection, mais sans espoir.
    Merci pour votre compréhension.

  2. #2
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    mars 2003
    Messages
    3 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : mars 2003
    Messages : 3 760
    Points : 5 758
    Points
    5 758

    Par défaut

    J'aurais tendance à quoter les chaines dans la requète...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ReqInsert := 'INSERT INTO TPatient VALUES (' +
                         IntToStr(NewPatient.Id) + ',' +
                         QuotedStr(NewPatient.Nom) + ','+etc....
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  3. #3
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2005
    Messages
    5 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : mars 2005
    Messages : 5 211
    Points : 8 321
    Points
    8 321

    Par défaut

    L'erreur est typique en SQL, ton problème vient en fait que tu insères dans ta table un nombre inférieur ou supérieur de paramètres.

    Si le nombre de champs que tu veux insérer dans la table n'est pas le identique à la totalité de la table (vu que tu ne précises pas les champs dans la requete) tu es obligé de les fournir.

    Ex:

    TablePatient
    • Nom : Champ non Null (Doit avoir obligatoirement une valeur)
    • Prenom : Champ Non Null (idem)
    • Age : Champ non Null (idem)
    • UnChampAutre : Champ null (Ne nécessite pas une valeur)


    Soit tu insères l'intégralité des champs, il faut donner une valeur pour chacun et donner les valeurs obligatoirement dans l'ordre de la table

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ReqInsert := 'Insert into TPatient Values(' + 
    QuotedStr(NewPatient.Nom) + ',' +
    QuotedStr(NewPatient.Prenom) + ',' +
    IntToStr(NewPatient.Age) + ',' +
    'NULL' + ')';
    Ou alors, tu peux uniquement indiquer les champs nécessaires.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ReqInsert := 'Insert into TPatient(Nom,Prenom,Age) Values(' + 
    QuotedStr(NewPatient.Nom) + ',' +
    QuotedStr(NewPatient.Prenom) + ',' +
    IntToStr(NewPatient.Age) + ')';
    Attention seul les champs définit avec une valeur par défaut ne sont pas obligatoire.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  4. #4
    Nouveau membre du Club
    Profil pro
    Développeur D'Applications
    Inscrit en
    décembre 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Togo

    Informations professionnelles :
    Activité : Développeur D'Applications

    Informations forums :
    Inscription : décembre 2004
    Messages : 17
    Points : 29
    Points
    29

    Par défaut

    Merci Pour vos réponses... Mon probleme est résolu...

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

Discussions similaires

  1. aucune valeur donnée pour un ou plusieurs des paramètres requis
    Par rec82 dans le forum Bases de données
    Réponses: 14
    Dernier message: 10/06/2016, 13h59
  2. Aucune valeur donnée pour un ou plusieurs des paramètres requis
    Par bboy_lil_mak dans le forum Bases de données
    Réponses: 8
    Dernier message: 10/06/2016, 13h40
  3. Réponses: 3
    Dernier message: 28/04/2014, 22h13
  4. Delphi : Aucune valeur donnée pour un ou plusieurs des paramètres requis
    Par bboy_lil_mak dans le forum Bases de données
    Réponses: 8
    Dernier message: 22/07/2013, 01h11
  5. Réponses: 9
    Dernier message: 01/06/2011, 15h33

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