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

C++Builder Discussion :

erreur SQL : EOleException


Sujet :

C++Builder

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Par d�faut erreur SQL : EOleException
    Bonjour ,

    J'ai un probl�me concernant une requ�te SQL , une des fonctions de mon programme de gestion de stock est la mise � jour du table (tblConsommation) qui sert lorsque l'utilisateur souhaite retirer un produit du stock , on lui demande un certain nombre de renseignement : son nom, pr�nom, service auquel il appartient , le nom du produit qu'il veut retirer, sa quantit� et la date du retrait .En claire il y a 6 champs dans cette table (tblConsommation) le code est donc :

    ADOQuerySortieStock->SQL->Add("INSERT INTO tblConsommation (Nom,Prenom,Service,Produit,Quantite,Date) ");
    ADOQuerySortieStock->SQL->Add("VALUES (:ParamNom,: ParamPrenom,: ParamService,:ParamNomProduit,:ParamStockMin,:ParamDate)");

    ADOQuerySortieStock->Parameters->ParamByName("ParamNom")->Value = DBLookupComboBoxProdSorti->Text ;
    ADOQuerySortieStock->Parameters->ParamByName("ParamPrenom")->Value = DBLookupComboBoxPourQuiNom->Text ;
    ADOQuerySortieStock->Parameters->ParamByName("ParamService")->Value = DBLookupComboBoxPrenom->Text ;
    ADOQuerySortieStock->Parameters->ParamByName("ParamNomProduit")->Value = DBLookupComboBoxService->Text ;
    ADOQuerySortieStock->Parameters->ParamByName("ParamStockMin")->Value = ComboBoxQuantiteSortie->Text ;
    ADOQuerySortieStock->Parameters->ParamByName("ParamDate")->Value = EdtDateSortieStock->Text ;

    Explication :

    ": ParamNom..."repr�sentent les param�tres entr�s par l'utilisateur
    (":" indique qu'il s'agit de param�tre).
    Et les lignes suivantes indiquent au programme que les param�tres se trouvent dans des listes d�roulantes contenants les donn�es d'un champ d'une des tables (DBLookupComboBoxProdSorti->Text ) .

    J'obtiens l'erreur suivante :
    Le projet ... � provoqu� une classe d'exception EOleException avec le
    messsage "Erreur de syntaxe dans l'instruction INSERT INTO"...

    Je ne comprends pas l'erreur alors svp un petit coups de main serait sympa.
    A+

  2. #2
    Expert confirm�

    Avatar de pottiez
    Homme Profil pro
    D�veloppeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par d�faut
    Essaye en mettant les lignes enregistrant les parametres avant ta requete INSET INTO, sinon je ne voit pas trop.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Par d�faut
    Salut

    Merci pour ta r�ponse.
    En faisant ce que tu m'a dis j'obtiens l'erreur suivante :
    "Le projet ... a provoqu� une classe d'exception EOleException avec le message 'Objet Parameter d�fini de mani�re incorrecte . Des informations incoh�rentes ou incompl�tes ont �t� fournies.' ...

  4. #4
    Expert confirm�

    Avatar de pottiez
    Homme Profil pro
    D�veloppeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par d�faut
    T'es param�tre sont ils d�j� cr�� dans la base, si il ne le sont pas il faut le faire.

    Sinon, essaye de passer par la fonction SetData pour attribuer les valeurs � tes param�tres

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Par d�faut
    Ma table contenant les champs qui vont �tre remplis suite � l'execution de la requ�te SQL est d�j� cr�e.

    J'ai remplac� le TADOQuery par un TADODataSet mais j'obtiens la m�me erreur :
    Objet Parameters d�fini de mani�re incorrecte . Des informations incoh�rentes ou incompl�tes ont �t� fournies.

  6. #6
    Expert confirm�

    Avatar de pottiez
    Homme Profil pro
    D�veloppeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par d�faut
    Oui mais a part ta Table, et ce que tes parametres sont cr�� dans ta base ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Par d�faut
    Je ne comprends pas ce que tu dis : cr�er des param�tres dans une base ?

    Il ne suffit pas de les d�clarer dans le TQuery ou TDataSet ?

  8. #8
    Expert confirm�

    Avatar de pottiez
    Homme Profil pro
    D�veloppeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par d�faut
    Bin il me semblait qu'il fallait les cr�er dans la base, mais je peut peut etre me tromper, moi je ne passe pas par des parametre sous SQL pour eviter ce genre de probleme.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Par d�faut
    Salut

    Le DataSource normalement li� � mon ADOQuery n'accepte pas dans sa propri�t� DataSet ce ADOQuery , lorsque je le mets il me dit :
    Liaisons de donn�es circulaires non autoris�es

    Voil� c'est peut-�tre de l� que vient le probl�me mais je ne sais pas comment le r�soudre.

  10. #10
    Membre �clair� Avatar de BOUBOU81
    Profil pro
    system integrator
    Inscrit en
    Juin 2004
    Messages
    358
    D�tails du profil
    Informations personnelles :
    Localisation : Allemagne

    Informations professionnelles :
    Activit� : system integrator

    Informations forums :
    Inscription : Juin 2004
    Messages : 358
    Par d�faut
    Dans ton ADOQuery il faut que tu enleves ce que tu as mis dans la propi�t�
    DataSource et que tu la laisse vide, si tu li� ton DataSource � ton ADOQuery
    ce que je te conseille de faire

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Par d�faut
    Merci s'�tait �a le probl�me.

    Mais j'ai toujours le m�me probl�me de INSERT INTO comme je le dis dans mon 1er message .
    Voil� j'esp�re que tu pourras m'aid� car pottiez comme tu pourras le voir m'a donn� plusieurs info mais sans r�sultat.

    (pour plus d'info sur mon probl�me r�faire toi au 1er message de la discussions).

  12. #12
    Membre �clair� Avatar de BOUBOU81
    Profil pro
    system integrator
    Inscrit en
    Juin 2004
    Messages
    358
    D�tails du profil
    Informations personnelles :
    Localisation : Allemagne

    Informations professionnelles :
    Activit� : system integrator

    Informations forums :
    Inscription : Juin 2004
    Messages : 358
    Par d�faut
    tu veux obligatoirement passer par des parameters
    car sinon tu le passe comme ca

    AnsiString requete="INSERT INTO tblConsommation (Nom,Prenom,Service,Produit,Quantite,Date) ";
    requete+=" VALUES ('"+DBLookupComboBoxProdSorti->Text+"','"+DBLookupComboBoxPourQuiNom->Text+"','"+DBLookupComboBoxPrenom->Text+"','"+DBLookupComboBoxService->Text+"',"+ComboBoxQuantiteSortie->Text+","+EdtDateSortieStock->Text+") ";
    ADOQuerySortieStock->Close();
    ADOQuerySortieStock->Clear();
    ADOQuerySortieStock->SQL->Add(requete);
    ADOQuerySortieStock->ExecSQL();

    Essaye juste pour voir et dis moi apr�s on veras pour les parmeters, mais teste ca juste pour voir ce que ca donne

    Pense a mettre r�solu sur ton premier message

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Par d�faut
    A priori je pense pas qu'il y ait d'autre solutions pour r�cup�rer les donn�es entr�es par un utilisateur mais si tu a une autre id�e je suis preneur.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Par d�faut
    J'ai essay� mais il y a toujours la m�me erreur de syntaxe avec le INSERT INTO

  15. #15
    Membre �clair� Avatar de BOUBOU81
    Profil pro
    system integrator
    Inscrit en
    Juin 2004
    Messages
    358
    D�tails du profil
    Informations personnelles :
    Localisation : Allemagne

    Informations professionnelles :
    Activit� : system integrator

    Informations forums :
    Inscription : Juin 2004
    Messages : 358
    Par d�faut
    il ne te met rien de plus dans le message d'erreur qui pourrai peut-etre nous aid�?

    Est-ce que tu peux nous donner la structure de ta table :
    nom des champs et le type de chaque champ

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Par d�faut
    L'erreur est :" Le projet ... a provoqu� une classe d'exception EOleException avec le message ' Erreur de syntaxe dans l'instruction INSERT INTO ' ... "

    Structure de ma table Access (tblConsommation) :
    6 champs : Nom de type texte (index� - avec doublons)
    Pr�nom de type texte (index� - avec doublons)
    Service de type texte (index� - avec doublons)
    Produit de type texte (index� - avec doublons)
    Quantite de type num�rique (non index�)
    Date de type date/heure (index� - avec doublons)

    + une cl� primaire de type num�roAuto (index� - sans doublons)

  17. #17
    Expert confirm�

    Avatar de pottiez
    Homme Profil pro
    D�veloppeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par d�faut
    Met plutot ce code ci :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    AnsiString requete="INSERT INTO tblConsommation (Nom,Prenom,Service,Produit,Quantite,Date) ";
    requete+=" VALUES ('"+DBLookupComboBoxProdSorti->Text+"','"+DBLookupComboBoxPourQuiNom->Text ;
    requete+="','"+DBLookupComboBoxPrenom->Text+"','"+DBLookupComboBoxService->Text ;
    requete+="',"+ComboBoxQuantiteSortie->Text+",'"+EdtDateSortieStock->Text+"') ";
    ADOQuerySortieStock->Close();
    ADOQuerySortieStock->Clear();
    ADOQuerySortieStock->SQL->Add(requete);
    ADOQuerySortieStock->ExecSQL();
    En fait il manque les ' pour la date, il suffit juste de les rajouter.

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Par d�faut
    D�sol� �a ne fonctionne pas m�me en ajoutant les ' au niveau de la quantit� , j'obtiens toujours la m�me erreur.

  19. #19
    Expert confirm�

    Avatar de pottiez
    Homme Profil pro
    D�veloppeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : D�veloppeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par d�faut
    Il ne faut pas ajouter les ' au niveau de la quantit�, vu que c'est un type num�rique, par contre il faut bien les ajouter pour la date.

    Sinon essaye comme ceci :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    AnsiString requete="INSERT INTO tblConsommation (Nom,Prenom,Service,Produit,Quantite,Date) ";
    ADOQuerySortieStock->Close();
    ADOQuerySortieStock->Clear();
    ADOQuerySortieStock->SQL->Add(requete);
    requete=" VALUES ('"+DBLookupComboBoxProdSorti->Text+"','"+DBLookupComboBoxPourQuiNom->Text ;
    requete+="','"+DBLookupComboBoxPrenom->Text+"','"+DBLookupComboBoxService->Text ;
    requete+="',"+ComboBoxQuantiteSortie->Text+",'"+EdtDateSortieStock->Text+"') ";
    ADOQuerySortieStock->SQL->Add(requete);
    ADOQuerySortieStock->ExecSQL();

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Par d�faut
    D�sol� mais toujours la m�me erreur.

+ R�pondre � la discussion
Cette discussion est r�solue.
Page 1 sur 2 12 Derni�reDerni�re

Discussions similaires

  1. [sqlwindows] erreur sql
    Par chassonj dans le forum Autres SGBD
    R�ponses: 3
    Dernier message: 15/12/2003, 11h02
  2. [ODBC] erreur SQL pour les unions qui renvoient vide
    Par fabriceMerc dans le forum MS SQL Server
    R�ponses: 3
    Dernier message: 25/11/2003, 11h06
  3. Erreurs SQL Server
    Par ZuZu dans le forum MS SQL Server
    R�ponses: 5
    Dernier message: 09/10/2003, 16h23
  4. erreur SQL ...INSERT INTO
    Par naidinp dans le forum ASP
    R�ponses: 20
    Dernier message: 18/09/2003, 11h38
  5. erreur sql loader et performance
    Par mobisky dans le forum SQL*Loader
    R�ponses: 14
    Dernier message: 20/08/2003, 12h27

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