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

Bases de données Delphi Discussion :

utilisation de la comande order by


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    agent de fisc(les impots)
    Inscrit en
    Juillet 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : agent de fisc(les impots)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 427
    Points : 111
    Points
    111
    Par défaut utilisation de la comande order by
    salut
    delphi 7 , interbase, quickreport
    jais une table agent(num_agent,nom_agent,prenom_agent,grade)
    je cherche une requette sql dans le quel je peut afficher dans un quickreport les agent par order de grade , de tel facon si les agent qui ont un grade pareil termine j'affiche les autre agent qui ont un autre grade dans une autre page et pas dans la meme page et en ce de suit pour les autre agent
    cette requtte me donne mais pas comme je veux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    with ibquery1 do
    begin
    close;
    sql.clear;
    sql.add('select * from agent order by grade');
    open;
    end;
    vous pouvez m'aider svp.
    merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 061
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 061
    Points : 41 021
    Points
    41 021
    Billets dans le blog
    62
    Par défaut
    La requête en elle même est correcte , quoique puriste j'aurais suggéré de mettre les champs

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select num_agent,nom_agent,prenom_agent,grade from agent order by grade

    Maintenant que :
    cette requtte me donne mais pas comme je veux
    ne nous indique absolument pas le problème
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre actif
    Homme Profil pro
    Programmeur Delphi
    Inscrit en
    Octobre 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Programmeur Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 183
    Points : 227
    Points
    227
    Par défaut
    Bonjour,

    à mon avis, ton idée, c'est d'avoir la liste des personnes, par grade ordonné, ainsi, que par nom/prénom

    donc la requête doit être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from agent order by grade,nom_agent,prenom_agent

  4. #4
    Membre actif
    Inscrit en
    Décembre 2004
    Messages
    390
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 390
    Points : 288
    Points
    288
    Par défaut
    Le problème est dans Quick !
    Moi j'aurai fais ceci :
    j'ajouterai un autre query, une bande QRGroup et une autre bande QRSubDetail à ton rapport. Tu supprime la bande détail existante.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    with ibquery1 do
    begin
      if Active then Close;
      SQL.Text := 'SELECT num_agent,nom_agent,prenom_agent FROM agent WHERE GRADE=:GRADE ORDER BY nom_agent,prenom_agent'
    end;
     
    with qGrade do begin
      if Active then Close;
      SQL.Text := 'SELECT DISTINCT GRADE FROM AGENT ORDER BY GRADE';
      Open;
    end;
    Tu informes la propriété DataSet du QRSubDetail par ibQuery1, la propriété Expression du QRGroup par qGrade.Grade et dans son événement BeforPrint tu ouvres ta requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ibquery1.Close;
    ibquery1.ParamByName('GRADE').AsString := qGrade.FieldByName('GRADE').AsString;
    ibquery1.Open;
    Dans l’événement BeforePrint du QRSubDetail tu place tes champs.

    En principe, ça devrait fonctionner.

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 061
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 061
    Points : 41 021
    Points
    41 021
    Billets dans le blog
    62
    Par défaut
    @Ali_Agha ta solution est trop complexe : le Quickreport gère très bien les groupes , pas besoin de passer par des Querys intermédiaires !

    Kroma23 ne nous a pas indiqué pourquoi son ordre ne lui plaisait pas , toutes les suppositions sont donc permises comme celle de jaduta

    soit encore par exemple en ordre par grade,numero

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT num_agent,nom_agent,prenom_agent,grade FROM agent ORDER BY 4,1

    par grade,prénom,nom
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT num_agent,nom_agent,prenom_agent,grade FROM agent ORDER BY 4,3,2

    et ceci sans utiliser les ASC ou DESC
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Membre actif
    Inscrit en
    Décembre 2004
    Messages
    390
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 390
    Points : 288
    Points
    288
    Par défaut
    Oui, mais lui il veut faire un saut de page au changement du grade, donc il faut lui indiquer comment. Ce n'est pas simplement une histoire d' "ORDER BY".

    C'est pour ça que j'ai suggéré le QRGroup.

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 061
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 061
    Points : 41 021
    Points
    41 021
    Billets dans le blog
    62
    Par défaut
    tout à fait d'accord avec le QRGroup , il faut simplement encadrer la QRDetailBand avec un GroupHeader (dans lequel on indique que l'on fait un GROUPE sur le Grade
    et un GroupFooter (avec alignBottom :=true)
    Rien de compliqué . Et ce n'est pas ce que j'ai lu sur la question , la demande est :
    je cherche une requête sql ....cette requête me donne mais pas comme je veux
    le code montré est bien la requête .
    S'il s'agissait de Quickreport et de comment faire des groupes j'ose espérer que la demande aurait été indiqué et dans ce cas j'aurais dit (entre autre) qu'il y a un forrum spécifique pour les générateurs d'états
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  8. #8
    Membre actif
    Inscrit en
    Décembre 2004
    Messages
    390
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 390
    Points : 288
    Points
    288
    Par défaut
    @SergioMaster

    Il n'ya rien de mal, mais je vous rassure qu'il a bien citer QuickReport et qu'il a même parlé de page. L'essentiel est de donner un coup de main quand on peut.
    Au passage, je d'accord avec vous pour le GroupHeader mais j'ai toujours préféré le QRGroup et QRSubDetail qui me semblent plus appropriés à ce type de traitement.

    Bonne fin de journée.

  9. #9
    Membre régulier
    Homme Profil pro
    agent de fisc(les impots)
    Inscrit en
    Juillet 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : agent de fisc(les impots)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 427
    Points : 111
    Points
    111
    Par défaut
    Re
    effictivement AKLI ces ca ce que je veux , un saut de page au changement de grade mais jais pas comprie vraiment ta reponce tu me expliqué un peut plus stp
    par exemple ou je vais metre ton premier code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    with ibquery1 do
    begin
      if Active then Close;
      SQL.Text := 'SELECT num_agent,nom_agent,prenom_agent FROM agent WHERE GRADE=:GRADE ORDER BY nom_agent,prenom_agent'
    end;
     
    with qGrade do begin
      if Active then Close;
      SQL.Text := 'SELECT DISTINCT GRADE FROM AGENT ORDER BY GRADE';
      Open;
    end;
    et jais pas comprie ces quoi qGrade
    Merci d'avance

  10. #10
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 061
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 061
    Points : 41 021
    Points
    41 021
    Billets dans le blog
    62
    Par défaut
    pourquoi faire simple quant on peut faire compliqué ?

    bon , un dessin vaut mieux qu'un long discours

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT Grade,num_agent,nom_agent,prenom_agent FROM agent  ORDER BY Grade,nom_agent,prenom_agent
    et pas une ligne de code
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  11. #11
    Membre actif
    Inscrit en
    Décembre 2004
    Messages
    390
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 390
    Points : 288
    Points
    288
    Par défaut
    Oh SergioMaster, y a pas de quoi se taper la tête dans le mur, voyons !

    @kroma23
    Tu ouvres ta requête dans l'événement BeforePrint du rapport et tu suis ce qu'a dit SergioMaster plus haut

  12. #12
    Membre régulier
    Homme Profil pro
    agent de fisc(les impots)
    Inscrit en
    Juillet 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : agent de fisc(les impots)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 427
    Points : 111
    Points
    111
    Par défaut
    Re
    oui vous avez raison @sergio
    tout ce qui est simple et beau
    merci bien mon probleme et resolu grace vous et merci aussi pour @akli

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/10/2013, 12h09
  2. Réponses: 2
    Dernier message: 13/07/2007, 12h20
  3. utilisation ORDER BY.
    Par wfirefox dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 05/07/2007, 17h43
  4. Utilisation de "order by"
    Par milulu dans le forum SQL
    Réponses: 3
    Dernier message: 25/06/2007, 16h13
  5. Réponses: 10
    Dernier message: 30/11/2004, 10h12

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