C报表控件ReportViewer

C报表控件ReportViewerC 报表控件 ReportViewer 例 1 nbsp 启动 VS2005 新建一个窗体项目 命名为 TestProj 在左边的窗体内选择 添加新数据源 或在菜单上操作 添加新数据源 选择后出现对话窗体 选择 数据库 进入 下一步 本数据源以 SqlServer200 所提供的 Northwind 数据库为例 因此在数据库内选择驱动程序为 S

C#报表控件ReportViewer rdlc 例(1)

 

启动VS2005新建一个窗体项目,命名为TestProj

C报表控件ReportViewer

在左边的窗体内选择“添加新数据源”或在菜单上操作“添加新数据源”:

C报表控件ReportViewer

选择后出现对话窗体,选择“数据库”,进入“下一步”:

C报表控件ReportViewer

本数据源以SqlServer2000所提供的Northwind数据库为例,因此在数据库内选择驱动程序为SqlServer,具体操作视所用数据库而定(如果连接为Oracle,建议用Oracle所提供的ODP for .NET,地址:http://www.oracle.com/technology/global/cn/software/tech/windows/odpnet/index.html)。

 

C报表控件ReportViewer

选择数据源后,指定数据库文件,并进行测试,如果连接不通,请检查你的软件设置。

C报表控件ReportViewer

进行下一步,至显示出库文件内的表及视图,然后打开表,并选择其中的Employees,选择完成。

C报表控件ReportViewer

在数据源窗口中显示出所选择表及表内的字段,以备使用。

C报表控件ReportViewer

同时在资源管理器中,也可以看到新增加的数据文件。

C报表控件ReportViewer

2       报表浏览器

在新建的窗体内,放入报表浏览控件:

C报表控件ReportViewer

此报表浏览控件集成了报表查看及打印预览的功能,可直接输出至打印机,也可直接输出至Excel文件或PDF文件,对于喜欢看Excel表格的客户来说,这个报表控件非常不错。关于此报表的来源及台前幕后的各种说法,请自己查询相关的网站。

3       建立报表文件

选中报表浏览器控件后,在控件的右上角会出现一个小三角,点击后,出现一个菜单,选择“设计新报表”或在解决方案资源管理器中添加一个新的报表文件:

C报表控件ReportViewer

双击“报表项”内的“表”,则设计空白表内生成一个表格,我们可以在表格内添加数据项。

C报表控件ReportViewer

此报表的设计方式类似于MS以前的VB下报表设计环境。在报表设计器中,我将一份报表分为五个部分,从上至下为:报表标题区、列标题区、数据显示区、合计及页脚。如果将报表的设计形式显示出页眉及页脚,报表的形式会看得更清楚些:

选择页眉及页脚:

C报表控件ReportViewer

显示结果:

C报表控件ReportViewer

现在开始设计报表:

在“页眉”区内放入一个文本框,将内容更改为“测试报表”,居中,字体放大加粗:

C报表控件ReportViewer

从数据源窗口中选择合适的列,用鼠标拖到报表内的“详细信息”表格上,数据会自动填入:

C报表控件ReportViewer

C报表控件ReportViewer

将设计的报表保存后,返回报表浏览窗口,并为报表浏览器选择我们设计的报表:

C报表控件ReportViewer

选中报表文件后,菜单也有所改变:

C报表控件ReportViewer

再为此报表文件指定数据源,选择数据源:

C报表控件ReportViewer

确定,保存文件并运行测试文件。

4       预览

报表生成后预览如下:

C报表控件ReportViewer

 

是不是很简单?我们也可以对这个简单的报表进行美化,当然,我加上美化的一些功能后,可能效果更差,但此处只是为了演示用法。

Ø         为数据加表格。

在报表设计器中,选择需要加表格框的区域

C报表控件ReportViewer

然后在工具栏中选择边框工具

C报表控件ReportViewer

加什么样的框线根据需要,此处我选择“所有框线”。

C报表控件ReportViewer

看上去比原来的灰线能稍黑一些,在预览时就能看出来了。

Ø         加打印时间显示

加入一个显示打印时间的文本框,在上面按右键,选属性:

C报表控件ReportViewer

在“文件框属性”内,选择“值”后面的表达式生成:

C报表控件ReportViewer

在表达式中选择时间:

C报表控件ReportViewer

不要忘记表达式的前面一定要有一个“=”,如果没有,手工加上一个。为了更符合我们的习惯,前面可以加个说明,如打印时间等,表达式的写法就要稍做改变:还是以“=”开头,后面加上“打印时间:”,再以“&”连接生成的Now函数即可得到我们想要的样子。

C报表控件ReportViewer

Ø         为行加序号

为了演示,我将序号列加在了表格了最后列

加入一个新的列:

C报表控件ReportViewer

在显示序号的列中输入相关的值:

C报表控件ReportViewer

 

在此表达式的后面是Nothing,不是null,不要搞错。

C报表控件ReportViewer

三项功能已经完成,预览:

C报表控件ReportViewer

 

 

 

 

 

C#报表控件ReportViewer rdlc 例(2)

 

比原来漂亮吗?至少实用了一些。

使用RDLC报表(二)–使用自定义数据集


1
新建窗体

C报表控件ReportViewer

2
建立数据源

C报表控件ReportViewer

3
建立报表

 

C报表控件ReportViewer

新的数据报表已经生成,下面开始对数据源进行设置。


4
对报表自动生成的数据源进行设置

 

 

 

 

 

 

选择工具栏 à 报表 à 数据源,选中所要修改的数据源后,用“重命名”对其进行修改,如myds。

C报表控件ReportViewer

修改完成后,确定退出此窗口。

选中报表设计器内的表格,显示属性。将表格的数据集名称更改为上面修改的名称。

C报表控件ReportViewer

如果一个报表文件内只有一个数据源,则表格内的数据值可直接写为“=Fields!字段.Value”的格式,如果包含多个数据源,则要对此字段的取值进行指定,如“=(Fields!字段.value,“数据集名称””。


5
手动生成数据源

手动生成的数据集内必须包含报表文件内设计的字段名称,否则会运行出现错误

生成数据集:

       ///

        /// 报表执行操作

        ///

        ///

        ///

        private void button1_Click(object sender, EventArgs e)

        {

            //取得数据集

            string connstring = “Data Source=.;Initial Catalog=Northwind;Integrated Security=True”;

            System.Data.SqlClient.SqlConnection conn1 = new System.Data.SqlClient.SqlConnection(connstring);

            System.Data.SqlClient.SqlCommand command1 = new System.Data.SqlClient.SqlCommand(“select * from customers”, conn1);

            System.Data.SqlClient.SqlDataAdapter ada1 = new System.Data.SqlClient.SqlDataAdapter(command1);

            DataSet c_ds = new DataSet();

            try

            {

                conn1.Open();

                ada1.Fill(c_ds);

            }

            finally

            {

                conn1.Close();

                command1.Dispose();

                conn1.Dispose();

            }

 

            //为报表浏览器指定报表文件

            this.reportViewer1.LocalReport.ReportEmbeddedResource = “report.Report1.rdlc”;

            //指定数据集,数据集名称后为表,不是DataSet类型的数据集

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

            this.reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource(“myds”, c_ds.Tables[0]));

            //显示报表

            this.reportViewer1.RefreshReport();

        }

运行后的数据显示:

C报表控件ReportViewer

posted on 2006-04-21 19:42 龙少爷 阅读(1189) 评论(8)  编辑 收藏 引用 网摘 所属分类: RDLC报表使用

 

使用RDLC报表(三)–向RDLC报表传入参数

在使用报表向客户展示结果数据时,实时的在报表中显示某些特定的数据是必需的,如:显示的部门、打印的日期等。本文只简单的演示向报表内传入一个字符值。如有其它问题,欢迎讨论。

1、新建一个工程TestReport,一个Form窗体,放入一个TextBox、一个Button按钮,再放入一个ReportViewer控件。 2、在ReportViewer上选择新建一个报表 3、在打开的报表设计器中,选择工具栏的“报表”中的“报表参数”,新加一个参数,名称为content,数据类型为string,确定。 4、在报表设计器的页面上放入一个文本框,在文本框上按鼠标右键->属性,在“文本框属性”窗口中,选择“常规”选项卡内下部的“值”后面的“编辑表达式”按钮(就是那个Fx),在此窗口内,左下框内选择参数,在右下框将会出现在上一步中设置的参数,双击此参数,在上面的框内将出现所需要的表达式:=Parameters!content.Value。保存此报表。报表默认名称为Report1.rdlc。 5、在Form窗体内双击按钮,编写如下代码:

            this.reportViewer1.LocalReport.ReportEmbeddedResource = “TestReport.Report1.rdlc”;             ReportParameter rp = new ReportParameter(“content”, this.textBox1.Text);             this.reportViewer1.LocalReport.SetParameters(new ReportParameter[] { rp });             this.reportViewer1.RefreshReport();

posted on 2007-03-06 14:41 龙少爷 阅读(393) 评论(8)  编辑 收藏 引用 网摘 所属分类: RDLC报表使用

 

使用RDLC报表(四)–钻取式报表

本文内以MSServer自带Northwind库文件内的Customers及Orders这两个表为例,建立两个报表文件,在查询得出Customers的表数据后,点击此表内的CustomerID数据,报表将转入至下一个报表,并显示与之相关的Orders的数据,即VS中所谓的钻取式报表。

1、打开一个工程,并新建一个From,放入一个Button及一个ReportViewer控件。 2、在工程内新建一个数据源,连接到Northwind库文件,显示Customers及Orders这两个表 3、新建一个报表文件,并以表格的形式来显示数据,将Customers表内的CustomerID、CompanyName及Address三个字段放入,形成一份有表头及数据的简单报表,并将此报表保存命名为customerReport 4、再建一个报表文件,与customerReport相同,也以表格的形式来显示报表,将Orders内的OrderID、CustomerID、ShipName及OrderDate四个字段放入表格内,报表保存为orderReport 5、orderReport的数据源根据主报表customerReport的数据来确定数据源的数据,查看表格的数据集名称,我的显示为NorthwindDataSet_Orders,也可以自己另建一个,具体方法见我的《RDLC报表(二)》 6、再打开customerReport报表,将CustomerID设置成为可点击的索引字段,以便转入下一个报表。选择CustomerID字段,按鼠标右键,在”文本框属性“窗口中,选择”导航“选项卡,在下面的”超链接“中选择”跳至报表“,在报表名称中选择”orderReport“,再按下后面的”参数…“按钮,输入一个参数名称,如customerid,参数值选择=Fields!CustomerID.Value。为了与其它数据相区分,可以将此列数据根据自己的习惯改变颜色或加下划线 7、在orderReport中,设置一个报表参数,与CurtomerReprot中的名称相同,以接收父表中传入的参数 8、新建两个取得数据的方法,一个从Customers中取得数据集,另一个从Orders中取得数据集,且带参数。此两个方法可以自己编写类库来实现,也可以在VS的数据集内添加。为了演示方便,我直接使用了Customers的GetData(),并编写了一个Orders的GetDataByCustomerID(@cid)的方法。 9、在From的Button中编写如下代码:         private void button2_Click(object sender, EventArgs e)         {             NorthwindDataSet.CustomersDataTable dt1 = new NorthwindDataSetTableAdapters.CustomersTableAdapter().GetData();             this.reportViewer1.LocalReport.ReportEmbeddedResource = “TestReport.customerReport.rdlc”;             this.reportViewer1.LocalReport.DataSources.Clear();             this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource(“NorthwindDataSet_Customers”, dt1));             this.reportViewer1.RefreshReport();         }

