Una tabla dinámica en pocas líneas.
Carga 100.000 filas con un único recálculo y luego organiza las regiones por trimestre, con la región más grande primero. La misma API en Delphi, C++ Builder y C#.
dotnet add package esegece.sgcPivotGrid.WinForms
Versiones para C++ Builder y 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;