在winform中怎么写动态的数据报表,显示的数据是从数据库中获取的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在winform中怎么写动态的数据报表,显示的数据是从数据库中获取的相关的知识,希望对你有一定的参考价值。

在C#winForm中添加新项,有一项是报表文件。具体的操作可上网查找。
当然也可以使用水晶报表。百度关键字 rdlc
多百度一下,一定能找到。我刚做过winForm报表系统。
参考技术A 你的 意思是数据库的数据显示在winform 一个控件里面吧?
我只会写c# 的追问

呵呵,是的,我现在需要在winform中,写个水晶报表

追答

vs里面有水晶报表吗?虽然我才工作 貌似没听过 其实你用datagridview 一样显示还有你 电脑里面装的什么数据库? 我猜不是 sql severe 就是access

参考技术B 很简单!用Chartlet_Full就可以很简单的做到呢追问

这是个控件吗?我的VS上没有呀

追答

这个控件是开源的!网上自己下载吧

追问

这个好像是写在Web页面里吧,我现在是想在winform里写报表,该怎么写,并且是从数据库中读取数据

参考技术C 师弟,不同版本不同追问

什么意思,你说的我不是太明白,你能说的详细点吗

追答

从网上找

动态列报表的制作

在数据信息系统中,常常会看到这样一类报表需求,它们往往格式简单,一般为列表式明细报表,但是要显示的列很多。而不同终端用户在不同时刻关心的数据又不同,这样就要求报表能够让他们随心所欲的选择要显示的列,以便直观地查看数据。最终效果如下图所示:

技术分享图片

那怎么实现这种需求呢?

多做几个典型报表,根据用户不同进行不同的加载?这样报表开发工作量就增加了,连吃鸡的时间都没有了;

写个存储过程动态计算要显示的表字段?还需要调试存储过程。

有没有更简单高效的实现方法???——当然必须有,下面看我放大招。

工欲善其事,必先利其器。我们选择的利器就是:润乾报表,具体实现操作如下:

首先,在数据集上通过sql实现动态取数

根据需求效果,我们需要定义两个参数,用于接收要显示的表和字段信息:

技术分享图片

对应数据集sql配置如下:

技术分享图片

【技巧】${参数名}为参数的高级用法,可以在报表中动态的进行表达式的替换,快速实现动态执行语句的拼接。

 

然后,在报表单元格表达式中实现动态显示字段

技术分享图片

其中,

B1单元格:=to(1,ds1.fcount()) 并设置扩展方式为横向扩展,用于计算需要显示的列数

B2单元格:=ds1.fname(B1) 跟随B1扩展,用于动态显示列名称

A3单元格:=ds1.select(#0) 根据数据集的行数进行纵向扩展

B3单元格:=ds1.field(B1) 用于动态显示对应字段数据

A列为协助实现效果列,故需要选择该列,设置该列隐藏。

 

最后,我们制作一下参数模板,方便用户选择自己想要显示的表和列数据

技术分享图片

设置B2和D2编辑风格为下拉数据集(数据集为提前准备好的内建数据集),并在D2设置关联过滤,便于用户了解对应表下有哪些字段供选择,进行数据分析。

技术分享图片

好了,一个完美的动态列报表就完成了,我们来回顾一下其中遇到的问题和解决的技巧:

1.数据集sql实现动态取数

【技巧】使用参数的${参数名}用法

2.单元格表达式实现动态显示字段

【技巧】使用数据集函数ds.field()和ds.fieldname()

 

至此,动态列报表制作就完成了,我们仅仅使用了润乾报表的参数特殊用法和数据集函数就做好了动态列报表,这一波操作6不6?快来加入润乾大家庭,更多快速简便的报表制作方式等你来挖掘。


以上是关于在winform中怎么写动态的数据报表,显示的数据是从数据库中获取的的主要内容,如果未能解决你的问题,请参考以下文章

C# Winform reportViewer报表,动态表头能做么?

C# winform 用水晶报表 如何做能显示出图中上面那2行数据?

怎么用图表控件FineReport做图表

winform怎么给fastreport的数据源的表里面自定义的参数赋值?比如select * from 表 where id=@id

winform 添加鼠标移动监听

winform窗体 Treeview控件子节点动态添加图片