FastReport.Net是一款功能齐全的报表分析解决方案。

前两年工作的时候就是使用FastReport进行报表设计,只是当时使用的时候都是调用别人写好的帮助类,直接调用即可。当时让人觉得不明觉厉。呵呵..不过现在再次需要使用到FastReport进行报表的设计打印,以及与rdlc报表进行对比的。所以再次仅记一次初步的使用。

一、报表的的设计过程

设计模板----加载数据---调用模板生成报表或者打印。基本上大多数的报表都是如是设计的。模板与数据分离,在调用时再将数据绑定到模板上。

二、FastReport的初步使用

使用FastReport设计器承载模板设计和预览

  /// <summary>
/// 用fastreport设计器承载模板
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Scan(object sender, EventArgs e)
{
DataSet ds = GetDataSource(); report.Clear(); ///清空报表,不然在窗体第二调用时会带不出报表信息
if (!File.Exists(frxFile))
{
MessageBox.Show("找不到模板:OrderPrint.frx,请先设计模板");
report.RegisterData(ds); //注册数据
report.SetParameterValue("TType", "类型"); //传递参数
for(int i=0;i<ds.Tables.Count;i++)
{
report.GetDataSource(ds.Tables[i].TableName).Enabled = true; //手动设为true,不然在设计器中看不到数据对象
}
report.Design(); //设计
return;
} report.Load(frxFile);
report.SetParameterValue("TType", "类型");
report.RegisterData(ds);
report.Prepare();
report.ShowPrepared(); //预览显示
}

当然有时设计FastReport模板不是简单的设计显示,还需要对其后端进行处理

