FastReport.net 经常使用方法

以前提及过FastReport.NET这款报表工具的使用,但当时主要是从程序的角度,示例了在B/S架构下的相关使用,但报表终归仍是要划到设计的范畴里来,毕竟可以将报表的内容展现在客户的眼前,这才是报表的根本目的,而诸如打印、转换格式我的以为应该算是锦上添花的功能吧。html

  而随着报表设计的复杂,问题天然也就增多了,没办法,硬着头皮上官网下点文档吧。数据库

  这里将遇到的一些小问题汇总以下,本身作个记录,须要的朋友也能够省点“阅读理解”的时间哈。。。编程

   

  1、页面设置架构

  情景:FastReport设计器页面默认设置为A4纸,但若是须要显示的字段过多,这时就出现了页面的大小没法知足完整显示所需内容的问题。dom

  解决:出现这个问题后,咱们能够在来到"文件"—"页面设置"选项中进行设置,在这里能够直接调整页面的纸张类型和尺寸,可是我使用的时候更多的会调整Portrait为Landscape,所谓Portrait按词霸的翻译就是“纸短的一边在顶端和底端的打印方式”,而Landscape则偏偏相反,意思是“纸长的一边在顶端和底端的打印方式”,能够简单的理解Portrait为纵向,Landscape为横向,经过这样的调整既能够保证用标准的A4纸打印,又知足了设计时可以扩充纸张大小,保证显示内容的目的。工具

  FastReport.net 经常使用方法 - hcyu2012 - hcyu2012的博客

  

  2、过滤或排序显示数据spa

  情景:为了将数据按顺序显示,便于查看。.net

  解决:此时能够双击数据区,这时就会看到排序和过滤的选项,能够经过点击后面fx图标,使用设计器的方式实现,固然也能够手动添加代码:翻译

  FastReport.net 经常使用方法 - hcyu2012 - hcyu2012的博客

 

  3、添加和设置子报表设计

  情景:显示复杂关系的数据。

  解决:进入"报表"--"设置报表栏",能够对报表进行各类设置,其中数据首只会打印一次,数据尾则会在全部数据以后被打印。

  FastReport.net 经常使用方法 - hcyu2012 - hcyu2012的博客

  

  4、日期显示

  情景:有些数据表里的日期字段是空的,这时FastReport会自动将其转化为0001/1/1的形式。

  解决:此时若是想要让日期为空时不显示此默认的形式,能够再次进入"报表"--"选项"中,在"通常"选项卡中取消勾选"转换空值"便可。

  FastReport.net 经常使用方法 - hcyu2012 - hcyu2012的博客

  5、数据表的嵌套

  情景:复杂的数据库表之间有不少复杂的主从对应关系,这时须要在数据源中创建关系。

  解决:选择动做--新建关系,而后就能够象在数据库里同样创建主外键关联了。

  FastReport.net 经常使用方法 - hcyu2012 - hcyu2012的博客

  6、手动肯定数据源

  情景:有些时候SQL语句创建表的关系过于复杂,以致于很难创建良好的主从关系,好比我遇到的这样的SQL查询

  SELECT i.SheetKeyId,i.SheetId,i.OperatorName,
      i.InCheckDateTime,i.OutCheckDateTime,i.OutCheckPeople,
      s1.BranchName AS InBranchName,s2.BranchName AS OutBranchName
    FROM   dbo.T_StorageBranch s1 , dbo.T_StorageBranch s2 ,
      dbo.T_LeechdomIOSheet i , dbo.T_LeechdomIOSheet i2
    WHERE  i.InBranchKeyId = s1.BranchKeyId
    AND    i2.OutBranchKeyId = s2.BranchKeyId
    AND    i.SheetId = i2.SheetId

  既有自表关联,又有和其余表的关联,那创建主从关系岂不要郁闷死。。。

  解决:此时个人解决方法有两种,一个是基于FastReport是支持表和视图做为数据源的,此时能够事先在数据库中创建视图,从而使用视图做为数据源解决此表的关联问题,固然如没有项目的需求,大可采用第二种方法,即点击"添加SQL查询",这是输入咱们的SQL语句,便会自动生成一个查询结果,咱们只须要在报表设计时用其做为数据源就ok了。

  FastReport.net 经常使用方法 - hcyu2012 - hcyu2012的博客

  7、使用系统变量

  情景:咱们常常会在报表打印时要求显示当前的页数,当前的数据量统计以及当前的打印时间等。

  解决:FastReport其实已经咱们内置了全部这些功能,能够在系统变量中找到,只须要简单的拖入Date就能够显示出当前日期,拖入PageN就能够显示页码等。

  FastReport.net 经常使用方法 - hcyu2012 - hcyu2012的博客

  8、使报表显示时呈现常见的奇偶行变色效果。

  情景:数据量大时能够方便查看数据。

  解决:这里一样有两种方法,一是在"报表"--"样式"中添加一个样式,叫作EvenRows,什么样式都不用设置,肯定便可,而后单击数据区,在外观的EvenStyle属性里面选择此样式,最后改变Fill属性的填充颜色便可。第二种方法是经过程序的方式来实现,代码以下:

  private void Data1_BeforePrint(object sender, EventArgs e)

  {

      if (((Int32)Report.GetVariableValue("Row#")) % 2 == 0)

         Data1.FillColor = Color.Gainsboro;

  }

  这里的Row#为系统内置变量,表明行号,咱们选出偶数行后,设置FillColor为本身想要的颜色便可,但不可为window颜色,这样就看不出效果了。

  9、使用程序操做报表

  情景:在窗体程序中可使用编程的方式对报表的相关字段进行操做。

  解决:

    //获取数据源中列的值

    string productName = (string)Report.GetColumnValue("Products.Name");

     

    //获取数据源

    DataSourceBase ds = Report.GetDataSource("Products");

 

    //获取系统变量值

    DateTime date = (DateTime)Report.GetVariableValue("Date");

 

    //获取总计数

    float sales = Report.GetTotalValue("TotalSales");

 

    //获取参数

    int myParam = (int)Report.GetParameterValue("MyParameter");

 

    //设置参数

    report1.SetParameterValue("EmployeeID", 2);

  10、备注

  一、在FastReport中的变量都使用的是[DataSourceName.FieldName]的形式,凡是以这种形式表示的都须要从数据库中读取,而普通文本则须要[文本内容]这样的形式就能够搞定。

  二、在FastReport中能够设定数据表的别名,这样能够在多表关联的时候使用别名与相关字段对应。

  三、若是你尚未心动的话,我贴几张现成的基于Northwind数据库的demo示例看看吧。。。

  FastReport.net 经常使用方法 - hcyu2012 - hcyu2012的博客

  

  FastReport.net 经常使用方法 - hcyu2012 - hcyu2012的博客

  

  估计就说这么多了,好用的东西你们一块儿分享哇。。。^_^

做者:Rocky翔出处:http://www.cnblogs.com/RockyMyx/本文版权归做者和博客园共有,欢迎转载,但请在文章页面明显位置给出原文链接,不然保留追究法律责任的权利。

相关文章
相关标签/搜索