FlexReport for WinForms
データのグループ化

グループ化は、整理された方法でデータを表示するために最もよく使用される方法です。基本レイアウトの設計が完了したら、特定のフィールドなどの基準に基づいてレコードを区切ることで、読みやすいレポートを作成できます。データをグループ化することで、レコードをグループに分け、グループごとに概要やサマリーデータを表示することができます。グループの区切りは、グループ化式に基づいて行われます。この式は、1 つ以上のレコードセットフィールドに基づいて作成されることが普通ですが、必要に応じてさらに複雑な式にすることもできます。

FlexReport でグループ化を実行するには、C1FlexReport.Groups を使用します。

たとえば、特定の肩書きや役職に該当する従業員の名前をリストすることにします。この場合は、Title(肩書き)でリストをグループ化します。以下の手順は、従業員リストを Title でグループ化する方法を示します。この例では、「FlexReport クイックスタート」で作成したサンプルを使用します。

  1. FlexReport クイックスタートプロジェクトの Form に、C1CheckBox を追加します。
  2. C1CheckBox Name を「groupC1CheckBox」に、Text を「Group Report by Title」に設定します。
  3. CheckedChanged イベントを c1CheckBox1_CheckedChanged という名前で作成します。
  4. 次のコードを追加します。
    Private grp As Group
    Private s As Section
    Private Sub c1CheckBox1_CheckedChanged(sender As Object, e As EventArgs)
        If groupC1CheckBox.Checked Then
            ' 従業員を役職でグループ化し、役職を昇順にソートします         
            grp = C1FlexReport1.Groups.Add("GrpTitle", "Title", SortEnum.Ascending)
            ' 新しいグループのヘッダーセクションを書式設定します           
            s = grp.SectionHeader
            s.Height = 1000
            s.Visible = True
            Dim f As New TextField()
            f.Name = "Title"
            f.Text.Expression = "Title"
            f.Left = 0
            f.Top = 0
            f.Width = C1FlexReport1.Layout.Width
            f.Height = 500
            f.Align = FieldAlignEnum.LeftMiddle
            f.Font.Bold = True
            f.Font.Size = 12
            f.Border = New Border(2, Color.Black, DashStyle.Solid)
            f.BackColor = Color.FromArgb(150, 150, 220)
            f.MarginLeft = 100
            s.Fields.Add(f)
            C1FlexReport1.Render()
        Else
              btnEmployees.PerformClick()
        End If
    End Sub
    
    Group grp;
    Section s;
    private void c1CheckBox1_CheckedChanged(object sender, EventArgs e)
            {
                if (groupC1CheckBox.Checked)
                {
                 // 従業員を役職でグループ化し、役職を昇順にソートします         
                    grp = c1FlexReport1.Groups.Add("GrpTitle", "Title", SortEnum.Ascending);
                 // 新しいグループのヘッダーセクションを書式設定します           
                    s = grp.SectionHeader;
                    s.Height = 1000;
                    s.Visible = true;
                   
                    TextField f = new TextField();
                    f.Name = "Title";
                    f.Text.Expression = "Title";
                    f.Left = 0;
                    f.Top = 0;
                    f.Width = c1FlexReport1.Layout.Width;
                    f.Height = 500;
                    f.Align = FieldAlignEnum.LeftMiddle;
                    f.Font.Bold = true;
                    f.Font.Size = 12;
                    f.Border = new Border(2, Color.Black, DashStyle.Solid);
                    f.BackColor = Color.FromArgb(150, 150, 220);
                    f.MarginLeft = 100;
                    s.Fields.Add(f);
                    c1FlexReport1.Render();                                
                }
                else
                {
                    btnEmployees.PerformClick();
                }
            }
    
  5. プロジェクトを実行します。[Employees]ボタンをクリックして、レポートをレンダリングします。
  6. [Title でレポートをグループ化]チェックボックスをクリックして、レポートにグループを表示します。役職が昇順にソートされていることを確認します。
    Grouping Data in FlexReport