現在CrystalrReportsからSSRSにレポートを移行しようとしています。 Imは非常に新しく報告され、haventは以前の報告システムのうちのひとつと協力していました。Reportmigration:CrystalReportsからSSRSへパラメータは適用されますが使用されません
私は1つのメインレポートと、2つのサブレポートを持っています。彼らは正しく働いており、望ましいデータを示しています。 AllFields-ParameterとSelectedId-Parameterの2つのパラメータがあります。
AllFieldsは、datarowごとに空のフィールドを残す必要があるかどうかを示します。 SelectedIdは、ビューアで選択されたデータローを通知します。そのため、レポートはその特定のデータに関するもののみになります。
コードをデバッグすると、正しいパラメータが適用されます。私が何を選択しても、なぜ彼がまだすべてのデータを処理しているのか全く分かりません。
これは、レポートの下にC#のコードです:私は逃したか間違ってやっていること
public HauptformularReportForm(DataTable themen, GespraechprotokollDAO gespraechprotokollDao, GrundlagendokumenteDAO grundlagendokumenteDao, bool onlyFilledFiels, int themaId)
: this()
{
themaDS = new ReportDataSource("DataSet1", themen);
// fill themen to display
bewertungDS = ComputeAndFillBewertungs(themen);
// display all fields = also empty ones
ReportParameter rp = new ReportParameter("AllFields", (!onlyFilledFiels).ToString());
// -1 means all themen
tid = new ReportParameter("SelectedId", themaId.ToString());
parameterList = new List<ReportParameter>();
parameterList.Add(rp);
parameterList.Add(tid);
this.crystalReportViewer.LocalReport.SetParameters(parameterList);
this.crystalReportViewer.LocalReport.DataSources.Clear();
this.crystalReportViewer.LocalReport.DataSources.Add(themaDS);
this.crystalReportViewer.LocalReport.DataSources.Add(bewertungDS);
this.crystalReportViewer.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(SetSubDataSource);
//this.crystalReportViewer.LocalReport.Refresh();
this.crystalReportViewer.RefreshReport();
}
public void SetSubDataSource(object sender, SubreportProcessingEventArgs e)
{
// display all fields = also empty ones
e.DataSources.Add(themaDS);
e.DataSources.Add(bewertungDS);
}
/// <summary>
/// The report will only display the given thema
/// </summary>
/// <param name="themaId"></param>
public void DisplaySingleThema(int themaId)
{
tid.Values.Clear();
tid.Values.Add(themaId.ToString());
parameterList.Add(tid);
}
/// <summary>
/// Compute the average Bewertungs for all given themen,
/// fill a DataTable with the computed averages and use is as datasource in the report.
/// </summary>
/// <param name="themen"></param>
private ReportDataSource ComputeAndFillBewertungs(DataTable themen)
{
HauptformularReportDataSet.BewertungDataTable bewertungDataTable = new HauptformularReportDataSet.BewertungDataTable();
// get bewertungs of all themen
Dictionary<int, IList<IFrageWithBewertung>> dictionary = BewertungsExtractor.Extract(themen);
// fill table with thema_id and computed bewertung
foreach (KeyValuePair<int, IList<IFrageWithBewertung>> themaBewertung in dictionary)
{
HauptformularReportDataSet.BewertungRow row = bewertungDataTable.NewBewertungRow();
row.THEMA_ID = themaBewertung.Key;
row.BewertungOfAllFragen = BewertungAverageComputer.ComputeAverage(themaBewertung.Value);
row.BewertungOfFragenWithStatus = BewertungAverageComputer.ComputeAverage(themaBewertung.Value, true);
bewertungDataTable.AddBewertungRow(row);
}
// set datasource in report
report.Database.Tables["Bewertung"].SetDataSource(bewertungDataTable as DataTable);
return new ReportDataSource("DataSet2", bewertungDataTable as DataTable);
}
}
?私のパラメータが正しく適用されるのはなぜですか(私はデバッガで正しい値を参照します)。