SQL Server 2012 データベースからのデータのビューを返すビューがあります。ビューのフィールドの 1 つに「SprintId」があります。
VS2012 を使用した C# WinForms アプリケーションがあり、これにはフォームがあり、そのフォームには reportViewer があります。
実行すると、期待どおりのデータが得られます。
ここで、SprintId 列を特定の値にフィルター処理する必要があります。(だから、追加WHERE SprintId = 37'
)
rdlc ファイルにパラメータを追加するのが正しい方法だと思います。
そこで、「SprintId」というパラメーターを追加し、「Type」を Integer に設定し、さらにデフォルト値の 37 を設定しました。
ただし、このパラメーターを Where 句としてどこに割り当てるかはわかりません。パラメータはありますが、使用していません。そのパラメータをビューに割り当てる場所は?
さらに、フォームからパラメーターを設定する必要があります。そこで、次のコードを追加しました。
ReportParameterCollection reportParameters = new ReportParameterCollection();
reportParameters.Add(new ReportParameter("SprintId", "37"));
this.reportViewer1.LocalReport.SetParameters(reportParameters);
そして、デフォルトのコードは次の直後に実行されます。
this.vwSprintDailyBreakdownTableAdapter.Fill(this.Scrum_MasterDataSet.vwSprintDailyBreakdown);
this.reportViewer1.RefreshReport();
ただし、パラメーター コードを追加するとすぐに、レポートが完全に空白になります。私は何を間違っていますか?
編集:
Romano のコードを試してみました。これが現在使用しているコードですが、実行すると、完全に空白のレポートが表示されます。
var result = new DataTable();
DataRow[] res = this.Scrum_MasterDataSet.vwSprintDailyBreakdown.Select("SprintId = 37");
foreach (DataRow row in res)
{
result.ImportRow(row);
}
this.vwSprintDailyBreakdownTableAdapter.Fill((Scrum_MasterDataSet.vwSprintDailyBreakdownDataTable)result);
this.reportViewer1.RefreshReport();
そして、次の例外をキャッチします: {"型 'System.Data.DataTable' のオブジェクトを型 'vwSprintDailyBreakdownDataTable' にキャストできません。"}