Несколько вопросов по объекту Matrix
Пример.
У меня есть некая таблица с повторяющимися значениями:
У меня есть некая таблица с повторяющимися значениями:
data.Rows.Add(new object[] { "Elem 1", "Group 1", 25 });
data.Rows.Add(new object[] { "Elem 1", "Group 1", 25 });
data.Rows.Add(new object[] { "Elem 1", "Group 1", 25 });
Все работает нормально при функции "Сумма" для кросс-таблицы. При задании функции "Количество" движок в самих ячейках все равно выводит сумму. Количество считает в итогах, но только для неповторяющихся значений (в этом примере он выведет единицу). Вот код примера:<?xml version="1.0" encoding="utf-8"?>
<Report ReportInfo.Created="04/15/2009 17:58:18" ReportInfo.Modified="04/15/2009 18:03:59" ReportInfo.CreatorVersion="1.0.201.0">
<scriptText>using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows.Forms;
using System.Drawing;
using System.Data;
using FastReport;
using FastReport.Data;
using FastReport.Dialog;
using FastReport.Barcode;
using FastReport.Table;
using FastReport.Utils;
namespace FastReport
{
public class ReportScript
{
private void ReportTitle1_BeforePrint(object sender, EventArgs e)
{
DataTable data = new DataTable();
data.Columns.Add("name", typeof(string));
data.Columns.Add("group", typeof(string));
data.Columns.Add("value", typeof(int));
// 3 значения !!
data.Rows.Add(new object[] { "Elem 1", "Group 1", 25 });
data.Rows.Add(new object[] { "Elem 1", "Group 1", 25 });
data.Rows.Add(new object[] { "Elem 1", "Group 1", 25 });
data.Rows.Add(new object[] { "Elem 2", "Group 2", 25 });
data.Rows.Add(new object[] { "Elem 3", "Group 3", 25 });
data.Rows.Add(new object[] { "Elem 4", "Group 4", 25 });
Report.RegisterData(data, "data");
}
}
}
</ScriptText>
<Dictionary>
<TableDataSource Name="data" ReferenceName="data" Enabled="true">
<Column Name="name" DataType="System.String"/>
<Column Name="group" DataType="System.String"/>
<Column Name="value" DataType="System.Int32"/>
</TableDataSource>
</Dictionary>
<ReportPage Name="Page1">
<ReportTitleBand Name="ReportTitle1" Width="718.2" Height="198.45" BeforePrintEvent="ReportTitle1_BeforePrint">
<MatrixObject Name="Matrix1" Left="37.8" Top="66.15" Width="160.51" Height="58.68" FixedRows="1" FixedColumns="1" DataSource="data">
<MatrixColumns>
<Header Expression="[data.group]"/>
</MatrixColumns>
<MatrixRows>
<Header Expression="[data.name]"/>
</MatrixRows>
<MatrixCells>
<Cell Expression="[data.value]" Function="Count"/>
</MatrixCells>
<TableColumn Name="Column1" Width="54.46" AutoSize="true"/>
<TableColumn Name="Column2" Width="57.5" AutoSize="true"/>
<TableColumn Name="Column3" Width="48.55" AutoSize="true"/>
<TableRow Name="Row1" Height="19.56" AutoSize="true">
<TableCell Name="Cell1" Border.Lines="All" Text="name" HorzAlign="Center" VertAlign="Center" Font="Arial, 10pt, style=Bold"/>
<TableCell Name="Cell2" Border.Lines="All" Text="[group]" HorzAlign="Center" VertAlign="Center" Font="Arial, 10pt, style=Bold"/>
<TableCell Name="Cell7" Border.Lines="All" Text="Итого" HorzAlign="Center" VertAlign="Center" Font="Arial, 10pt, style=Bold"/>
</TableRow>
<TableRow Name="Row2" Height="19.56" AutoSize="true">
<TableCell Name="Cell3" Border.Lines="All" Text="[name]" HorzAlign="Center" VertAlign="Center" Font="Arial, 10pt, style=Bold"/>
<TableCell Name="Cell4" Border.Lines="All" Text="[value]" HorzAlign="Right" VertAlign="Center"/>
<TableCell Name="Cell8" Border.Lines="All" HorzAlign="Right" VertAlign="Center"/>
</TableRow>
<TableRow Name="Row3" Height="19.56" AutoSize="true">
<TableCell Name="Cell5" Border.Lines="All" Text="Итого" HorzAlign="Center" VertAlign="Center" Font="Arial, 10pt, style=Bold"/>
<TableCell Name="Cell6" Border.Lines="All" HorzAlign="Right" VertAlign="Center"/>
<TableCell Name="Cell9" Border.Lines="All" HorzAlign="Right" VertAlign="Center"/>
</TableRow>
</MatrixObject>
</ReportTitleBand>
</ReportPage>
</Report>
Комментарии
Спасибо.
2) добавлю,
3) так нельзя. Сортируйте данные до подачи в матрицу, при этом сортировку в матрице можно отключить.