水晶报表的参数传递

junjier 2010-12-16 12:18:26
说我的需求吧。

一个winform窗体上有三个控件 :TextBox1 Button1 CrystalReportViewer1

我现在想实现的是,在 TextBox1 中输入日期之后,点击Button1,会调用一个方法,给报表加载数据。

我的主报表和子报表的数据源都是存储过程。

主报表存储过程的调用参数 是 [color=#339966日期 ][/color]
子报表存储过程的调用参数有两个: 是 [color=#008000日期 类型][/color]



我现在胡诌的代码是这样,当然不能运行。请教各位,主报表的列值如何作为参数传递给子报表?


string[] paraNames = {"cs_ny"};//"cs_ny"
string[] paraValues = {time};//"201009"



DataTable dt = null;

DataBase db = new DataBase();
dt = db.GetTableFromProc("pk_zykdb.p_zykdb", paraNames, paraValues);



DataTable dt2 = null;
//第二个参数
string[] paraNames2 = { "cs_ny", "cs_cc" };//"cs_ny"
//string[] paraValues = { "201009", "4737", "郑州", "洛阳" };//"201009"
//MessageBox.Show(dt.Columns[1].ToString());
string[] paraValues2 = { year + month,"4737"};
dt2 = db.GetTableFromProc("pk_ccmxdb.p_ccmxdb", paraNames2, paraValues2);
//db.closeDBconn();
this.zongyingkui1.Load(@"C:\work\PTASS_ZZ\src\ptass_main\PTASS\PTASS\zongyingkui.rpt");
this.zongyingkui1.SetDataSource(dt);
this.zongyingkui1.Subreports[0].SetDataSource(dt2);
this.crystalReportViewer1.ReportSource = zongyingkui1;
this.crystalReportViewer1.Refresh();



...全文
86 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
junjier 2010-12-21
  • 打赏
  • 举报
回复
private void   loadData(string rdlcName,string dataSourseName)
{
string fyName = Program.report_itemName;
string cc = Program.report_cc;
string ny = Program.report_ny;

//这个格式化的年月值用于在报表中显示
string ny_Format = ny.Substring(0, 4) + "年" + ny.Substring(4, 2) + "月";

string[] paramName = { "cs_ny", "cs_cc", "cs_xm" };
string[] paramValue = { ny,cc,fyName};
DataTable dt_syfsr = null;
DataBase db_syfsr = new DataBase();
dt_syfsr = db_syfsr.GetTableFromProc("pk_jsgcms.p_jsgcms", paramName, paramValue);
db_syfsr.closeDBconn();

this.reportViewer1.LocalReport.ReportEmbeddedResource = rdlcName;

ReportParameter rp_ny = new ReportParameter("show_ny",ny_Format);
ReportParameter rp_cc = new ReportParameter("show_cc", cc);
ReportParameter rp_fyName = new ReportParameter("show_fyName", fyName);
this.reportViewer1.LocalReport.SetParameters(new ReportParameter[] { rp_ny, rp_cc, rp_fyName });

this.reportViewer1.LocalReport.DataSources.Clear();

this.reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource(dataSourseName, dt_syfsr));




//显示报表
this.reportViewer1.RefreshReport();
}
阿双2009 2010-12-16
  • 打赏
  • 举报
回复
zongyingkui1.SetParameterValue("参数名","参数值","子报表名")

其中第三个参数是子报表名,比如我这里的“aaaaaa”

4,820

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