ASP.NET C#学习三(水晶报表插件)

原创 2017年04月08日 23:04:15

概念部分

(1).什么是报表?

用表格、图表等来展示动态的数据。报表=多言的格式+动态的数据

(2).什么是水晶报表(Crystal Reports)?

AP.NET的一系列报表应用组件。

有什么样的数据库访问模式?

1.使用ODBC的驱动程序的数据库

2.使用OLE DB驱动程序的数据库

3.AccessExcel

 

 

水晶报表的使用

(1).水晶报表下载安装(针对vs2013,针对旧版本的一搜一大把):

http://124.205.69.162/files/50470000052E741A/downloads.businessobjects.com/akdlm/cr4vs2010/CRforVS_13_0_18.exe

(2). VS2013安装了水晶报表没反应怎么办?

解决方案:http://bbs.csdn.net/topics/391017532

你试试到工具--》选择工具箱项,在.NET Framework列表里,找到Crystal Reports,前面打钩-确定

水晶报表菜单问题OK了,但使用报表组件,网页加载时又报如下错了怎么办?

报错:0x800a1391 - JavaScript运行时报错:"bobj"未定义

 


 

解决方案:http://www.cnblogs.com/muzinian/p/4721690.html

按这个步骤走完,并且每个用报表组件的.aspx引用crv.js脚本,就OK

(3).报表的访问模式:

提取模式:驱动程序自己去连接数据库,即在.aspx页面创建报表组件指定报表文件作为数据源

推入模式:代码关联指定报表数据源

(4).水晶报表组件用法:

1.先创建一个空的Web窗体;

2.然后创建一个水晶报表文件,Web窗体关联引用这个文件:

如下是水晶报表的使用过程:


 、

但是创建窗体和报表并不等于百分百能用,我用VS2013网页加载时就抛出了"bobj"未定义那个报错,因此除了gif里的.aspx配置,还要耐心的看"3"


 


3.最后,检查修改Web.config配置文件:

黄色部分都是使用完整水晶报表的配置必要项,不过大部分都会在使用报表向导创建报表的过程中自动生成,如下只有蓝色区域是我新添加的。

<?xml version="1.0"?>

<configuration>

  <configSections>

    <sectionGroup name="businessObjects">

      <sectionGroup name="crystalReports">

        <section name="rptBuildProvider" type="CrystalDecisions.Shared.RptBuildProviderHandler, CrystalDecisions.Shared, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, Custom=null"/>

        <section name="crystalReportViewer" type="System.Configuration.NameValueSectionHandler"></section>

      </sectionGroup>

    </sectionGroup>

  </configSections>

  <connectionStrings>

    <add name="WindowsFormsApplication1.Properties.Settings.NorthwindConnectionString"

connectionString="Data Source=.;Initial Catalog=Northwind;Persist Security Info=True;User ID=sa;Password=abc123..."

providerName="System.Data.SqlClient"/>

    <add name="ConnectionString" connectionString="Provider=SQLOLEDB.1;Data Source=STEPHANIE;Persist Security Info=True;User ID=sa;Initial Catalog=MyDB" providerName="System.Data.OleDb"/>

  </connectionStrings>

  <system.web>

    <compilation debug="true" targetFramework="4.5">

      <assemblies>

        <add assembly="CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304" />

        <add assembly="CrystalDecisions.Shared, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304" />

        <add assembly="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304" />

        <add assembly="CrystalDecisions.ReportSource, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304" />

        <add assembly="CrystalDecisions.ReportAppServer.Controllers, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304" />

        <add assembly="CrystalDecisions.ReportAppServer.DataDefModel, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304" />

        <add assembly="CrystalDecisions.CrystalReports.Engine, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304" />

        <add assembly="CrystalDecisions.ReportAppServer.ClientDoc, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" />

        <add assembly="Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91" />

        <add assembly="Microsoft.ReportViewer.Common, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91" />

        <add assembly="Microsoft.Build.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />

      </assemblies>

      <buildProviders>

        <add extension=".rpt" type="CrystalDecisions.Web.Compilation.RptBuildProvider, CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" />

        <add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />

      </buildProviders>

    </compilation>

    <httpRuntime targetFramework="4.5"/>

    <httpHandlers>

      <add path="CrystalImageHandler.aspx" verb="GET" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" />

      <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutrsyal, PublicKeyToken=89845dcd8080cc91"

        validate="false" />

    </httpHandlers>

  </system.web>

  <system.webServer>

    <handlers>

      <add name="CrystalImageHandler.aspx_GET" verb="GET" path="CrystalImageHandler.aspx" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" preCondition="integratedMode"/>

    </handlers>

    <validation validateIntegratedModeConfiguration="false"/>

  </system.webServer>

  <appSettings>

    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true"/>

    <add key="ValidationSettings:UnobtrusiveValidationMode" value="WebForms"/>

    <!--数据库自定义配置参数-->

    <add key="ConnectionSetting" value="Server=.;UID=sa;PWD=********;DataBase=MyDB"/>

  </appSettings>

  <businessObjects>

    <crystalReports>

      <rptBuildProvider>

        <add embedRptInResource="true"/>

      </rptBuildProvider>

      <crystalReportViewer>

        <add key="ResourceUri" value="/aspnet_client/system_web/4_0_30319/crystalreportviewers13"/>

      </crystalReportViewer>

    </crystalReports>

  </businessObjects>

</configuration>

 

4.除了使用组件直接关联指定报表文件展示数据外,还可以代码关联报表组件数据源,即推入模式访问报表:

