Le SQL va beaucoup dépendre de la version de MYSQL
Tout est dans cette phrase, n'étant pas un spécialiste MySQL je ne saurais indiquer avec certitude que les fonctions de fenêtrage sont proposées avec votre version.
Sans utiliser les fonctions de fenêtrage, et malgré votre structure de table (AMHA mal pensée) il est toujours possible de rédiger un SQL qui va fournir le nécessaire
je pense quand même que les CTE était déjà fournies avec votre version
Voilà donc le SQL que j'avais déjà proposé
1 2 3 4
| WITH CTE AS (SELECT NOM_FACULTE,COUNT(1) AS nbrdept FROM FACULTE GROUP BY NOM_FACULTE)
SELECT f.nom_faculté,f.libellé_département, f.nombre_étudiant,f.nombre_profs,cte.nbrdept
from FACULTE F JOIN CTE ON f.nom_faculté=CTE.nom_FACULTE
ORDER BY f.nom_faculté,f.libellé_département |
est ce que pour chaque département je dois trouvé son numéro de lignes ?
Oui, sans ça comment voulez-vous détecter le besoin d'imprimer le nom de la faculté ?
il faudra juste ajouter un peu de code pour gérer le manque de numéro de ligne
tout d'abord deux variables globales :
L : Integer; Libelle_imprime : Boolean;
et quelques évènements supplémentaires
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| procedure TForm1.QRGroupHeaderBand1BeforePrint(Sender : TQRCustomBand; var PrintBand : Boolean);
begin
// Initialisations;
l:=0;
Libelle_Imprime:=False;
end;
procedure TForm1.QRBandDetailBeforePrint(Sender : TQRCustomBand; var PrintBand : Boolean);
begin
Inc(l);
end;
procedure TForm1.QRDBText1Print(sender: TObject; var Value: String);
begin
if l<trunc(Query.FieldbyName('nbdept').asinteger/2) OR Libelle_Imprime
then Value:='' // cache le nom faculté
else Libelle_Imprime:=True;
end; |
à vérifier : le cas où il n'y a qu'un seul département, il faudrait peut-être incrémenté la variable l dans l'évènement AfterPrint de la bande détail
au fait, méa culpa à propos de rbDetail, je lisais rvDetail et ne pensais pas que vous parliez de la propriété BandType
Partager