Bonjour tous le monde
Soit la requête RPrdPluVnd(SqlQuery) reliée à un Chart et formée uniquement de deux champs,(lbl_prd: Libellés des produits et Total: la somme des quantités)
qui affiche les Quantités des produits les plus importantes vendues, suivant un ordre décroissant, entre deux dates données.
Pour cette raison on exécutera cette requête deux fois de suite:
la première affiche tous les enregistrements afin de retirer une valeur limite (v) des quantités.
la deuxième affiche les enregistrements ayant des quantités supérieures à cette valeur (v)
RPrdPluVnd:
Chart1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT PrdsBase.lbl_prd ,SUM(Ventes.Qte_vnt) as Total FROM Ventes INNER JOIN Majprdstk ON (Ventes.Num_prdv=MajPrdStk.Num_prdk) INNER JOIN PrdsBase on(PRDSBASE. REF_PRD= MAJPRDSTK. REF_PRDK) WHERE Ventes.Dat_vnt>=:D1 and Ventes.Dat_vnt<=:D2 GROUP BY PrdsBase.lbl_prd HAVING SUM(Ventes.Qte_vnt)>=:Q ORDER BY Total DESC
-BottomAxis/positionUnits: cuPixel
DbChartSource1:
-DataSource: Datasource1
-FieldText: LBL_PRD
-FieldY: Total
Chart1BarSerie1:
-Source: DbChartSource1
-BarWidthPercent: 50
-Marks/Style:smsLabel //pour faire apparaitre les étiquettes des bars.
Button1:
merci à tous.
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 procedure TGraphe.Button1Click(Sender: TObject); var i:integer; v:currency; begin Chart1BarSeries1.Active:=false ; //La première exécution de la requête affiche tous les enregistrements. mdr.RPrdPluVnd.Close; mdr.RPrdPluVnd.Params[0].AsDate:=DateTimePicker1.Date; mdr.RPrdPluVnd.Params[1].AsDate:=DateTimePicker2.Date; mdr.RPrdPluVnd.Params[2].AsCurrency:=0 ; mdr.RPrdPluVnd.Open ; mdr.RPrdPluVnd.First; For i:=1 to 29 Do // affiche 29+1 enregistrements. mdr.RPrdPluVnd.Next ; if mdr.RPrdPluVnd.FieldValues['Total']<> Null then v:=mdr.RPrdPluVnd.FieldValues['Total'] else v:=0; //La deuxième exécution de la requête affiche les 30 premiers enregistrements. mdr.RPrdPluVnd.Close; mdr.RPrdPluVnd.Params[0].AsDate:=DateTimePicker1.Date; mdr.RPrdPluVnd.Params[1].AsDate:=DateTimePicker2.Date; mdr.RPrdPluVnd.Params[2].Ascurrency:=v; mdr.RPrdPluVnd.Open ; Chart1BarSeries1.Active:=True; end;![]()
Partager