一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

可动态输入参数水晶报表代码实例

时间:2010-07-06 编辑:简简单单 来源:一聚教程网

可动态输入参数水晶报表代码实例
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( " alert( '您已经将报表成功输出到excel文件 ');   window.location.href= 'customrpt.asp教程x '; ");  
                }

关于创建水晶报表原理分析

我们将通过下面的这些步骤来通过pull模式来执行水晶报表  
1.首先创建rpt文件,并使用水晶报表设计接口设置一些必须的数据连接。  
2.拖放一个   crystalreportviewer控件至aspx页面,设置它的属性指定我们上一步创建的.rpt文件。  
3.   在代码中调用databind方法。
创建   .rpt   文件:
1)   在右击”解决方案游览器“,在弹出的菜单中选择”添加“--”添加新项“--> ”crystal   report”    
 
2)   在”crystal   report   库”中选择”作为空白报表“单选按钮,最后单击“确定“。    
 
3)这里将弹出水晶报表设计器。    
 
4)   右击报表中的”详细资料区”,选择“数据库教程”-> “添加/删除数据库... "
5)   在弹出的”数据库专家“中,扩展”ole   db(ado)“选项,此时会弹出另外一个”ole   db(ado)“窗口。
6)   在   "ole   db   (ado) "   弹出窗口中,选择   "microsoft   ole   db   provider   for   sql   server "   然后   "next " 

 

 
7)   指定连接的信息
服务器   :   aspcn   (您的机器是什么名字就写什么)  
用户   id:   sa
密码:
数据库   :   pubs
8)   单击”next“,最后单击”finish“按钮。
9)   这时你就能在”数据库专家“窗口中看到我们选择的数据库。
10)   扩展”pubs“数据库,扩展”表“,选择”stores“表并将其加到”选定的表“区中,单击”ok "按钮。
     
11)   现在在”字段资源浏览器“中就会在左边”数据库字段“区中显示你选择的表,以及表中的字段。
12)   拖放需要的字段进入报表的”详细资料“区。字段名将会自动出现在”页眉“区。如果你想修改头部文字,则可以右击”页眉“区中的文字,选择”编辑文本对象“选项并进行编辑。
 
13)   保存,这样我们就有了一个水晶报表文件。
创建   crystalreportviewer   控件
14)   回到前面的webform中,拖放一个crystal   report   viewer控件到页面中去。
15)   调出crystal   report   viewer控件的属性窗口,选择“databindings "区点击[...]
16)   ”crystal   report   viewer   数据绑定窗口”中,在右边的“可绑定属性”中选择”reportsource“,并选择右下角的“自定义绑定表达式”中指定.rpt文件路径。        
17)   此时你能够从crystal   report   viewer   控件中看到使用一些虚拟数据组成的报表文件的预览。
    注意:在上面的例子中,crystalreportviewer可以在设计时直接调用真实的数据,因为此时数据已经保存。在这种情况下,设计时当没有保存数据时,他是不能显示数据的。取而代这的是显示一些虚拟的数据,只有在执行时才会选取真实的数据。
code   behind   程序设计
18)   在page_load方法中调用databind方法。
执行你的程序  
19)   创建并运行你的程序!

热门栏目