首页 | 通行证 | 论坛 | BLOG | 书评 | 开发文章 | 人才招聘 | 资讯 | 工具下载 | 源码下载 | 项目交易 | 兴趣小组 | 网友作品 | C语言试题测试 | 资源共享 | ACM题库

注册新会员

请登陆或者注册新用户   用户名    密  码   记住密码  注册新用户  忘记密码了

 您所在位置:论坛首页C# — [原创]给水晶报表传值的两种方式
 本帖地址: http://bbs.pfan.cn/post-274769.html [复制地址] [搜索相关帖子]
  发 新 帖   回 帖   快速回帖
 主题:[原创]给水晶报表传值的两种方式
作者:llg8212
专家分:100
级别:1
 会员信息
 发短消息
 所属BLOG
发表时间:2008-4-30 12:12:00    [回复]  [只看作者帖] [只看得分帖] [只看我的回帖]
楼主
   在设计水晶报表的过程中,对于传值给水晶报表,发现网上很难找到比较全的资料,所以特对此内容进行一下总结,供大家分享.

    如果没有为水晶报表传值,其显示的结果通常为对应数据库表的所有记录,那么怎样才能让水晶报表只显示用户需要的数据呢?这就是给水晶报表传值的问题.解决这个问题有两种方式:给水晶报表传递查询的值和给水晶报表传递用户查询的结果.

    1、给水晶报表传递查询值
    要实现给水晶报表传递查询值,首先在设计报表时,需要在Parameter Fields中添加参数字段(方法为:在Field Explorer面板中,鼠标在Parameter Fields上游击,选择New,自己取一个名字.比如我们数据库中存在一个'日期'的字段,我们添加一个Month用来查询满足Month的值).然后点击菜单项Crystal Reports->Report->Selection Formula->Record,弹出Formula Workshop对话框,编辑查询语句如:Month({tbl_SellMain.日期})={?Month}.{tbl_SellMain.日期}可以通过连接中双击日期字段得到.这样水晶报表设计就完成了.Main Report Preview可以查看报表的显示结果,根据提示输入Month的值后,可以看到显示结果中只有满足用户输入条件的结果了.

    如果在C#中不添加任何代码,在每次显示报表时,都会提示输入Month的信息,那么怎样在程序中传入Month的值呢?

    在C#中添加如下代码.
    using CrystalDecisions.Shared;
    //指定报表对应的报表文件
            crystalReportViewer1.ReportSource = path; //crystalReportViewer1为添加在窗体中的CrystalReportViewer.

            //给报表传值,获得满足条件的查询结果
            ParameterFields paramFields = crystalReportViewer1.ParameterFieldInfo;
        
            ParameterField paramMonth = paramFields["Month"];

            ParameterValues curValues=paramCompany.CurrentValues;
            ParameterDiscreteValue discreteValue = new ParameterDiscreteValue();
            discreteValue.Value = 5;    //5为用户设置的查询,此处表示查询的月份为5月
            curValues.Add(discreteValue);

            crystalReportViewer1.ParameterFieldInfo = paramFields;
这样,显示的结果就仅为5月份的数据.

    2、给水晶报表传递用户查询的结果
    给水晶报表传递查询结果的方式比较直观,在报表设计时也只需要设计好要显示的字段即可.其步骤为:通过SqlDataAdapter获得查询数据,然后填充到一个DataTable对象,然后用此对象填充ReportDocument对象,最后将水晶报表的ReportSource指定为此ReportDocument对象.

    在C#中实现的代码为:
    //生成查询语句
            string select="select * from tbl_SellMain where";
            if (txtName.Text.Trim() != "")
                select += " 公司名称='" + txtName.Text.Trim() + "' and";
            select += " Year(日期)=" + cmbYear.Text + " and";
            select += " Month(日期)=" + cmbMonth.Text;

            SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=GYHR;Integrated Security=True");
            SqlDataAdapter da = new SqlDataAdapter(select, conn);
            DataTable dt=new DataTable();
            da.Fill(dt);

            //这里必须事先申明一个ReportDocument对象   Report,同时加载数据报表   
            ReportDocument rd = new ReportDocument();
            //获取.rpt文件真实路径   
            string path;
            rd.Load(path);
            rd.Database.Tables[0].SetDataSource(dt);   //对应报表设计的第一个数据表
            crystalReportViewer1.ReportSource = rd;
            //crystalReportViewer1.PrintReport();       打印

  最后修改于2008-4-30 13:04:00

 

