在crystalReport(水晶报表)动态输入参数(转)

转载 2004年09月16日 22:30:00
命名空间为:using CrystalDecisions.Shared        

private void BuildReportViewerParameters(CrystalDecisions.Web.CrystalReportViewer rptViewer, Hashtable ParamTable)
        {
            //定义报表视图的参数的方法
            ParameterFields ParamFields = new ParameterFields();
            foreach (object key in ParamTable.Keys)
            {
                ParameterField ParamField = new ParameterField();
                ParameterValues ParamValues = new ParameterValues();
                ParameterDiscreteValue ParamValue = new ParameterDiscreteValue();
                ParamValue.Value = ParamTable[key].ToString();
                ParamValues.Add(ParamValue);
                ParamField.ParameterFieldName = key.ToString();
                ParamField.CurrentValues = ParamValues;
                ParamFields.Add(ParamField);
            }
            rptViewer.ParameterFieldInfo = ParamFields;
        }

        private void BuildReportClassParameters(CrystalDecisions.CrystalReports.Engine.ReportClass rpt, Hashtable ParamTable)
        {
            //定义报表类的参数的方法
            foreach (object key in ParamTable.Keys)
            {
                ParameterValues ParamValues = new ParameterValues();
                ParameterDiscreteValue ParamValue = new ParameterDiscreteValue();
                ParamValue.Value = ParamTable[key].ToString();
                ParamValues.Add(ParamValue);
                rpt.DataDefinition.ParameterFields[key.ToString()].ApplyCurrentValues(ParamValues);
            }
        }
        
        protected void BuildReportParameters(CrystalDecisions.Web.CrystalReportViewer rpt,Hashtable ParamTable)
        {
            //定义报表参数的方法
            ParameterFields ParamFields = new ParameterFields();

            foreach(object key in ParamTable.Keys)
            {
                ParameterField ParamField;
                ParameterValues ParamValues;
                ParameterDiscreteValue ParamValue;

                ParamField = new ParameterField();
                ParamValues = new ParameterValues();
                ParamValue = new ParameterDiscreteValue();

                ParamValue.Value = (string)ParamTable[key];
                ParamValues.Add(ParamValue);
                ParamField.ParameterFieldName=(string)key;
                ParamField.CurrentValues = ParamValues;
                ParamFields.Add(ParamField);
            }
            rpt.ParameterFieldInfo = ParamFields;
        }  


然后再你的需要调用参数的地方,加如下引用:

private void Button_output_Click(object sender, System.EventArgs e)
        {
            CrystalDecisions.Shared.TableLogOnInfo logInfo = new CrystalDecisions.Shared.TableLogOnInfo();  //设置报表的登录信息
            logInfo.ConnectionInfo.ServerName = "ANGEL";  //设置报表与库的连接信息
            logInfo.ConnectionInfo.DatabaseName = "KaoQin";
            logInfo.TableName = "Emstatistic";
            logInfo.ConnectionInfo.UserID = "sa";
            logInfo.ConnectionInfo.Password = "";
            CrystalReportViewer1.ReportSource = Server.MapPath("cr_aa.rpt"); //指定报表的数据源
            CrystalReportViewer1.LogOnInfo.Add(logInfo);//对参数进行赋什值
    //        CrystalReportViewer1.DataBind();

            //声明变量并获取导出选项
            cr_aa myReport = new cr_aa();  //定义一个名为myReport的报表
            myReport.Database.Tables[0].ApplyLogOnInfo(logInfo);  
            CrystalReportViewer1.ReportSource = myReport;
            CrystalReportViewer1.DataBind();   

            Hashtable t = new Hashtable();    
            t.Add("p_st_month", Textmonth.Text);  //为参数赋值
            BuildReportParameters(CrystalReportViewer1, t);  //调用建立报表参数的方法  
            BuildReportViewerParameters(CrystalReportViewer1, t);   //给报表浏览器添加参数
            BuildReportClassParameters(myReport, t);  //给报表类添加参数   

            CrystalDecisions.Shared.DiskFileDestinationOptions diskOpts = new CrystalDecisions.Shared.DiskFileDestinationOptions();
            //设置导出格式
            myReport.ExportOptions.ExportDestinationType = CrystalDecisions.Shared.ExportDestinationType.DiskFile;
            myReport.ExportOptions.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.Excel;
            //设置磁盘文件选项
            diskOpts.DiskFileName = "C://Documents and Settings//Administrator//My Documents//kaoqin_rpt.xls";   
            myReport.ExportOptions.DestinationOptions = diskOpts;
            myReport.Export();
            Response.Write("<script language='javascript'>alert('您已经将报表成功输出到Excel文件'); window.location.href='customRpt.aspx';</" + "script>");
        }