10、使用报表的Drillthrough事件,当选择了钻取项时会发生此事件,给下一个报表取值,代码如下:         private void reportViewer1_Drillthrough(object sender, DrillthroughEventArgs e)         {             LocalReport lp = (LocalReport)e.Report;             string customerid = lp.GetParameters()[“customerid”].Values[0].Trim();

            lp.DataSources.Clear();             lp.DataSources.Add(new ReportDataSource(“NorthwindDataSet_Orders”,                 new NorthwindDataSetTableAdapters.OrdersTableAdapter().GetDataByCustomerID(customerid)));         } 运到结果:

 

运行第一份报表: C报表控件ReportViewer
钻取后运行第二份报表: C报表控件ReportViewer

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/217866.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午8:35
下一篇 2026年3月18日 上午8:35


相关推荐

  • 腾讯ssl 免费证书_手机云证书

    腾讯ssl 免费证书_手机云证书SSL证书和我们日常用的身份证类似,是一个支持HTTPS网站的身份证明,SSL证书里面包含了网站的域名,证书有效期,证书的颁发机构以及用于加密传输密码的公钥等信息,由于公钥加密的密码只能被在申请证书时生成的私钥解密,因此浏览器在生成密码之前需要先核对当前访问的域名与证书上绑定的域名是否一致,同时还要对证书的颁发机构进行验证,如果验证失败浏览器会给出证书错误的提示。SSL证书对于网站数据的安全传输起…

    2025年10月11日
    9
  • 哪个游戏盒子里有JAVA_关于点和盒子游戏的Java minimax

    哪个游戏盒子里有JAVA_关于点和盒子游戏的Java minimax我想建议您完全重新考虑代码.查看代码的问题(以及为什么这里没有很多响应)是很难遵循并且很难调试.例如,什么是gs.getRemainingLines,它究竟做了什么?(为什么剩下的线而不是所有合法的线?)但是,通过一些简化,可以更容易地弄清楚发生了什么并修复它.在抽象层面,minimax只是这个过程:floatminimax_max(GameStateg){if(gisterminal…

    2022年7月7日
    27
  • struts2拦截器和过滤器的区别_ExecuteNonQuery

    struts2拦截器和过滤器的区别_ExecuteNonQuery转自:http://blog.csdn.net/lifuxiangcaohui/article/details/8172956在Struts2开发中,很多人问到,声明过滤器的时候,为什么有的时候用"FilterDispatcher",而有的时候用"StrutsPrepareAndExecuteFilter"?两者都可以正常工作,那区别是什么呢?1.FilterDispatcher例子 …&…

    2022年8月16日
    9
  • oracle进程间共享内存,oracle自动共享内存管理(ASMM)「建议收藏」

    oracle进程间共享内存,oracle自动共享内存管理(ASMM)「建议收藏」oracle自动共享内存管理(ASMM)从Oracle10g开始,Oracle提供了自动SGA的管理(简称ASMM,即AutomaticSharedMemoryManagement)新特性。所谓ASMM,就是指我们不再需要手工设置sharedpool、bufferpool等若干内存池的大小,而是为SGA设置一个总的大小尺寸即可。Oracle10g数据库会根据系统负载的变化,自动调整各个组件的…

    2022年5月4日
    51
  • @MapperScan注解使用

    @MapperScan注解使用1、@Mapper注解:作用:在接口类上添加了@Mapper,在编译之后会生成相应的接口实现类添加位置:接口类上面@MapperpublicinterfaceUserDAO{  //代码}如果想要每个接口都要变成实现类,那么需要在每个接口类上加上@Mapper注解,比较麻烦,解决这个问题用@MapperScan2、@MapperScan作用:指定要变成实现类的接口所…

    2022年6月14日
    236
  • linux防火墙放行端口命令_防火墙端口查看

    linux防火墙放行端口命令_防火墙端口查看首先确保防火墙是开着的#查看防火墙状态systemctlstatusfirewalld#开启防火墙systemctlstartfirewalld防火墙放行端口1.添加端口6666代表端口号firewall-cmd–zone=public–add-port=6666/tcp–permanent2.刷新生效firewall-cm…

    2026年2月14日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号