Bonjour,
Sur un forum anglophone, je viens de répondre à une demande et j'aimerais vous faire partager ma solution.

La demande obtenir un nombre de lignes en fonction d'une quantité dans un enregistrement "maitre".
Même si je suggérais de plutôt faire le travail en amont par l'intermédiaire d'une table temporaire, il est possible d'utiliser un TFrxUserDataset et un état de type maitre détail.


Pour réaliser ça, il me fallait un jeu d'essai. Une requête sur une base de données Firebird
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SELECT CAST('LIGNE 1' AS VARCHAR(20)) DESCRIPTION,3 QTE FROM RDB$DATABASE
UNION
SELECT CAST('LIGNE 2'  AS VARCHAR(20)),1 FROM RDB$DATABASE
m'a fourni le nécessaire
Nom : Capture.PNG
Affichages : 86
Taille : 1,6 Ko

un petit design simple (Delphi)
Nom : Capture.PNG
Affichages : 86
Taille : 67,0 Ko

et un peu de 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
procedure TForm16.Button1Click(Sender: TObject);
begin
frxreport1.ShowReport();
end;


// IMPORTANT  frxUserDetail.RangeEnd:=reCount
procedure TForm16.frxDBMasterFirst(Sender: TObject);
begin
frxUserDetail.First;
frxUserDetail.RangeEndCount:=FDMaster.FieldByName('QTE').AsInteger;
end;

procedure TForm16.frxDBMasterNext(Sender: TObject);
begin
frxUserDetail.First;
frxUserDetail.RangeEndCount:=FDMaster.FieldByName('QTE').AsInteger;
end;
M'ont permis de réaliser l'état suivant correspondant à la demande succincte de départ (pour peu de réduire la taille de la bande maître à une hauteur de zéro)
Nom : Capture.PNG
Affichages : 84
Taille : 12,1 Ko

Attention encore une fois à bien mettre la propriété RangeEnd du TFrxUserDataset à reCount sous peine de vous retrouver dans une boucle sans fin