2011-07-22 22 views
1

私は、VB.NETを使用してWindowsフォームアプリケーションを開発しています。私は現在、DataReport(Crystalではなく、Microsoft)に取り組んでいます。 DataSetをDataSourceとして使用すると、すべて正常に動作します。しかし、私はどのように私はDataReportにユーザー入力からデータを入れようとしているのですか?ユーザーが印刷行為を行っているとき(ReportViewerの印刷ボタンをクリックする)、フォームがポップアップして入力を求められることが好ましい。私が話しているその入力は、人の名前がランダムであるため、名前を追跡する必要がないので、データベースに入れる必要はありません。VB.NET/Windowsフォーム - ユーザー入力からDataReportへのデータ?

  • MainForm.vb(フォーム)

    • MyReportViewer(レポートビューアー)
  • MyReport.rdlc(DataReportの)

  • は、ここに私の簡単なセットアップですInputForm(フォーム)

    • MyInputBox(テキストボックス)

印刷の行為でそれを行うことは不可能である場合。たぶんMainForm_Loadイベントで、またはレポートの生成ができる前に。 私は1時間ネットを検索しましたが、私は不運です。

答えて

0

回答が見つかりました。これはReportParametersと呼ばれています。ここ がそれを設定する方法は次のとおりです。DataReportの(.rdlc)で

'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() 

を、我々はReportParameters(メニュー>レポート>レポートパラメータ)を追加する必要があります。エラーを回避するには、同じ名前(OneParameter)を使用する必要があります。ここでは、テキストボックスにパラメータを使用できます。=Parameters!OneParameter.Valueと入力するだけです。

注:レポートをレンダリングする前に、レポートパラメータを設定する必要があります。これを回避できない場合は、パラメータを追加した後にレポートを更新して更新してください:

FormWithReportViewer.TheReportViewer.RefreshReport 
関連する問題