前篇讲解了PULL模式下的操作方法,比较简单。
本文进一步详细讲解一下PUSH模式下的样板操作。
仍以Web为例

新建一个 Asp.Net CrystalReports的网站 

弹出下面这个界面后,选第2项-作为空白报表,然后点确认,进入一个空白界面。

新建一个数据集合

出现此提示时,点“是”

然后还会出来连接数据库的提示,一律点否,直至界面上什么提示也没有
在这个界面上,点右键,添加一个datatable,命名为myTable。

然后在myTable里增加相应的列,我这里有3个列,注意要设置好类型。

特别说明:
因为水晶报表里不认datatime型,对于2009-06-26 9:23:15
会自动截断为2009-06-26
所以datatime型数据在xsd文件中,可设置为string型
而代码中的SQL中可把字段转换为String传入。

xsd设计完毕后,开始进入报表模板设计阶段。

在“数据库字段”上点右键,选“数据库专家”

再弹出的界面上,点“项目数据”,依次点开,找到我们刚才自己做的mytable

确定后,在“数据库专家”下面会出现表名mytable,点开后会看到字段,
把字段拖到模板上的详细资料节即完成基础模板的制作了

点一下预览,会看到虽然我们还没有任何实际的数据操作,但是界面上已经有数据了
这是水晶报表的一个虚拟数据,可以看到一个最终显示的效果。

好了,上代码

