2016-08-16 141 views
1

我试图在Visual Studio 2015中使用rdlc报告生成报告。我希望能够在报表上 这里查找我的数据表中的值,并显示这些结果是我的DataTable: DataTableRDLC在DataTable中查找值

这是SQL示例数据: enter image description here

我需要在“SummaryType”为“Family Summary”的报告的第1页上的文本框中显示摘要字段值。此外,我需要在文本框的后续页面上显示“POST摘要”。

我已经在Visual Studio中以编程方式创建了一个数据集,该数据集将特定申请人的报告所需的所有数据存储在自己的单独数据表中。大多数是单行,如名称,地址,城市等。我的问题是,当涉及到汇总表时,数据表中有多行,但我只需要在整个报表中显示不同的行。例如,我需要在报告的“家庭”部分中仅显示“家庭摘要”,并仅在报告的POST部分中显示“POST摘要”。

是否有可以在RDLC中调用的函数/表达式,它将在摘要数据表中查找值(即“族摘要”)并在我的报表中显示结果?

编辑: 作为一种解决方法,在Visual Studio中,我为每个摘要筛选了我的Summary DataTable,然后在RDLC中创建了一个变量,并为该变量分配了需要显示的值。如果有更好,更高效(正确)的方式,请告诉我。

我的结果是这样的: enter image description here

+0

将过滤的数据传递给报告数据源。例如,如果您使用'BindingSource'作为报表的数据源,请设置'BindingSource'的'Filter'属性。 –

+0

在这里你可以看到一个例子:[RDLC Report:Apply Filter to Report](http://stackoverflow.com/questions/33994830/rdlc-report-apply-filter-to-report?noredirect=1&lq=1) –

回答

0

是否有一个函数/表达式,我可以打电话,将在数据表中查找的数值...?

您可以使用DataTable.Select Method查找符合条件的行。

Dim matchedRows as DataRow() = myDT.Select("[SummaryType]='MySummaryType'") 
If matchedRows.Length > 0 Then 
' extract needed field 
End If 
+0

你可以使用'yourDataTable.DefaultView.RowFilter'来过滤行。如果您使用了'DataTable.Select'方法,则应该将结果行的副本放在一个表中,并将该表用作报表的“DataSource”,否则结果将毫无用处。 –

+0

感谢您的回复,但DataTable包含稍后将在报告中使用的几种不同的摘要类型。这是关于将生成的35页面报告。一个摘要类型将是“MySummaryType”,另一个可能是“YourSummaryType”,另一个可能是“HerSummaryType”等。所有Summary类型都是已知的(静态),但取决于它在报告中的位置,这取决于Summary Type被显示。例如,“MySummaryType”可能放在第3页上,“YourSummaryType”可能放在第8页上。 – Talsiter

+0

@Talister,请在您的问题中明确说明您如何在报告中使用查找值。我假定你将这个值分配给一个“报表参数”,并且这个参数用于一个报表TextBox.Value属性的表达式中。 – TnTinMn