一起学习水晶报表之推模式【弱类型的DataSet实现显示报表数据】(课程5)

本文主要是介绍一起学习水晶报表之推模式【弱类型的DataSet实现显示报表数据】(课程5),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前面我们都是通过拉模式进行数据访问和显示,这里,将带大家一起来学习强大的推模型,实现报表功能。

我们知道在拉模式中,报表会根据需要显示的表和字段,首先需要进行所有字段和表进行查询,如果用户需要针对性地筛选数据,那么再从已经查到的数据中才进行筛选,这样看来,拉模式是不是太浪费系统资源了,进而也影响了系统的性能。我们这样想,是否可以通过先查询到用户想要的数据,然后直接显示到报表中,这样是不是就省去了先查找所有数据这一步骤,当数据复杂和繁多的时候,推模式是那么的犀利和便捷,因此我在这里也推荐大家采用【推模式】,使用代码进行访问和实现,真的是太灵活了。废话不说了,马上进入方法,实践才是硬道理。

在这里,我首先教新手一个快速获取报表模板中的SQL语句方法:


如图,打开报表rpt模板文件,选择【数据库字段】>>【鼠标右键】选择【显示SQL查询(w)】。这样就直接获取SQL的查询语句了。


【1】前面我们获取了SQL查询语句,但是该SQL语句并不是能够让C# 后台代码访问数据的合法语句,因此,需要的修改为合法的语句方能使用。这个我在这里就不多讲了,相信大家都懂的。我的方法是将刚才的语句复制到SQL Server中,进行验证。如图:


【2】进行报表模板的设计;

方法如前面一样,添加>>新建项>>Reporting>>Crystal Report报表,我不啰嗦了,这里我选择【作为空白报表】,如图:


没关系的,只不过报表向导有个导向过程,其实选择空白报表也是可以在后面添加表和字段的,自己琢磨研究。方法还是一样,选择对应的报表模板rpt,【数据库字段】>>【数据库专家】>>这样是不是就是可以添加了。方法相信大家都懂了。

【3】由于这里采用的是【推模式】,那么我就不用内置驱动来导入数据字段信息了,否则又是【拉模式】了。怎么办呢,有几种方法哦:

(1)采用刚才已经获取的SQL查询语句命令,如图:


这里选择:【创建新连接】>>【OLE DB】>>【你的数据库】>>【添加命令】>>双击,便弹出窗口【将命令添加到报表】

在该窗口输入刚才的SQL语句命令即可。【确定】>保存


【4】然后就是拖动字段进行设计报表模板了。不多说,自己美工去。

【5】在网页页面拖动水晶报表控件,这个和前面一样,这里也不多说了。

【6】这里我也不建立什么三层架构的,简单点吧,建立一个类,进行访问数据。如下:

public class CommonCode
    {
        public static DataTable GetData()
        {
            String connString = @"server=.;uid =sa;pwd = admin@123456;database = 北风贸易";
            using (SqlConnection conn = new SqlConnection(connString))
            {
                SqlDataAdapter da = new SqlDataAdapter(@"SELECT 产品资料.产品编号, 产品资料.供应商编号, 产品类别.类别名称, 供应商.供应商, 产品资料.类别编号
 FROM   (北风贸易.dbo.产品资料 产品资料 INNER JOIN 北风贸易.dbo.产品类别 产品类别 ON 产品资料.类别编号=产品类别.类别编号) INNER JOIN 北风贸易.dbo.供应商 供应商 ON 产品资料.供应商编号=供应商.供应商编号
",conn);
                //da.SelectCommand.Parameters
                DataSet ds = new DataSet();
                da.Fill(ds);
                return ds.Tables[0];
            }
        }

    }

当然,这里您也可以用Dataset类型,只不过到调用过程中,用ds.Tables[0]就可以了。

【7】然后页面后台写代码访问:

public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            CrystalReport2 rptDoc = new CrystalReport2();


       
    rptDoc.SetDataSource(CommonCode.GetData());  //获取数据源


            CrystalReportViewer1.ReportSource = rptDoc;

        }
    }

这是因为,我们使用推模式,已经在前面那个CommonCode类中获取了用户登录数据库信息。因此就可以省略了前面那些拉模式的代码,不用每次都要给表赋予用户登录数据库信息。

【8】编译,运行成功。




这篇关于一起学习水晶报表之推模式【弱类型的DataSet实现显示报表数据】(课程5)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/976855

相关文章

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

Java实现文件图片的预览和下载功能

《Java实现文件图片的预览和下载功能》这篇文章主要为大家详细介绍了如何使用Java实现文件图片的预览和下载功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... Java实现文件(图片)的预览和下载 @ApiOperation("访问文件") @GetMapping("

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio