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 :

Plusieurs requêts SQL dans un QReport


Sujet :

C++Builder

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 795
    Par défaut Plusieurs requêts SQL dans un QReport
    Bonjour
    Voilà je viens de faire un QRep avec 1 requête, ça fonctionne très bien.
    J'ai également essayé avec une requête dans la bande détail et une requête dans la bande résumé et ça fonctionne impecc aussi. MAIS dans mon cas 2 requête dans la bande détail, ça ne va pas...

    J'ai une table dans laquelle je vais rechercher des parcelles. Dans cette table, j'ai également une Client ID. Je le prend et je souhaiterais afficher également les coordonnées du client.. et c'est là que ca coince !! Ca m'affiche seulement la dernière valeur de ma table. Donc en gros, les requêtes se font bien mais il garde en mémoire seulement mon dernier enrgistrement.

    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
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    //On sélectionne toutes les parcelles par ordre de parcelle
     
    ImprimeListeClients->Query2->SQL->Clear();
    ImprimeListeClients->Query2->SQL->Add("SELECT * FROM TReservation ORDER BY right('000' + Parcelle, 3)");
    ImprimeListeClients->Query2->Open();
     
      int i;
    //On regarde le nombre de parcelles
      int NbreParcelle =  ImprimeListeClients->Query2->RecordCount;
    // On se positionne à la première parcelle
      ImprimeListeClients->Query2->First();
    //On fait une boucle, on passe d'une parcelle à une autre
      for (i=0;i<NbreParcelle;i++)
      {
       AnsiString Parcelle = ImprimeListeClients->Query2Parcelle->Value;
       int ClientID =  ImprimeListeClients->Query2ClientID->Value;
       AnsiString SurfaceParcelle = ImprimeListeClients->Query2SurfaceParcelle->Value;
        //Une fois qu'on a tout, on va rechercher les coordonnées du client de la parcelle:
     
            ImprimeListeClients->Query1->Close();
            ImprimeListeClients->Query1->SQL->Clear();
            ImprimeListeClients->Query1->SQL->Add("SELECT * FROM TClient WHERE ClientID=:ClientID");
            ImprimeListeClients->Query1->ParamByName("ClientID")->Value = ClientID;
            ImprimeListeClients->Query1->Open();
            ImprimeListeClients->Query1->Active=true;
     
        // On affiche les coordonnées de la parcelle
             ImprimeListeClients->QRDBText18->DataSet = ImprimeListeClients->Query2;
             ImprimeListeClients->QRDBText18->DataField = "Parcelle";
     
        // On affiche alors les coordonnées du client
             ImprimeListeClients->QRDBText1->DataSet = ImprimeListeClients->Query1;
             ImprimeListeClients->QRDBText1->DataField = "NomHomme";
     
        // On passe à la parcelle suivante
             ImprimeListeClients->Query2->Next();
      }
    // On affiche notre QReport
    ImprimeListeClients->QReport1->Preview();
    Quelqu'un a-t-il une idée pour que puisse afficher mes 400 enregistrements un en dessous de l'autre dans la bande de détail sans passer par une autre table ? Parce que là j'ai essayé en créant une table, faisant mes requêtes , les insérant dans cette table et afficher, mais ça prend un temps fou à l'affichage et en plus c'est une méthode barbare que je veux éviter à tout pris !!
    D'avance, Merci

  2. #2
    Membre expérimenté
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Par défaut
    Bonjour,

    Il faut créer une selection multiple et ainsi recupéré toutes les informations desiré en une seule requete

    Personnellement, je ne me casse pas trop la tete, j'utilise access pour généré ma requete et puis je l'adapte pour l'inserer dans mon programme .

    Edit :
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select TABLE1.ID, TABLE2.* from TABLE2 inner join TABLE1 on TABLE1.ID=TABLE2.ID WHERE TABLE2.ID=1" ;
    lanonyme

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 795
    Par défaut
    Qu'entend-tu par sélection multiple? Une requête avec jointure ?
    Aurais-tu un exemple à me proposer que je comprenne un peu mieux avec mon exemple?
    Merci

  4. #4
    Membre expérimenté
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Par défaut
    Ci dessus, je viens de le rajouter
    Je me disai que ca manquer

    Effectivement,
    Citation Envoyé par arnaud_verlaine
    Une requête avec jointure
    Je suis pas specialiste SQL, je connais pas trop bien les termes

    lanonyme

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 795
    Par défaut
    ok je te remercie, je vais essayer cela.
    Mais moi et les jointures ça fait deux...
    Tu sais pas transposer ta requête sur mon exemple? Parce que là je patine un peu...

  6. #6
    Membre expérimenté
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Par défaut
    Perso pour les réaliser quand ca devient complexe, j'utilise acess pour l'avoir.

    Je vais y regarder

    lanonyme

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 795
    Par défaut
    je suis dans Access 2003 là justement mais je trouve pas ça simple !!

  8. #8
    Membre expérimenté
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Par défaut
    P'tite Question, Quel est le lien entre parcelles et tes clients.
    j'entend par la, quel est la clef etrangére ?
    ou utilise tu une table entre les deux ?

    lanonyme

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 795
    Par défaut
    OK , ne cherche plus j'ai trouvé , enfin Access m'a fait une requête toute faite et ça devrait fonctionner je pense !!
    Merci pour le coup de pouce

  10. #10
    Membre expérimenté
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Par défaut
    Oki, Cool

    Sinon tu devrai avoir quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT TReservation.*,TClient.*  FROM TReservation inner join TClient On  TClient.ClientID=:ClientID=TReservation.ID  WHERE ClientID=:ClientID ORDER BY right('000' + Parcelle, 3)
    C'est en rouge la relation entre les deux tables.

    lanonyme

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

Discussions similaires

  1. [MySQL] Exécuter plusieurs requêtes SQL dans un script PHP ?
    Par Ludock dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 22/02/2015, 15h35
  2. Afficher plusieurs requêtes SQL dans une ListView
    Par GYooo dans le forum Composants graphiques
    Réponses: 4
    Dernier message: 01/02/2013, 02h07
  3. Exécution de plusieurs requêtes SQL dans Oracle
    Par 4rocky4 dans le forum PL/SQL
    Réponses: 7
    Dernier message: 19/03/2009, 11h12
  4. [Data] [iBATIS] Plusieurs requêtes SQL dans un <statement> ?
    Par Tourix dans le forum Spring
    Réponses: 3
    Dernier message: 04/09/2006, 15h40
  5. [SQL] Traitement de plusieurs requêtes .SQL dans un script PHP?
    Par M4x dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 19/03/2006, 19h59

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