Vb.net 如何使用ReportViewer Design向Tablix添加两个数据表

Vb.net 如何使用ReportViewer Design向Tablix添加两个数据表,vb.net,datatable,reportviewer,Vb.net,Datatable,Reportviewer,我正在尝试使用ReportViewer将两个数据表添加到报表中的一个表(tablix) 数据表 DTP程序(名称、说明) 数据传输改进(改进) 我会有一个计划清单和每个计划的改进清单 以下是我正在寻找的一个例子: 我不知道如何设计我的ReportViewer。使用表格(tablix)是一种好方法还是有更简单的方法?也许使用矩阵?如何设计包含两个数据表的报表?在报表设计器中,报表项可能有一个且只有一个数据集连接到它。因此,假设名为“Tablix1”的Tablix可能只有一个数据集连接到它。但

我正在尝试使用ReportViewer将两个数据表添加到报表中的一个表(tablix)

数据表

  • DTP程序(名称、说明)
  • 数据传输改进(改进)
我会有一个计划清单和每个计划的改进清单

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


我不知道如何设计我的ReportViewer。使用表格(tablix)是一种好方法还是有更简单的方法?也许使用矩阵?如何设计包含两个数据表的报表?

在报表设计器中,报表项可能有一个且只有一个数据集连接到它。因此,假设名为“Tablix1”的Tablix可能只有一个数据集连接到它。但是,如果您想在一个tablix中显示来自两个数据库表的数据,只需说“tablix 1”即可创建一个数据集(.xsd)文件,在其中创建一个TableAdapter并使用查询将两个所需的表连接到一个DataSet对象中,然后将该数据集提供给报表设计器,并将“tablix 1”连接到该数据集。这将允许(基本上)一个表有两个数据集

矩阵和表格之间的差别很小。如果我没有弄错的话,矩阵适用于需要列和行标题的情况,而表仅适用于常规列标题。然而,对于.rdlc报告来说,表和矩阵都是“Tablix”。因此,这两者之间没有什么主要区别,一个只是更容易在其上创建行标题。

详细解决方案 我手动创建了一个数据集(
ds
),一个数据表(
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添加到报告中


2.删除除1列以外的所有列。保留将要重复的列 在我的例子中,我在这里添加了改进列


3.将父组添加到“改进”列 我右键单击改进单元并添加组>父组(在行组下)


4.按名称分组


5.将子组添加到“名称”列 这是我添加描述的地方


6.添加说明

7.删除标题


结果 设计如下:

以下是最终结果:

创建一个带有联接查询的数据集,然后将其用作数据源tablix@peterGtablix的工作方式是每次有改进时都会添加名称、描述和改进。理想情况下,我需要在tablix中创建一个tablix。。。但在这种情况下,我不能使用两个数据表。请使用针对这两个表的联接查询创建数据集。这将在每一行中为您提供程序名、描述和改进。然后使用tablix的分组功能根据您的示例创建布局。或者,如果您使用一个列表(对象)作为数据源,就像在其他注释中一样,那么您也可以简单地使用tablix的分组功能来获得所需的布局。@peterG谢谢,您的提示帮助我解决了这个问题。我会找到另一种方法来奖励你的帮助;)如何使用TableAdapter获取数据集中的(对象)列表。。。(对象)列表使我能够拥有一个改进列表。您只需将整个数据集提供给报表,使用从查询中检索到的DataTable创建一个ReportDataSource对象,然后将其提供给报表(如果ReportViewer处于本地模式,而不是远程处理模式,则您可以这样做).是的,我最后就是这么做的。只需要按名称和描述对其进行分组。谢谢你的帮助,伙计。太棒了。@Seva很高兴能帮上忙!