水晶报表导出到PDF的时候报错"参数未设置"该如何解决?

ami_glacier 2005-11-14 11:02:31
从页面往水晶报表中传递了参数以后,该报表生成PDF的时候就会出现"参数未设置"的错误.
如果没有参数则不会出现该问题.

请问各位,有什么解决办法么?
...全文
159 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
ylhyh 2006-03-27
  • 打赏
  • 举报
回复
/// <summary>
/// 报表打印预览
/// </summary>
/// <param name="page">页面对象,传入this即可</param>
/// <param name="strReportName">报表文件名</param>
/// <param name="strCond">报表数据查询条件</param>
/// <param name="enumOrientation">报表打印方向</param>
private void ReportPrint(System.Web.UI.Page page,string strReportName,string strCond,Common.ReportOrientation enumOrientation)
{
string strFileName=page.Server.MapPath("../Reports/Temp")+ "\\"+strReportName.Substring(0,strReportName.LastIndexOf(".",strReportName.Length))+page.Session.SessionID.ToString()+".rpt";

//定义报表文档对象
CrystalDecisions.CrystalReports.Engine.ReportDocument objRepDoc=new CrystalDecisions.CrystalReports.Engine.ReportDocument();

//加载报表模板
objRepDoc.Load(page.Server.MapPath("../Reports")+ "\\"+strReportName,CrystalDecisions.Shared.OpenReportMethod.OpenReportByDefault);

//定义报表页面设置
objRepDoc.PrintOptions.PaperSize=CrystalDecisions.Shared.PaperSize.PaperA4;
string strRepOri="0";
switch(enumOrientation)
{
case Common.ReportOrientation.Default:
objRepDoc.PrintOptions.PaperOrientation=CrystalDecisions.Shared.PaperOrientation.DefaultPaperOrientation;
strRepOri="0";
break;
case Common.ReportOrientation.Portrait:
objRepDoc.PrintOptions.PaperOrientation=CrystalDecisions.Shared.PaperOrientation.Portrait;
strRepOri="1";
break;
case Common.ReportOrientation.Landscape:
objRepDoc.PrintOptions.PaperOrientation=CrystalDecisions.Shared.PaperOrientation.Landscape;
strRepOri="2";
break;
default:
objRepDoc.PrintOptions.PaperOrientation=CrystalDecisions.Shared.PaperOrientation.DefaultPaperOrientation;
break;
}

//定义报表选择器
objRepDoc.RecordSelectionFormula=strCond;

objRepDoc.Refresh();

//定义数据库登录对象
CrystalDecisions.Shared.TableLogOnInfo objLogon=new CrystalDecisions.Shared.TableLogOnInfo();

//设置数据库登录信息
objLogon.ConnectionInfo.ServerName =System.Configuration.ConfigurationSettings.AppSettings["Data Source"].ToString();
objLogon.ConnectionInfo.UserID=System.Configuration.ConfigurationSettings.AppSettings["User ID"].ToString();
objLogon.ConnectionInfo.Password=System.Configuration.ConfigurationSettings.AppSettings["Password"].ToString();

//为报表文档对象设置登录库登录
foreach(CrystalDecisions.CrystalReports.Engine.Table objTab in objRepDoc.Database.Tables)
{
objTab.ApplyLogOnInfo(objLogon);
}

//定义导出目标及目标文件名
CrystalDecisions.Shared.DiskFileDestinationOptions objDiskFileDest=new CrystalDecisions.Shared.DiskFileDestinationOptions();
objDiskFileDest.DiskFileName=strFileName;

//定义导出选项对象
CrystalDecisions.Shared.ExportOptions objExpOpt=new CrystalDecisions.Shared.ExportOptions();
objExpOpt =objRepDoc.ExportOptions;

//指定导出类型
objExpOpt.ExportDestinationType=CrystalDecisions.Shared.ExportDestinationType.DiskFile;

//指定导出目标
objExpOpt.DestinationOptions=objDiskFileDest;

//指定导出格式
objExpOpt.ExportFormatType=CrystalDecisions.Shared.ExportFormatType.CrystalReport;

//传入报表参数值

/*定义离散值*/
CrystalDecisions.Shared.ParameterDiscreteValue pdvYYYYMM=new CrystalDecisions.Shared.ParameterDiscreteValue();

/*给离散值赋值*/
pdvYYYYMM.Value=this.ddlYear.SelectedValue+this.ddlMonth.SelectedValue;

/*定义传值参数*/
CrystalDecisions.Shared.ParameterValues pvsYYYYMM=new CrystalDecisions.Shared.ParameterValues();

/*值传入传值参数*/
pvsYYYYMM.Add(pdvYYYYMM);

/*通过传值参数把离散值传入报表对应参数字段当前值*/
objRepDoc.DataDefinition.ParameterFields["YYYYMM"].ApplyCurrentValues(pvsYYYYMM);

//执行导出
objRepDoc.Export();

objRepDoc.Close();

Common.ExeJavaScript(page,"window.open('../PrintView/report_show.asp?ReportFileName="+strFileName.Replace("\\","\\\\")+"&ReportOrientation="+strRepOri+"','','location=no,menubar=no,toolbar=no,width=1020,height=760 ');");
}

4,816

社区成员

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

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