Jump to content

UnDbGrid Grouping + Summary Problemi


yakup

Recommended Posts

Merhabalar,

**\Demos\Desktop\GridGroupingSummaryGrandTotal daki örneği baz alarak aynısını yapmaya çalışıyorum ancak problemlerim var.

 

1. Sorun, Grid Grup toplamını almıyor.

2021-04-09_13-18-00.jpg

 

2.sorun Kategorilendirmeler hatalı olşuyor aynı kategoriye ait kayıtlar farklı gruplarda gösteriliyor.

2021-04-12_15-51-51.jpg

 

 

procedure TYeniMusteriForm.PriceDbGridColumnSummary(Column: TUniDBGridColumn;
  GroupFieldValue: Variant);
var
  F: Real;
begin
  if SameText(Column.FieldName, 'Adet') then
  begin
    if Column.AuxValue = NULL then
      Column.AuxValue := 0;
    if Column.AuxValues[1] = NULL then
      Column.AuxValues[1] := 0;

    Column.AuxValue := Column.AuxValue + Column.Field.AsInteger;
    Column.AuxValues[1] := Column.AuxValues[1] + Column.Field.AsInteger;
  end
  else if SameText(Column.FieldName, 'ToplamTutar') then
  begin
    if Column.AuxValue = NULL then
      Column.AuxValue := 0.0;
    if Column.AuxValues[1] = NULL then
      Column.AuxValues[1] := 0;

    F := Column.Field.AsFloat; // * Urunler.FieldByName('Adet').AsInteger;

    Column.AuxValue := Column.AuxValue + F;
    Column.AuxValues[1] := Column.AuxValues[1] + F;
  end;
end;

procedure TYeniMusteriForm.PriceDbGridColumnSummaryResult
  (Column: TUniDBGridColumn; GroupFieldValue: Variant; Attribs: TUniCellAttribs;
  var Result: string);
var
  I: Integer;
  F: Real;
begin
  if SameText(Column.FieldName, 'Adet') then
  begin
    I := Column.AuxValue;
    Result := Format('Toplam Adet: %d', [I]);
    Attribs.Font.Style := [fsBold];
    Attribs.Font.Color := clGreen;
  end
  else if SameText(Column.FieldName, 'ToplamTutar') then
  begin
    F := Column.AuxValue;
    Result := 'Net Toplam: ' + FormatCurr('0,0.00 ', F, FmtSettings) +
      FmtSettings.CurrencyString;
    Attribs.Font.Style := [fsBold];
    Attribs.Font.Color := clNavy;
  end;
  Column.AuxValue := NULL;
end;

procedure TYeniMusteriForm.PriceDbGridColumnSummaryTotal
  (Column: TUniDBGridColumn; Attribs: TUniCellAttribs; var Result: string);
var
  I: Integer;
  F: Real;
begin
  if SameText(Column.FieldName, 'Adet') then
  begin
    I := Column.AuxValues[1];
    Result := Format('Net Toplam: %d', [I]);
    Attribs.Font.Style := [fsBold, fsItalic];
    Attribs.Font.Color := clGray;
  end
  else if SameText(Column.FieldName, 'ToplamTutar') then
  begin
    F := Column.AuxValues[1];
    Result := 'Net Toplam: ' + FormatCurr('0,0.00', F) +
      FmtSettings.CurrencyString;
    Attribs.Font.Style := [fsBold, fsItalic];
    Attribs.Font.Color := clGray;

    ToplamNetTutar := F;
    ToplamNetTutarEdit.Text := FormatCurr('0,0.00', F);
    ToplamNetTutarEditChange(nil);

  end;
end;

 

 

 