如下新建一个Web窗体ReportPrintDemo1.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ReportPrintDemo1.aspx.cs" Inherits="Report_ReportPrintDemo1" %>

<%@ Register assembly="CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" namespace="CrystalDecisions.Web" tagprefix="CR" %>

<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

    <title></title>

    <!--使用水晶报表时 添加文crv文件引用,否则报bobj空对象-->

    <script src='<%=ResolveUrl("~/crystalreportviewers13/js/crviewer/crv.js")%>'type="text/javascript"></script>

</head>

<body>

    <form id="form1" runat="server">

        <!--添加一个空的报表组件,代码中去关联铺页面-->

        <CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" AutoDataBind="true" OnInit="CrystalReportViewer1_Init" />

    </form>

</body>

</html>

其中黄色部分加粗并圈黄的是新加的部分。类型为CrystalReportViewer的组件在工具箱拖过来的如图:

 

 

 

然后去页面ReportPrintDemo1.aspx的对应逻辑类ReportPrintDemo1.aspx.cs编写报表数据源的绑定,其中以下紫色圈起来的部分比较重要。实现了加载我们刚刚建好的报表文件并将查询结果填到报表文件。最后将界面报表组件和报表数据关联起来。完整代码如下:

using System;

using System.Configuration;

using System.Data.SqlClient;

using CrystalDecisions.CrystalReports.Engine;//ReportDocument的命名空间

//备注:通过代码的方式关联报表数据源

public partial class Report_ReportPrintDemo1 : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        //使用CrystalReportDemo.rpt报表文件将表查询结果铺到CrystalReportViewer1空间上

        string connstr = ConfigurationManager.AppSettings["ConnectionSetting"].ToString();

        SqlConnection conn = new SqlConnection(connstr);

        conn.Open();

        try

        {

            SqlDataAdapter sda = new SqlDataAdapter("select * from table_2 order by student_id", conn);

            DataSet ds = new DataSet();

            sda.Fill(ds, "table_2");

            ReportDocument rd = new ReportDocument();

            //相对路径加载

            rd.Load(Server.MapPath(@"Report\PrintDemo1\CrystalReportDemo1.rpt"));

            //绝对路径加载                           //rd.Load(@"E:\Documents\Code\ASPDNet\WebStudy2\Report\PrintDemo1\CrystalReportDemo1.rpt");

            rd.SetDataSource(ds);

            this.CrystalReportViewer1.ReportSource = rd;

        }

        catch (System.Exception ex)

        {

            Response.Write(ex.Message);

        }

        finally

        {

            conn.Close();

        }

    }

}

 

水晶报表的其他知识

报表文件有很多配置选项:指定检索条件、分组、排序等等。

 

抑制显示

formula 抑制显示字段值,如下以Basix语法为例 指定默认不显示,满足条件后formulafalse时才显示

formula = true

if {table_2.sex} = "gril" and {table_2.age} > 5 then

formula = false

end if

 

图标插件

水晶报表中包含一些基础的统图表,可以在报表文件插入图表选择使用

 

版权声明:本文为博主 StephanieZhang 原创文章,未经博主允许不得转载。

相关文章推荐

asp.net 水晶报表使用总结

手头上的一个项目,终显雏形,其中遇到一些问题,经过多番努力,终于得以解决,主要是水晶报表方面的。因为是第一次用,总结的同时,也给后来可能用到水晶报表的人一些微弱的指引,所以如果总结的不好的话,请大家指...

水晶报表(CrystalReports)的简单应用(ASP.NET)

Visual studio 2008 自带水晶报表10 ASP.NET网站中的简单应用 本次示例目的只是让刚接触水晶报表的朋友掌握其应用,因此示例以简单,简洁,清晰为主,没有连接后台数据库。 V...

水晶报表(CrystalReports)的简单应用(ASP.NET)

Visual studio 2008 自带水晶报表10 ASP.NET网站中的简单应用 本次示例目的只是让刚接触水晶报表的朋友掌握其应用,因此示例以简单,简洁,清晰为主,没有连接后台数据库。 V...

ASP.NET下基于WebService实现CrystalReport与数据库的连接

1. 引言Crystal Report已内嵌为微软 Visual Studio .NET的标准报表工具,它的优点是:在 .NET 平台上能够轻松创建交互式的、高质量显现的报表内容;可以在 Web 平台...

C#成魔之路<7>水晶报表与打印(挂起)

Crystal Reports(水晶报表)内置在VS.NET开发环境中的一种报表设计工具,可以帮助程序员在.NET平台上创建高度复杂且专业级别的互动式报表。水晶报表协同数据库一起进行工作,可以帮助用户...

C#简单多线程使用(同步和优先权)

题目: 麦当劳有两个做汉堡的厨师(工号:11,12)和三个销售人员(工号:21,22,23)。 厨师生产汉堡,并负责将做好的汉堡放入货架,货架台大小有限,最多放6个汉堡,11和12不能同时往...

winform下制作第一张水晶报表

初学水晶报表,一头雾水,都是希望先找个简单的示例型的文章看看,本篇就非常的适合(仅适合接触水晶报表但是一个都没有写过的同仁)。本示例环境:windows2003、vs.net2003、Sql Serv...

C# 使用水晶报表有感(web篇)

这几天一直在研究水晶报表,都是水晶报表有多强大,于是便想尝试一番,刚开始一直出现这样那样的问题,而现在所有的问题都解决了,那个开心呀,于是乎,写下了这篇文章,供后人参考,使用的开发环境是VS.net ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)