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 à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Points : 22
    Points
    22
    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
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Essaye en mettant les lignes enregistrant les parametres avant ta requete INSET INTO, sinon je ne voit pas trop.
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Points : 22
    Points
    22
    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
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    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
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Points : 22
    Points
    22
    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
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Oui mais a part ta Table, et ce que tes parametres sont créé dans ta base ?
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Points : 22
    Points
    22
    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
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    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.
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Points : 22
    Points
    22
    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 averti 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
    Points : 315
    Points
    315
    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
    Boubou from The SpAcE GaLaXy....
    AhAhAhAhAh

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Points : 22
    Points
    22
    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 averti 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
    Points : 315
    Points
    315
    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
    Boubou from The SpAcE GaLaXy....
    AhAhAhAhAh

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Points : 22
    Points
    22
    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 à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

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

  15. #15
    Membre averti 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
    Points : 315
    Points
    315
    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
    Boubou from The SpAcE GaLaXy....
    AhAhAhAhAh

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Points : 22
    Points
    22
    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
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    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.
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Points : 22
    Points
    22
    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
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    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();
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Points : 22
    Points
    22
    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