Un tableau croisé dynamique en quelques lignes.
Charge 100 000 lignes avec un seul recalcul, puis dispose les régions par trimestre en commençant par la plus grande. La même API en Delphi, C++ Builder et C#.
dotnet add package esegece.sgcPivotGrid.WinForms
Versions C++ Builder et C#
uses
Forms, Controls, SysUtils,
sgcPivotGrid_Types, sgcPivotGrid_Fields, sgcPivotGrid_VCL;
procedure CreatePivot(aForm: TForm);
const
Regions: array[0..3] of string = ('North', 'South', 'East', 'West');
var
vGrid: TsgcVCLPivotGrid;
vField: TsgcPivotField;
i: Integer;
begin
vGrid := TsgcVCLPivotGrid.Create(aForm);
vGrid.Parent := aForm;
vGrid.Align := alClient;
// load 100,000 rows, one recalculation at EndLoad
vGrid.Pivot.BeginLoad(True);
try
vGrid.Pivot.DefineColumn('Region', pvtText);
vGrid.Pivot.DefineColumn('Date', pvtDateTime);
vGrid.Pivot.DefineColumn('Sales', pvtFloat);
for i := 1 to 100000 do
vGrid.Pivot.AppendRow([Regions[i mod 4], EncodeDate(2025, 1, 1) + i mod 365,
10 + (i mod 97) * 1.5]);
finally
vGrid.Pivot.EndLoad;
end;
// layout: regions by quarter, the largest region first
vGrid.Pivot.BeginUpdate;
try
vField := vGrid.Pivot.AddField('Region', pvaRow);
vField.SortBy := pvsValue;
vField.SortOrder := pvoDescending;
vGrid.Pivot.AddField('Date', pvaColumn, pvdQuarter).Caption := 'Quarter';
vGrid.Pivot.AddDataField('Sales', pvfSum);
finally
vGrid.Pivot.EndUpdate;
end;
end;