vcl-157010-expresspivotgrid-concepts-how-to-add-an-unbound-field-to-supply-additional-data.md
The following code snippet adds two unbound fields which represent a discount and discount value for orders. For analyzing purposes, a discount of 10% is applied to all the orders in a bound data source. A discount value is calculated for each payment referenced by the DBPivotGridPaymentAmount field.
var
I: Integer;
ADiscountField: TcxPivotGridField;
begin
DBPivotGrid.BeginUpdate;
ADiscountField := DBPivotGrid.CreateField;
with ADiscountField do
begin
Caption := 'Discount';
DisplayFormat := '0.0%';
SummaryType := stMin;
Visible := True;
Area := faData;
DataBinding.ValueType := 'Float';
for I := 0 to PivotGrid.DataController.RecordCount - 1 do
Values[I] := 10;
end;
with DBPivotGrid.CreateField do
begin
Caption := 'Discount value';
SummaryType := stSum;
Visible := True;
Area := faData;
DataBinding.ValueType := 'Currency';
with PivotGrid.DataController do
for I := 0 to RecordCount - 1 do
Values[I] := Values[I, DBPivotGridPaymentAmount.Index] *
Values[I, ADiscountField.Index] / 100;
end;
DBPivotGrid.EndUpdate;
end;
DBPivotGrid->BeginUpdate();
try {
TcxPivotGridField *ADiscountField = DBPivotGrid->CreateField();
ADiscountField->Caption = "Discount";
ADiscountField->DisplayFormat = "0.0%";
ADiscountField->SummaryType = stMin;
ADiscountField->Visible = True;
ADiscountField->Area = faData;
ADiscountField->DataBinding->ValueType = "Float";
for(int I = 0; I < DBPivotGrid->DataController->RecordCount; I++)
ADiscountField->Values[I] = 10;
TcxPivotGridField *ADiscountValueField = DBPivotGrid->CreateField();
ADiscountValueField->Caption = "Discount value";
ADiscountValueField->SummaryType = stSum;
ADiscountValueField->Visible = True;
ADiscountValueField->Area = faData;
ADiscountValueField->DataBinding->ValueType = "Currency";
for(int I = 0; I < DBPivotGrid->DataController->RecordCount; I ++)
ADiscountValueField->Values[I] = DBPivotGridPaymentAmount->Values[I] *
ADiscountField->Values[I] / 100;
}
__finally {
DBPivotGrid->EndUpdate();
}