Visual Studio 2010 と C# を使用して、2 つのデータベースにクエリを実行し、サブレポートも含むレポートを生成するアプリケーションを構築しています。メイン レポートは、サブレポートに 3 つのパラメーターを渡しています。サブレポートは、メイン レポートのすべてのレコードで空白になっていました。このため、NoRowsMessage を「Nothing Returned」に設定して、サブレポートが実際に表示されていることを確認しました。サブレポートが空白になる代わりに、メッセージが返されるようになりました。データをプレビューし、パラメーターの値を入力して、tableadapter をテストしました。結果は問題なく表示されます。私の推測では、何らかの理由でパラメーターがサブレポートに正しく渡されていません。null 値を許可し、空白値も許可するようにパラメーターを設定しようとしました。何も変わりません。LocalReport を設定しました。SubreportProcessing を新しい SubreportProcessingEventHandler に変更します。サブレポートのイベント ハンドラーにデータソースを設定しました。何が欠けているのかわからない。どんな提案も役に立ちます。
メインフォームのコードは次のとおりです
private void JointAgreement_Load(object sender, EventArgs e) { // TODO: このコード行は、データを「termLookup.ACADEMICCALENDAR」テーブルにロードします。必要に応じて移動または削除できます。this.aCADEMICCALENDARTableAdapter1.Fill(this.termLookup.ACADEMICCALENDAR); // TODO: このコード行は、データを「yearLookup.ACADEMICCALENDAR」テーブルにロードします。必要に応じて移動または削除できます。this.aCADEMICCALENDARTableAdapter.Fill(this.yearLookup.ACADEMICCALENDAR); }
private void button1_Click(object sender, EventArgs e)
{
string year = comboBox1.Text;
string term = comboBox2.Text;
Classes.Functions.GetStudentList(year, term);
List<ReportParameter> paramList = new List<ReportParameter>();
paramList.Add(new ReportParameter("Year", year, false));
paramList.Add(new ReportParameter("Term", term, false));
reportViewer1.LocalReport.SetParameters(paramList);
reportViewer1.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(SetSubDataSource);
this.joint_Agreement_InfoTableAdapter.Fill(this.jointAgreementInfo.Joint_Agreement_Info);
this.reportViewer1.RefreshReport();
}
public void SetSubDataSource(object sender, SubreportProcessingEventArgs e)
{
e.DataSources.Add(new ReportDataSource("StudentDetail", tRANSCRIPTDETAILBindingSource));
}