2

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' にキャストできません。"}

4

2 に答える 2

0

2 番目のテーブルを作成し、元のテーブルDataTableのコマンドを使用しSelectてデータを「フィルター処理」できます。

            vwSprintDailyBreakdownDataTable result = new vwSprintDailyBreakdownDataTable();
            DataRow[] res = this.Scrum_MasterDataSet.vwSprintDailyBreakdown.Select("SprintId = 37");

            foreach (DataRow row in res)
            {
                result.ImportRow(row);
            }

            this.vwSprintDailyBreakdownTableAdapter.Fill(result);
            this.reportViewer1.RefreshReport();
于 2013-07-10T07:17:33.583 に答える