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 :

Probleme basique concernant les requetes SQL sous BCB [Débutant(e)]


Sujet :

C++Builder

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Probleme basique concernant les requetes SQL sous BCB
    Bonjour à tous!

    Je vais aller droit au but. La question est simple:
    Je fais une requete SQL vers une base Access, je voudrais comparer un nom de variable initialisé au préalable dans mon code, puis mettre ensuite un champ dans une variable.

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Session->Open();
    Database->Open();
     
    Requete->SQL->Add("SELECT ligne1 ligne2 ligne3 ligne4 ligne5 FROM ReseauRATP WHERE stations=depart);
     
    Requete->Open();
     
    for(n=0;n<5;n++)
    {
    ligned[n]=Requete->Fields->Fields[n]->AsInteger;
    }
    "depart" est la variable initialisée au préalable.
    Quelle syntaxe utiliser pour appeler une variable dans une requete SQL ?
    Egalement, mon code donnera t-il bien à la variable ligned[n] la valeur de "stations"? Je rappel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for(n=0;n<5;n++)
    {
    ligned[n]=Requete->Fields->Fields[n]->AsInteger;
    }

    Derniere petite question à part: Trouver la position d'un caractere dans une chaine de type depart,arrivee pour séparer le départ de l'arrivée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int position;
    AnsiString chainerecue, depart, arrivee;
    position = chainerecue.Find(',');
    depart = chainerecue.SubString( 0,(position-1) );
    arrivee = chainerecue.SubString( (position+1), chainerecue.Length()-1 );
    Ici, le Find ne passe pas... Quelle fonction puis-je utiliser?

    Merci pour votre aide.

  2. #2
    Expert éminent sénior

    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 la place de Find(';'), utilise Pos(";")

    et pour ta variable dans la requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    AnsiString requete = 
    "SELECT ligne1 ligne2 ligne3 ligne4 ligne5 FROM ReseauRATP WHERE stations=" + depart;
    Requete->SQL->Add(requete)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 48
    Points : 35
    Points
    35
    Par défaut
    si t la variable n'est pas inclus dans la table ReseauRATP (variable quelconque), utilise la requete suivate:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    AnsiString requete = 
    "SELECT ligne1 ligne2 ligne3 ligne4 ligne5 FROM ReseauRATP WHERE stations='" + depart+"'";
    Requete->SQL->Add(requete)
    sinon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    AnsiString requete = 
    "SELECT ligne1 ligne2 ligne3 ligne4 ligne5 FROM ReseauRATP WHERE stations=depart";
    Requete->SQL->Add(requete)

  4. #4
    Expert éminent sénior

    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
    Ah oui, j'avais oublié les quote, désolé

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup, c'est déjà ça de réglé! Cependant cette syntaxe ne passe pas pour un type particulier de requête SQL:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    requete="SELECT Numéro FROM ligne'"+lignecommune+"' WHERE stations='"+depart+"'";
            Requete->SQL->Add(requete);
    Je m'explique:

    IL existe plusieurs tables, à savoir la table ReseauxRATP, puis les table ligne1, ligne2, ligne3, et ainsi de suite. Je dois selectionner une table en fonction des mes resultats précedents. Exemple, si ma variable lignecommune est égale à 2, je voudrais obtenir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Requete="SELECT Numéro FROM ligne2 WHERE stations='"+depart+"'";
    Je sèche...

  6. #6
    Expert éminent sénior

    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 ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    requete="SELECT Numéro FROM ligne"+lignecommune+" WHERE stations='"+depart+"'";
            Requete->SQL->Add(requete);
    Si lignecommune est de type int met ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    requete="SELECT Numéro FROM ligne"+IntToStr(lignecommune)+" WHERE stations='"+depart+"'";
            Requete->SQL->Add(requete);

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    J'essaye!

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Pas d'erreur c'est bon signe! Merci l'ami!

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Au fait, ce code remplira bien ma variable?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for(n=0;n<5;n++)
    {
    ligned[n]=Requete->Fields->Fields[n]->AsInteger;
    }

Discussions similaires

  1. requete SQL sous Access concernant les tranches
    Par Hamadokh dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 03/01/2007, 16h23
  2. probleme requete sql sous oracle 8
    Par bouclette dans le forum Oracle
    Réponses: 4
    Dernier message: 06/12/2006, 18h04
  3. [sql]Probleme de count dans une requete sql (sous access)
    Par castelligreg dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 14/04/2006, 17h06
  4. Réponses: 1
    Dernier message: 14/04/2006, 12h02
  5. [MySQL] Encore un probleme de variables avec les requetes sql
    Par eown dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/04/2006, 12h01

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