Formdaki Grid parametreleri,

      object PriceDbGrid: TUniDBGrid
        Left = 0
        Top = 0
        Width = 1172
        Height = 658
        Hint = ''
        ClicksToEdit = 1
        DataSource = UrunlerDS
        WebOptions.Paged = False
        Grouping.FieldName = 'Category'
        Grouping.FieldCaption = 'Kategori'
        Grouping.Enabled = True
        LoadMask.Message = #220'r'#252'nler Y'#252'kleniyor...'
        ForceFit = True
        Align = alClient
        TabOrder = 0
        Summary.Enabled = True
        Summary.GrandTotal = True
        Summary.GrandTotalAlign = taBottom
        OnColumnSort = PriceDbGridColumnSort
        OnColumnSummary = PriceDbGridColumnSummary
        OnColumnSummaryResult = PriceDbGridColumnSummaryResult
        OnColumnSummaryTotal = PriceDbGridColumnSummaryTotal
        Columns = <
          item
            FieldName = 'Urun'
            Title.Caption = 'Urun'
            Width = 368
            ReadOnly = True
          end
          item
            FieldName = 'Adet'
            Title.Caption = #220'r'#252'n Adet'
            Width = 73
            Editor = AdetSpin
            ShowSummary = True
          end
          item
            FieldName = 'KullaniciAdet'
            Title.Caption = 'Kullan'#305'c'#305' Adeti'
            Width = 92
            ReadOnly = True
          end
          item
            FieldName = 'BirimFiyat'
            Title.Caption = 'Birim Fiyat'
            Width = 115
            ReadOnly = True
          end
          item
            FieldName = 'ToplamTutar'
            Title.Caption = 'Toplam Tutar'
            Width = 141
            ReadOnly = True
            ShowSummary = True
          end
          item
            FieldName = 'Category'
            Title.Caption = 'Category'
            Width = 65
            ReadOnly = True
          end>
      end

 

cevaplar için şimdiden teşekkürler.

Link to comment
Share on other sites

20 hours ago, yakup said:

 

Bir örnek hazırladım kategorilendirme ile ilgili öncelikle buna çözüm bulabilir miyiz

SummaryTest.zip 57.9 kB · 0 downloads

Merhaba

UniDBGrid1ColumnSort eventini bos birakmissiniz. Ornek uygulamaya bakarak onu mutlaka tanimlamaniz lazim.

Ben asagidaki kodu ekleyince hemen calisti.

procedure TMainForm.UniDBGrid1ColumnSort(Column: TUniDBGridColumn; Direction: Boolean);
begin
  if SameText(Column.FieldName, 'kullanici') then
    dxMemData1.SortedField := 'kullanici';
end;

image.png.a4b83134f72e6d6ff757a024fce4b538.png

Link to comment
Share on other sites

Pardon ara toplam sorunu da bununla ilgili imiş, sıralamayı ekleyince o da düzeldi sıralamayı illaki kategoriye göre mi ayarlamamaz gerekiyor peki.

 

Sıralamayı kategoriden başka bir şey seçince yine bozuluyor , kategorilere göre gruplasın ancak kategorinin sırasını ve kategori içerisindeki ürünlerin sırasını ben belirleyim bunu yapabilir miyim. yukarıdaki örnekte cansel kategorisi en üstte, ama ben  gurkan kategorisinin en üstte olmasını istiyorum mesela

 

Link to comment
Share on other sites

2 hours ago, yakup said:

Pardon ara toplam sorunu da bununla ilgili imiş, sıralamayı ekleyince o da düzeldi sıralamayı illaki kategoriye göre mi ayarlamamaz gerekiyor peki.

 

Sıralamayı kategoriden başka bir şey seçince yine bozuluyor , kategorilere göre gruplasın ancak kategorinin sırasını ve kategori içerisindeki ürünlerin sırasını ben belirleyim bunu yapabilir miyim. yukarıdaki örnekte cansel kategorisi en üstte, ama ben  gurkan kategorisinin en üstte olmasını istiyorum mesela

 

Merhaba

Maalesef dediginiz sey mumkun degil. Bi gruplama yapildiginda gruba gore siralanir.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...