我正在使用C#在Visual Studio 2010中构建Crystal Report。我的报告必须包含子报告。当我单独运行我的报告时,它工作得很好,但是当我添加子报告时,我立即得到对话框窗口,说“您请求的报告需要更多信息”我只能输入名称和密码,数据库名称字段是只读的。当我输入信息时,它会加载几秒钟然后再次出现
我的原始报告和子报告使用的是不同的存储过程,这些存储过程放在一个DataSet 中,每个报告都连接到自己的存储过程。当我只运行主报表时它运行正常,但是当添加子报表时,diaglog会重新出现。
我正在将页面连接到这样的报告,我现在硬编码所有字段,子报告通过facility_id链接到主报告
SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["chartsdbnewConnectionString"].ConnectionString);
ReportDocument rdoc = new ReportDocument();
cn.Open();
SqlCommand cmd = new SqlCommand("RIV_RPT_CENSUS_ASOFDATE_copy_jenny", cn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@facility_search_ind", 0);
cmd.Parameters.AddWithValue("@facility_id_from", 50);
cmd.Parameters.AddWithValue("@facility_id_to", 50);
cmd.Parameters.AddWithValue("@facility_name_from", ' ');
cmd.Parameters.AddWithValue("@facility_name_to", "zz");
cmd.Parameters.AddWithValue("@Resident_search_ind", 1);
cmd.Parameters.AddWithValue("@Resident_id_from", 0);
cmd.Parameters.AddWithValue("@Resident_id_to", 0);
cmd.Parameters.AddWithValue("@Resident_name_from", "A");
cmd.Parameters.AddWithValue("@Resident_name_to", "ZZZZ");
cmd.Parameters.AddWithValue("@AsOfDate", "2016-01-27");
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable ds = new DataTable();
da.Fill(ds);
rdoc.Load(Server.MapPath("CrystalReport.rpt"));
rdoc.SetDataSource(ds);
Session["ReportDocument"] = rdoc;
crs1.ReportSource = (ReportDocument)Session["ReportDocument"];
crs1.DataBind();
cn.Close();
我花了很多时间在谷歌搜索这个问题,但没有一个解决方案在线工作。我觉得我没有以正确的方式连接我的子报告。我对Crystal Report技术还很陌生。请帮助,这是我第三天的奴役。
答案 0 :(得分:1)
您还需要在子代码中为代码提供数据源。类似的东西:
rdoc.OpenSubreport("my_awesome_subreport.rpt").SetDataSource(ds);