签名档
知识决定高度,思想创造价值     llg8212@163.com
生命的本质不是索取,而是奋斗  
个人提供软件开发服务,价格优惠 
学习、总结--编程之道
开发、设计、管理--编程之路
1
作者:jzyray
专家分:20400
级别:103级别:103级别:103级别:103级别:103级别:103

发表时间:2008-4-30 13:27:00    [回复]  [引用]
1 楼  
加精鼓励~~

 

签名档
http://www.auwaysoft.com/ref/sun.jpeg       http://www.auwaysoft.com/Images/Auway_medium.png 
Auway Online

永不完结的《柯南》,永远的灰原哀
http://www.auwaysoft.com/ref/sherry.jpeg

.NET项目/作业可以联系本人
请不要不加思考就问别人要代码
C#版FAQ速查   莫忘版规
  此帖尚未评分
作者:fangyuxuan
专家分:0
级别:1

发表时间:2008-6-2 11:40:00    [回复]  [引用]
2 楼  
河北主机托管租用您的最佳选择~^0^~网悦互联

国际级☆☆☆☆超豪华机房最低保证5M,峰值能跑到10M,租用、独享、整柜、托管面谈

1.24小时工程师实时值守、随时提供不限次数的服务器重启或调试服务

2.负责运送、安装并调试接通网络端口

3.协助查找分析服务器硬件问题、为您解决问题提供帮助

4.服务器托管在具有国际级电信级标准的IDC机房里、均为网通电信骨干网带宽

5. 用户可以随时将100M共享带宽根据需要在补足差价以后随时更换成独享10M、100M

6. 机房设施一流,双路市电+ UPS +柴油发电机组

7.允许带宽免费测试24小时、合同签订并且合同金额到帐后24小时内上架

独享带宽:10M\20M\30M\40M\50M\-100M\-1G面谈

10M带宽+1台机器,100M带宽+1个柜[打包]零利润促销中~~ (数量有限赶紧联系13932197456)

河北服务器托管租用 - 石家庄网通电信机房

网悦互联-提供石家庄服务器托管租用

网悦互联咨询热线电话:0311-86666683 86666693

为了第一,唯一,我们一直在努力,用心服务,客户至上

服务器托管到底是选择本地机房还是外地机房呢?

网悦互联- 河北石家庄网通电信豪华机房,专业服务器托管、租用

石家庄想托管服务器和租用整机的朋友必看的贴子!

网悦互联、河北网通电信合作伙伴、为您提供主机托管、主机租用等全方位的服务

联系QQ: 239248293 14662231  

联系电话:0311-86666683 86666693 或 13932197456  贾嘉 

诚接各游戏河北支点,分区运营,服务器合作,游戏推广,有意者联系QQ:1111410

诚招各级代理加盟、免加盟费用、心动不如行动,加盟电话:13932197456

(机不可失,失不再来的啊!如果您心动了,那就不要犹豫,快来联系我们啊)
&华北IDC交流群:486879

 

  此帖尚未评分
[首页] [上页][下页] [尾页]     共有 2 回帖 当前第 1 页(共1页 20帖/页)     跳转至第
  发 新 帖   回 帖   快速回帖   刷新版面

版主管理:  删除此帖   删除回复帖   转贴   置顶   取消精华   强制结帖   >>>进入管理页面


关于本站 - 网站导航 - 广告服务 - 联系站长 - BUG报告 - 友情链接 - 赞助本站
Copyright© 1999-2008 Programfan.com. All Rights Reserved
论坛制作&维护:Hannibal    Email: webmaster@pfan.cn
最佳浏览效果:IE6.0+ 或 FireFox 1.5+ 分辨率:1024*768