如何使用ReportViewer设计将两个DataTable添加到Tablix

时间:2013-09-13 13:42:56

标签: vb.net datatable reportviewer

我正在尝试使用ReportViewer在报表中向表(tablix)添加两个DataTable。

数据表

  • dtPrograms (名称,描述)
  • dtImprovements (改进)

我将有一个程序列表和每个程序的改进列表。

以下是我正在寻找的一个例子:

ReportViewer goal: Programs with their improvements

我不确定如何设计我的ReportViewer。使用Table(tablix)是一个好方法还是有更简单的方法呢?也许使用Matrix?您将如何设计包含两个DataTable的报告?

2 个答案:

答案 0 :(得分:7)

详细解决方案

我手动创建了一个DataSet(ds),一个DataTable(dtTest)并手动填充了信息。例如:

ds.dtTest.Rows.Add("Test1", "Description 1", "Improvement 1 for Test1")
ds.dtTest.Rows.Add("Test1", "Description 1", "Improvement 2 for Test1")
ds.dtTest.Rows.Add("Test1", "Description 1", "Improvement 3 for Test1")
ds.dtTest.Rows.Add("Test1", "Description 1", "Improvement 4 for Test1")
ds.dtTest.Rows.Add("Test2", "Description 2", "Improvement 1 for Test2")
ds.dtTest.Rows.Add("Test2", "Description 2", "Improvement 2 for Test2")
ds.dtTest.Rows.Add("Test3", "Description 3", "Improvement 1 for Test3")
ds.dtTest.Rows.Add("Test3", "Description 3", "Improvement 2 for Test3")
ds.dtTest.Rows.Add("Test3", "Description 3", "Improvement 3 for Test3")
ds.dtTest.Rows.Add("Test3", "Description 3", "Improvement 4 for Test3")
ds.dtTest.Rows.Add("Test4", "Description 4", "Improvement 1 for Test4")

1。将Tablix添加到报告

New Tablix


2。删除除1列之外的所有列。保留将重复的列

就我而言,我在这里添加了改进栏

Add Improvement column


3。将父组添加到改进列

我右键点击改善单元格并添加组>父组(在行组下)

Add Row Group


4。按名称分组

Group By Name


5。将子组添加到名称列

这是我添加说明的地方

Add Child Group to Name Column


6。添加说明

Add Description

7。删除标题

Remove headers


结果

这是设计:

Design

以下是最终结果: Result

答案 1 :(得分:2)

在报表设计器中,报表项可能只有一个DataSet连接到它。所以说你的Tablix名为“Tablix1”可能只有一个DataSet连接到它。但是,如果您希望在一个Tablix中显示2个数据库表中的数据,请说“Tablix1”,您只需创建一个DataSet(.xsd)文件,在那里创建一个TableAdapter并使用查询加入将您想要的两个所需表放入一个DataSet对象中,然后为报表设计器提供DataSet并将“Tablix1”连接到它。这将允许您(基本上)为1个表提供2个DataSet。

矩阵和表格之间的差异微不足道。如果我没有弄错的话,矩阵适用于你想要Column&行标题和表仅适用于常规列标题。但是,表&在.rdlc报告中,矩阵都是“Tablix”。所以两者之间没有什么大不相同的,一个只是更容易做行标题。