【水晶报表之图片篇-c】 CR 11版本动态加载的另一种简单方案

2005年我在《水晶报表中如何动态加载图片(图片文件版本及数据库版本)》 提供的方法中,用了编程的方法,虽然也实现了,但是比较繁琐 地址: http://www.cnblogs.com/baby...
  • findsafety
  • findsafety
  • 2015年03月24日 16:09
  • 2802

水晶报表动态加载磁盘图片

1、首先,我们先创建一个DataSet.xsd文件,如下图所示,这是一个表 2、查看此表的代码,注意字段LIMG的数据类型为base64Binary。...
  • lovegonghui
  • lovegonghui
  • 2017年03月09日 11:26
  • 606

Vs13 开发水晶报表

开发工具我们选用目前主流的VS2013。需要安装开发包CRforVS_13_17.exe。这里我提供一个下载地址,方便大家下载安装。http://scn.sap.com/docs/DOC-7824首先...
  • yhd0916
  • yhd0916
  • 2016年07月29日 10:42
  • 1867

水晶报表中让行高自适应高度(即根据内容的来适应高度)

1、在水晶报表打印中,有些内容可能占两行、三行、四行内容,但有些内容仅占一行内容,如果固定行高,会造成纸张的很大的浪费,如下图所示 2、如上图所示,零件型号、名称、规格三列超出一行内容,怎么让内...
  • lovegonghui
  • lovegonghui
  • 2017年04月22日 15:00
  • 735

水晶报表制作实例

水晶报表貌似是比较“古老”的报表技术了,它是由SAP公司开发的报表产品,通过安装开发包可以在VS中集成Crystall Reports设计器。通过可视化的设计和操作,可以完成报表的制作。正好最近有空帮...
  • guwei4037
  • guwei4037
  • 2015年04月22日 15:23
  • 7611

[水晶报表]水晶报表的使用经验和资料总结

水晶报表的使用经验和资料总结资料: Asp.Net中使用水晶报表(上) www.dotnet8.com 2002-9-6 DotNet吧[HTML]在我们对VS.Net中的水晶报表(Cryst...
  • david_520042
  • david_520042
  • 2016年08月17日 09:30
  • 2628

水晶报表文件导出方法小结

近期在做水晶报表时,作者用到了水晶报表文件导出功能。在网上一搜,资料还真多,这些资料不仅多,而且非常的杂乱,让人看得非常不舒服。于是在此将其作了一点汇总和整理,以供大家参考。写的不好,请多包涵。 命...
  • SunCherryDream
  • SunCherryDream
  • 2015年04月29日 18:46
  • 3222

CristalReport(水晶报表)插件整合Eclipse开发

CristalReport(水晶报表) 本身的安装版本是.net专用的开发报表的工具,但目前推出了Eclipse插件,便可以进行Java开发报表了,虽然我们项目没有采用(貌似是因为不支持垂直居中,是不...
  • rainyspring4540
  • rainyspring4540
  • 2015年09月01日 09:38
  • 1933

水晶报表自定义函数进行代码重用 -日期大写

   一般我们可以使用公式来实现一些特殊的功能,但是对于一些需要重复处理的情况 可以使用自定义函数来实现 进入公式编辑界面 ,可以看到在左上角有两个项目: 报表自定义函数和储备库自定...
  • xpx1290
  • xpx1290
  • 2016年06月17日 11:57
  • 533

VS.NET2010水晶报表安装部署[VS2010]

水晶报表VS2010版IDE安装标准版SAP Crystal Reports, version for Visual Studio 2010 - Standard: 下载地址: http://dow...
  • jsjpanxiaoyu
  • jsjpanxiaoyu
  • 2015年01月03日 10:27
  • 11216
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在crystalReport(水晶报表)动态输入参数(转)
举报原因:
原因补充:

(最多只允许输入30个字)