例如数据区的table显示,则需要报表模板后端进行处理:

 private void Table3_ManualBuild(object sender, EventArgs e)
{
DataSourceBase data1 = Report.GetDataSource("Detail"); // 获取DataSet中表名为Detail的数据源 data1.Init(); // 初始化
Table3.PrintRow(0); // 控件Table1打印第0行 Table3.PrintColumns(); // 每打印一行,都要调用 PrintColumn或PrintColumns while(data1.HasMoreRows) // 打印重复循环的行 { Table3.PrintRow(0); Table3.PrintColumns(); data1.Next(); // 读取下一行 } }

  

使用FastReport提供的控件进行操作:

在【工具箱】---【添加选项卡】---【选择项】--【选择FastReport.dll】。将FastReport控件显示到工具箱中,如下图所示:

可以通过FastReport提供的控件进行报表的操作。

例如使用PreviewControl进行报表的展示与打印:

 private void Print(object sender, EventArgs e)
{
DataSet ds = GetDataSource();
string tType = "类型";
report.Clear(); ///
report.Preview = this.PreviewDetail;
if (!File.Exists(frxFile))
{
MessageBox.Show("找不到模板:OrderPrint.frx,请先设计模板");
report.RegisterData(ds);
report.SetParameterValue("OrderType", orderType);
for (int i = ; i < ds.Tables.Count; i++)
{
report.GetDataSource(ds.Tables[i].TableName).Enabled = true;
}
report.Design();
return;
} report.Load(frxFile);
report.SetParameterValue("OrderType", orderType);
report.RegisterData(ds);
report.Prepare();
report.ShowPrepared();
PreviewDetail.Print(); //打印
}

显示效果就像rdlc的ReportViewer承载显示rdlc报表一样(就不上图了)。

最后

虽然现在只是非常浅简的使用,个人觉得FastReport.net在设计方面还是由于rdlc的,模板设计相对简单,在程序调用方面也比较优秀。但是FastReport.net是收费的。

FastReport的再次使用的更多相关文章

  1. FastReport.Net中使用列表和数组作为报表数据源

    大多数现代报告工具允许您使用几乎任何数据库,然而,并不是所有报表工具都能以一个数据源的列表或数组来工作.本文中将展示如何使用FastReport .Net报表工具来实现. 请注意以下重要几点: 清单中 ...

  2. 关于FastReport在winform中的使用(包含FastReport.net的安装步骤链接)

    一.FastReport的简介 FastReport是功能齐全的报表控件,使开发者可以快速并高效地为·NET/VCL/COM/ActiveX应用程序添加报表支持. 二.FastReport的安装(推荐 ...

  3. FastReport报表设计(仔细看)

    FastReport报表设计 2011-06-16 16:56:19|  分类: 系统开发|举报|字号 订阅     下载LOFTER我的照片书  |     目录 5.1 前言 5.2 基本概念及操 ...

  4. FastReport报表设计

    [转载]FastReport报表设计 (2012-10-24 20:37:26) 转载▼ 标签: 转载   原文地址:FastReport报表设计作者:小黑 FastReport报表设计 目录 5.1 ...

  5. 再议FastReport.NET(转)

    之前说起过FastReport.NET这款报表工具的使用,但当时主要是从程序的角度,示例了在B/S架构下的相关使用,但报表终归还是要划到设计的范畴里来,毕竟能够将报表的内容展示在客户的眼前,这才是报表 ...

  6. FastReport.net 常用方法

    一.页面设置 情景:FastReport设计器页面默认设置为A4纸,但如果需要显示的字段过多,这时就出现了页面的大小无法满足完整显示所需内容的问题. 解决:出现这个问题后,我们可以在来到"文 ...

  7. FastReport Site授权联合推广计划 彻底保障商业化开发,还送iPhone 5s

    上月慧都与报表控件开发商Fastreport联合推出的优惠活动,获得中国开发者的巨大反响.本月慧都再次发力,与Fast Reports, Inc.联合推出FastReport Site授权推广计划.活 ...

  8. 一周死磕fastreport ----ASP.NET (一)

    https://blog.csdn.net/wuyuander/article/details/52692435 原文链接,点击跳转 首先是安装好FastReport .net: 然后在vs2012中 ...

  9. SQLSERVER聚集索引与非聚集索引的再次研究(上)

    SQLSERVER聚集索引与非聚集索引的再次研究(上) 上篇主要说聚集索引 下篇的地址:SQLSERVER聚集索引与非聚集索引的再次研究(下) 由于本人还是SQLSERVER菜鸟一枚,加上一些实验的逻 ...

随机推荐

  1. Linux SSH端口转发

    SSH端口转发分为两种,一种是本地端口转发,又称为本地SSH隧道.一直是远程端口转发.SSH端口转发,还必须指定数据传送的目标主机,从而形成点对点的端口转发. 本地端口转发     假定有三台主机A. ...

  2. SQL server 2000安装时“以前的某个程序安装已在安装计算机上创建挂起”

    客户使用的固定资产盘点软件使用的数据库是MSSQL 2000,在安装完成打上SP3的时候提示“以前的某个程序安装已在安装计算机上创建挂起的文件操作.运行安装程序之前必须重新启动计算机“,从客户的软件提 ...

  3. 读 Working with forms 一些心得

    Working with forms About this document This document provides an introduction to Django’s form handl ...

  4. hdu3966(树链剖分)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3966 题意:一颗树上,每个点有权值,定义三种操作: 1)I操作表示从a到b节点之间的节点都加上一个值 ...

  5. UC高级编程--实现myls程序

    跟着达内视频,学习UC高级编程,完毕程序小练习. 主要练习的函数为:  int lstat(const char *path, struct stat *buf);  size_t strftime( ...

  6. LINUX设备驱动程序的注意事项(两)建设和执行模块

             <一>:设置測试系统 首先准备好一个内核源代码树,构造一个新内核,然后安装到自己的系统中.           <二>:HelloWorld模块 #inclu ...

  7. 扩展WebBrowser控件,使其支持拖放文件

    public partial class UserControl1 : WebBrowser { private const int WmDropfiles = 0x233; [DllImport(& ...

  8. CentOS 6 安装Oracle11g

    原创作品.从 "深蓝blog" 博客,欢迎转载,请务必注明转载如下源.否则追究其版权责任. 深蓝的blog:http://blog.csdn.net/huangyanlong/ar ...

  9. TCP/IP-协议族----17、应用层简单

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGVrZXdhbmd6aQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

  10. Python使用subprocess的Popen要调用系统命令

    当我们须要调用系统的命令的时候,最先考虑的os模块.用os.system()和os.popen()来进行操作.可是这两个命令过于简单.不能完毕一些复杂的操作,如给执行的命令提供输入或者读取命令的输出, ...