dbf_usr Posted June 2, 2020 Posted June 2, 2020 Как в DBGreed Summary организовать выборочное суммирование при группировке. К примеру нужно просуммировать только записи с с значением поле PgDS.DataSet.FieldByName('coment').AsString='plus' а остальные игнорировать. В примерах не нашел (( За ранее благодарен! Quote
Sherzod Posted June 3, 2020 Posted June 3, 2020 7 hours ago, dbf_usr said: Как в DBGreed Summary организовать выборочное суммирование при группировке. Здравствуйте, Попробуйте например такой код: procedure TMainForm.UniDBGrid1ColumnSummary(Column: TUniDBGridColumn; GroupFieldValue: Variant); begin if SameText(Column.FieldName, 'quantity') then begin if Column.AuxValue=NULL then Column.AuxValue:=0; if Column.Field.DataSet.FieldByName('quantity').AsInteger > 500 then Column.AuxValue:=Column.AuxValue + Column.Field.AsInteger end else if SameText(Column.FieldName, 'unitprice') then begin if Column.AuxValue=NULL then Column.AuxValue:=0.0; if Column.Field.DataSet.FieldByName('quantity').AsInteger > 500 then Column.AuxValue:=Column.AuxValue + (Column.Field.AsFloat * ClientDataSet1Quantity.AsInteger) end; end; 1 Quote
dbf_usr Posted June 9, 2020 Author Posted June 9, 2020 procedure TUniOperations.UniDBGrid1ColumnSummary(Column: TUniDBGridColumn; GroupFieldValue: Variant); var F : Real; begin if SameText(Column.FieldName, 'sum_oper') then begin if Column.AuxValue=NULL then Column.AuxValue:=0; if Column.Field.DataSet.FieldByName('id_sens_operation').AsInteger=95 then begin if Column.Field.DataSet.FieldByName('typ_operation_id').AsString='111' then Column.AuxValue:=Column.AuxValue + Column.Field.AsInteger; if Column.Field.DataSet.FieldByName('typ_operation_id').AsString='112' then Column.AuxValue:=Column.AuxValue - Column.Field.AsInteger; end; end end; Работает с накоплением итого сквозь все группы. Надо что бы в каждой группе отдельно считалось. Как это сделать? За ранее благодарен! Quote
Sherzod Posted June 9, 2020 Posted June 9, 2020 35 minutes ago, dbf_usr said: Работает с накоплением итого сквозь все группы. Я не смог воспроизвести этот случай... Quote
dbf_usr Posted June 9, 2020 Author Posted June 9, 2020 10 minutes ago, Sherzod said: Я не смог воспроизвести этот случай... Вот так это работает. Quote
Sherzod Posted June 9, 2020 Posted June 9, 2020 7 minutes ago, dbf_usr said: Вот так это работает. Приведите код: OnColumnSummaryResult Quote
dbf_usr Posted June 9, 2020 Author Posted June 9, 2020 2 minutes ago, Sherzod said: Приведите код: OnColumnSummaryResult procedure TUniOperations.UniDBGrid1ColumnSummaryResult(Column: TUniDBGridColumn; GroupFieldValue: Variant; Attribs: TUniCellAttribs; var Result: string); var I : Integer; begin if SameText(Column.FieldName, 'sum_oper') then begin I:=Column.AuxValue; Result:='Σ: '+FormatCurr('0,0.00 ', I); Attribs.Font.Style:=[fsBold]; Attribs.Font.Color:=clWebDarkOliveGreen; end ; End; Quote
Sherzod Posted June 9, 2020 Posted June 9, 2020 Попробуйте так: procedure TUniOperations.UniDBGrid1ColumnSummaryResult(Column: TUniDBGridColumn; GroupFieldValue: Variant; Attribs: TUniCellAttribs; var Result: string); var I : Integer; begin if SameText(Column.FieldName, 'sum_oper') then begin I:=Column.AuxValue; Result:='Σ: '+FormatCurr('0,0.00 ', I); Attribs.Font.Style:=[fsBold]; Attribs.Font.Color:=clWebDarkOliveGreen; end ; Column.AuxValue:=NULL; //<----- End; \FMSoft\Framework\uniGUI\Demos\Desktop\GridGroupingSummary Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.