dbf_usr Posted June 2, 2020 Share Posted June 2, 2020 Как в DBGreed Summary организовать выборочное суммирование при группировке. К примеру нужно просуммировать только записи с с значением поле PgDS.DataSet.FieldByName('coment').AsString='plus' а остальные игнорировать. В примерах не нашел (( За ранее благодарен! Quote Link to comment Share on other sites More sharing options...
Sherzod Posted June 3, 2020 Share 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 Link to comment Share on other sites More sharing options...
dbf_usr Posted June 3, 2020 Author Share Posted June 3, 2020 Спасибо! Quote Link to comment Share on other sites More sharing options...
dbf_usr Posted June 9, 2020 Author Share 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 Link to comment Share on other sites More sharing options...
Sherzod Posted June 9, 2020 Share Posted June 9, 2020 35 minutes ago, dbf_usr said: Работает с накоплением итого сквозь все группы. Я не смог воспроизвести этот случай... Quote Link to comment Share on other sites More sharing options...
dbf_usr Posted June 9, 2020 Author Share Posted June 9, 2020 10 minutes ago, Sherzod said: Я не смог воспроизвести этот случай... Вот так это работает. Quote Link to comment Share on other sites More sharing options...
Sherzod Posted June 9, 2020 Share Posted June 9, 2020 7 minutes ago, dbf_usr said: Вот так это работает. Приведите код: OnColumnSummaryResult Quote Link to comment Share on other sites More sharing options...
dbf_usr Posted June 9, 2020 Author Share 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 Link to comment Share on other sites More sharing options...
Sherzod Posted June 9, 2020 Share 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 Link to comment Share on other sites More sharing options...
dbf_usr Posted June 9, 2020 Author Share Posted June 9, 2020 Все получилось - СПАСИБО!!! 1 Quote Link to comment Share on other sites More sharing options...
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.