C# code
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using CrystalDecisions.Shared; using CrystalDecisions.CrystalReports.Engine; using CrystalDecisions.Web; using System.Data.OleDb; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { ConfigureCrystalReports(); } private void ConfigureCrystalReports() { //连接字串 String connstr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\CrZen\testall.mdb;"; OleDbDataAdapter da = new OleDbDataAdapter(); OleDbConnection cn = new OleDbConnection(connstr); // da = new OleDbDataAdapter("SELECT * From RPT_CR_TEST1", cn); //创建我们的DataSet1实例 DataSet1 dt1 = new DataSet1(); //填充dt1 //注意:表名mytable必须与我们在xsd设计的表名称一致。 //本例中数据库的表实际名称为RPT_CR_TEST1,而最终是以mytable为准的 //使用 PUSH模式的优点就在此,可以自由组合SQL //前提是表名称和字段名(需要在SQL中使用as别名的方式跟xsd中设计的字段名一致)都要一致 da.Fill(dt1, "mytable"); ReportDocument myReport = new ReportDocument(); string reportPath = Server.MapPath("crystalreport1.rpt"); myReport.Load(reportPath); //绑定数据集,注意,一个报表用一个数据集。 myReport.SetDataSource(dt1); CrystalReportViewer1.ReportSource = myReport; } }

然后运行就可以了。

这里做一下说明,在【推拉之间】没有说这个xsd,是因为当时没讲到细节操作。
说了很难理解。
这个xsd,是我们自己构造的,做个比喻吧:
就是xsd比作个一个架子,它负责把水晶报表撑起来,但是是空的,没有内容
我们用 PUSH模式,把数据塞给它,把架子塞满,这样水晶报表也就能呈现出效果来

常见问题:
1:报表可以显示出来,但是没数据,
一般有以下几种情况
a:表中确实没数据
b:da.Fill(dt1, "mytable");表名称与xsd中设计的表不一致
c: 如果你用了多个表,可能是因为表默认的关联关系导致无数据

2:出现下面这个图的提示,特别是翻页、打印、导出的时候,因为这些动作都需要重新连接数据库源。

a:如果是多表的话,可能是部分表没有赋值。
  水晶报表需要对用到的每个表进行验证,即使没数据。没有的话,传个空的记录集也行。
b:代码没有放到Page_Load或Page_init里,或者是放到了,但是控制了 postback。
  因为http是无状态的,如果控制了postback,水晶报表就丢失了前面的设置,会导致出现此情况的
   
预告:

两篇基础讲完了,也为后面做好了比较坚实的铺垫。
所以我就加快进度了。
下一篇:掌控于股掌之间-代码中传参数、传公式、操作水晶报表里的所有对象

阿泰,水晶报表--push样式模板相关推荐

  1. access数据库使用水晶报表(PUSH)推模式实现多数据源含子报表的订单打印

    最近改造一个小型购物网站,要求使用水晶报表实现订单打印,本人对水晶报表从一无所知到,到最终弄出来整整花了一夜的时间,特此记录下此文和大家共享. 关于水晶报表更详细的介绍建议大家可以参考阿泰的博客:ht ...

  2. 使用模板报表提高生产力,水晶报表 10 模板技术

    在报表中重用 报表设计过程中最苛刻和最消耗时间的部分是将你的所有报表格式化成统一的外观.许多公司要求报表设计者遵照企业标准,比如:信头或者是 GAAP/SEC 规范的某些要求. 在理想世界里,这只需较 ...

  3. 水晶报表技术(12)——一个投票系统水晶报表应用

        前一段时间,公司需要做一个在线的调查投票系统,目的是统计公司能力等级指数,统计的能力级别分三大类,分别为一级能力要素,二级能力要素,三级能力要素,不同的一级能力要素下面分若干的二级能力要素,每 ...

  4. Microsoft Visual Studio 2005中使用水晶报表

    Microsoft Visual Studio 2005中使用水晶报表 沈阳 王智 OICQ:16994162 http://wangzhihome.51.net/ 2006-4-11 如有转贴请注明 ...

  5. c#水晶报表的进一步功能和使用

    最近一直在学水晶报表,一些基础知识觉得学了不少,可是还是觉得水晶报表的核心还没有学会!可是是在自学的原因吧.没有人指导,只是自己埋着头自己学,什么地方学偏了也不知道. 有一点一直认为自己的认识有偏差, ...

  6. 6-1 水晶报表技术(上)

    本章内容<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 6-1 ...

  7. 【水晶报表内功心法】--PUSH模式样板招式

    索引 .[水晶报表内功心法]--序言 .[水晶报表内功心法]--推拉之间 .[水晶报表内功心法]--PULL模式样板招式 ======================================= ...

  8. 在水晶报表中实现任意选择指定字段显示-模板及C#升级版

    前文<在水晶报表中实现任意选择指定字段显示>中有朋友留言说是有无C#版本,最近有时间,重写了一下. 一是使用了VS2005 C#2.0 + Crystal Report 2008,另外就是 ...

  9. .net 的水晶报表在push模式下的多表关联问题

    最近忙于用水晶报表来设计各种报表,都是采用push模式 设计一个报表的基本情况是这样的: 1 创建一个Dataset 2 在该DataSet中手工创建一个或多个表结构,纯手工创建: 3 创建一个rtp ...

  10. 水晶报表使用经验总结

    资料: Asp.Net中使用水晶报表(上) www.dotnet8.com  2002-9-6  DotNet吧 这篇文章教你如何在.Net Web应用中使用水晶报表,也可以让你在学习过程中少走一些弯 ...

最新文章

  1. 迭代和瀑布的最大的差别就在于风险的暴露时间上
  2. 怎么测并发 PHP,PHP接口并发测试的方法(推荐)
  3. (COPY)document.all和document.getElementById用法 document.all用法:
  4. erlang虚拟机精要(1)-运行时系统简介
  5. saltstack 主题说明
  6. synchronized锁升级_synchronized详解以及锁的膨胀升级过程
  7. 花呗下调部分年轻用户额度,倡导理性消费,网友:是嫌我穷了吗?
  8. 数据结构和算法——线性结构(1)数组、栈、队列和单链表
  9. 微信小程序-获取当前城市位置经纬度,并解析位置信息
  10. 查看浏览器版本及内核信息
  11. 物体尺寸测量-matlab
  12. 投影仪幕布增益_别再说幕布是花瓶 投影幕布的作用原来这么大
  13. centos7 下载百度网盘中文件的方法
  14. 河南科技学院教务管理系统服务器,河南科技学院教务管理系统:http://jwc.hist.edu.cn...
  15. android 5寸屏分辨率是多少钱,索尼Z5尊享版的屏幕尺寸是多少?分辨率是多少?...
  16. 2014年5月份第3周51Aspx源码发布详情
  17. 正益移动推出新产品正益工作 实现PaaS+SaaS新组合
  18. web期末网站设计大作业 奶茶店网站美食餐饮网站设计与实现(HTML+CSS+JavaScript)
  19. vue周日历组件,从周一开始周日结束
  20. 应用性能监控-- SkyWalking

热门文章

  1. Python数据可视化的例子——折线图(line)
  2. Android Studio 连接手机进行调试
  3. 方舟手游修改服务器难度,方舟手游中途可以修改难度吗
  4. 总结--看帖收“货”
  5. ubuntu 屏幕亮度无法调节
  6. C语言>>输入两个字符串,比较这两个字符串是否相同并输出比较结果。要求不用任何字符串处理函数。
  7. 极光一键登录集成手册 | Android
  8. Rect.OverLaps() 改进
  9. Unable to create tempDir. java.io.tmpdir is set to C:\Users\ADMINI~1\AppData
  10. 奥斯卡大乌龙,然而人工智能也预测《爱乐之城》为最佳影片