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 :

problème d'exécution d'un requête SQL!


Sujet :

C++Builder

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 9
    Points : 8
    Points
    8
    Par défaut problème d'exécution d'un requête SQL!
    je reçois une chaîne de charactères et je construis un requête comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
         AnsiString str;
         int n;
         str = Edit1->Text;
         ADOCommand1->CommandText = "";
         ADOCommand1->CommandText = "select * from CDS_Card_Data where ICCID = '";
         ADOCommand1->CommandText += str;
         ADOCommand1->CommandText += "'";
         Edit2->Text = ADOCommand1->CommandText;
         ADODataSet1->Recordset = ADOCommand1->Execute();
    Mais le COMPILER m'alerte toujous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Project TestProject.exe raised exception class EOleException with message '[MicroSoft][ODBC MicroSoft 
    Access Driver]Syntax error in string in query expression 'ICCID ='" Process Stopped. Use Step or Run to 
    continue.
    Pourquoi est-ce qu'il a causé cette erreur?

    Si je rédige un requête fixe dans la propriété CommandText sur la fenêtre "Object Inspector" comme ça:

    select * from CDS_Card_Data where ICCID = '89840321080002701056'

    par exemple, il marchera bien!!! c'est bizarre!

    Merci tous d'avance!

  2. #2
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    As-tu essayé d'afficher ta requète avant de l'exécuter pour voir ce qu'elle donne ?

  3. #3
    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
    A mon avis ca ne fonctionne pas car les ligne suivante ne s'execute pas correctement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ADOCommand1->CommandText += str;
    ADOCommand1->CommandText += "'";
    fait plutot comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
         AnsiString str;
         int n;
         str = "select * from CDS_Card_Data where ICCID = '" ;
         str += Edit1->Text;
         str += "'" ;
         ADOCommand1->CommandText = str ;
         Edit2->Text = ADOCommand1->CommandText;
         ADODataSet1->Recordset = ADOCommand1->Execute();
    A mon avis ca ira deja mieux
    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 .

  4. #4
    Membre expérimenté
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Points : 1 427
    Points
    1 427
    Par défaut
    Question :
    Pourquoi personne n'utilise la méthode QuotedStr qui permet de mettre les quotes sur les chaines de caractères???

    Citation Envoyé par Aide de Builder
    Renvoie la version guillemetée d'une chaîne AnsiString.

    Unité

    SysUtils

    Catégorie

    routines de gestion des chaînes

    extern PACKAGE AnsiString __fastcall QuotedStr(const AnsiString S);

    Description

    Utilisez QuotedStr pour convertir la chaîne AnsiString S en une chaîne guillemetée. Un caractère simple (') est inséré au début et à la fin de S et les guillemets simples dans la chaîne sont répétés.

    Remarque : Avec un système de caractères codés sur plusieurs octets (MBCS), utilisez plutôt AnsiQuotedStr.
    + + +

  5. #5
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par kurul1
    As-tu essayé d'afficher ta requète avant de l'exécuter pour voir ce qu'elle donne ?
    ça fait comment?

  6. #6
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par pottiez
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
         AnsiString str;
         int n;
         str = "select * from CDS_Card_Data where ICCID = '" ;
         str += Edit1->Text;
         str += "'" ;
         ADOCommand1->CommandText = str ;
         Edit2->Text = ADOCommand1->CommandText;
         ADODataSet1->Recordset = ADOCommand1->Execute();
    A mon avis ca ira deja mieux
    Merci beaucoup pottiez, ce code marche bien!!!

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

Discussions similaires

  1. [MySQL] Problème d'exécution d'une requête SQL
    Par siempre dans le forum Requêtes
    Réponses: 8
    Dernier message: 17/02/2012, 13h07
  2. Problème d'exécution d'une requête sql sous java
    Par leshafid dans le forum Requêtes
    Réponses: 1
    Dernier message: 18/08/2010, 09h15
  3. Problème d'exécution d'une requête sql sous java
    Par leshafid dans le forum JDBC
    Réponses: 1
    Dernier message: 18/08/2010, 08h26
  4. [SQL] problème d'exécution de la requête
    Par mama07 dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 11/06/2007, 14h15
  5. Erreur d'exécution d'une requête sql
    Par marceline dans le forum Oracle
    Réponses: 2
    Dernier message: 11/07/2006, 13h12

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