VB.NET / Windows Forms - 从用户输入到DataReport的数据?

时间:2011-07-22 05:40:27

标签: vb.net user-input report

我正在使用VB.NET开发一个Windows窗体应用程序。我目前正在研究DataReport(由Microsoft而不是Crystal)。将DataSet用作DataSource时,一切正常。但我有一个问题,我如何从用户输入将数据放入我的DataReport?优选地,当用户处于打印行为(单击ReportViewer中的打印按钮)时,将弹出一个表单并询问他输入。我正在谈论的那个输入是人的随机名称,我们不必跟踪他们的名字,所以没有理由把它放在数据库上。

这是我的简单设置:

  • MainForm.vb(表格)

    • MyReportViewer(ReportViewer)
  • MyReport.rdlc(DataReport)

  • InputForm(Form)

    • MyInputBox(TextBox)

如果在打印行为中无法做到这一点。也许在MainForm_Load事件或报告生成之前。 我在网上搜了一个小时,但我运气不好。

1 个答案:

答案 0 :(得分:0)

我找到了答案,它叫做ReportParameters。 以下是设置方法:

'Get input from user...
Dim OneParameter As String = InputBox("Enter something to display on report!", "Report Parameter")

'Prepare report parameters... The `SetParameters` requires array of `ReportParameter`...
Dim ReportParameters As New List(Of ReportParameter)
'Add the user input to `ReportParameter` array...
ReportParameters.Add(New ReportParameter("OneParameter", OneParameter, True))

'Set the `ReportParameters` of the `ReportViewer`...
FormWithReportViewer.TheReportViewer.LocalReport.SetParameters(ReportParameters)
FormWithReportViewer.Show()
FormWithReportViewer.Focus()

在DataReport(.rdlc)上,我们必须添加ReportParameters(菜单>报告>报告参数)。应使用相同的名称(OneParameter)来避免错误。我们现在可以在文本框中使用参数,只需添加=Parameters!OneParameter.Value,我们就完成了!

注意:我们必须在呈现报告之前设置报告参数。如果我们无法避免这种情况,请在添加参数后刷新报告,以便更新:

FormWithReportViewer.TheReportViewer.RefreshReport