FastReport.net 常用方法
一、页面设置
情景:FastReport设计器页面默认设置为A4纸,但如果需要显示的字段过多,这时就出现了页面的大小无法满足完整显示所需内容的问题。
解决:出现这个问题后,我们可以在来到"文件"—"页面设置"选项中进行设置,在这里可以直接调整页面的纸张类型和尺寸,但是我使用的时候更多的会调整Portrait为Landscape,所谓Portrait按词霸的翻译就是“纸短的一边在顶端和底端的打印方式”,而Landscape则恰恰相反,意思是“纸长的一边在顶端和底端的打印方式”,可以简单的理解Portrait为纵向,Landscape为横向,通过这样的调整既可以保证用标准的A4纸打印,又满足了设计时能够扩充纸张大小,保证显示内容的目的。

二、过滤或排序显示数据
情景:为了将数据按顺序显示,便于查看。
解决:此时可以双击数据区,这时就会看到排序和过滤的选项,可以通过点击后面fx图标,使用设计器的方式实现,当然也可以手动添加代码:

三、添加和设置子报表
情景:显示复杂关系的数据。
解决:进入"报表"--"设置报表栏",可以对报表进行各种设置,其中数据首只会打印一次,数据尾则会在所有数据之后被打印。

四、日期显示
情景:有些数据表里的日期字段是空的,这时FastReport会自动将其转化为0001/1/1的形式。
解决:此时如果想要让日期为空时不显示此默认的形式,可以再次进入"报表"--"选项"中,在"一般"选项卡中取消勾选"转换空值"即可。

五、数据表的嵌套
情景:复杂的数据库表之间有很多复杂的主从对应关系,这时需要在数据源中建立关系。
解决:选择动作--新建关系,然后就可以象在数据库里一样建立主外键关联了。

六、手动确定数据源
情景:有些时候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其实已经我们内置了所有这些功能,可以在系统变量中找到,只需要简单的拖入Date就可以显示出当前日期,拖入PageN就可以显示页码等。

八、使报表显示时呈现常见的奇偶行变色效果。
情景:数据量大时可以方便查看数据。
解决:这里同样有两种方法,一是在"报表"--"样式"中添加一个样式,叫做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颜色,这样就看不出效果了。
九、使用程序操作报表
情景:在窗体程序中可以使用编程的方式对报表的相关字段进行操作。
解决:
//获取数据源中列的值
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);
十、备注
1、在FastReport中的变量都使用的是[DataSourceName.FieldName]的形式,凡是以这种形式表示的都需要从数据库中读取,而普通文本则需要[文本内容]这样的形式就可以搞定。
2、在FastReport中可以设定数据表的别名,这样可以在多表关联的时候使用别名与相关字段对应。
FastReport.net 常用方法的更多相关文章
- Delphi FastReport报表常用方法
Delphi FastReport报表常用方法 作者及来源: EasyPass - 博客园 收藏到→_→: 摘要: Delphi FastReport报表常用方法 点击这里! ...
- FASTREPORT 整理 (mtm)
DELPHI中用FASTREPORT制作报表 1.加载并存储报表 默认情况下,报表窗体同项目窗体构存储在同一个DFM文件中.多数情况下,无须再操作,因而你就不必采用特殊方法加载报表. 如果你决定在文 ...
- 前端开发:Javascript中的数组,常用方法解析
前端开发:Javascript中的数组,常用方法解析 前言 Array是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array ...
- Jquery元素选取、常用方法
一:常用的选择器:(李昌辉) 基本选择器 $("#myDiv") //匹配唯一的具有此id值的元素 $("div") //匹配指定名称的所有元素 $(" ...
- python浅谈正则的常用方法
python浅谈正则的常用方法覆盖范围70%以上 上一次很多朋友写文字屏蔽说到要用正则表达,其实不是我不想用(我正则用得不是很多,看过我之前爬虫的都知道,我直接用BeautifulSoup的网页标签去 ...
- 使用FastReport打印二维码
简单介绍一下该功能所在的项目背景:C#语言编写的WPF客户端应用程序,在“结账”模块中,打印出的收款小票上需要显示一个二维码,服务生拿着小票去找顾客,顾客可以选择现金.银行卡等普通支付方式,也可以直接 ...
- C# Webbrowser 常用方法及多线程调用
设置控件的值 /// <summary> /// 根据ID,NAME双重判断并设置值 /// </summary> /// <param name="tagNa ...
- list,tuple,dict,set常用方法
Python中list,tuple,dict,set常用方法 collections模块提供的其它有用扩展类型 from collections import Counter from collect ...
- 记录yii2-imagine几个常用方法
记录yii2-imagine几个常用方法: //压缩 Image::thumbnail('@webroot/img/test-image.jpg', 120, 120)->save(Yii::g ...
随机推荐
- 《TCP/IP详解 卷1:协议》第3章 IP:网际协议
3.1 引言 IP是TCP/IP协议族中最为核心的协议.所有的TCP.UDP.ICMP及IGMP数据都以IP数据报格式传输(见图1-4).许多刚开始接触TCP/IP的人对IP提供不可靠.无连接的数据报 ...
- C语言实例解析精粹学习笔记——18
<C语言实例解析精粹>中编译环境采用的是Turbo C 2.0.但是这个编译器年代久远,较新的编译器对书中的某些例子支持不好,在学习的时候同时做一些笔记. 实例18:将一个无符号整数转换为 ...
- Git项目管理
参考 参考书籍 <git学习指南> 参考网站 https://git-scm.com/ Git局限性讨论 高复杂度 两张图看懂集中式版本管理系统和分布式管理系统的区别-集中式vs分布式 g ...
- ERROR oslo_service.service PlacementNotConfigured 解决办法
PlacementNotConfigured: This compute is not configured to talk to the placement service 原因:官方文档中遗漏了- ...
- [Cracking the Coding Interview] 4.1 Route Between Nodes 节点间的路径
Given a directed graph, design an algorithm to find out whether there is a route between nodes. 这道题让 ...
- android stadio 编译报错:download fastutil-7.2.0.jar
在Ubuntu上面,新安装的stadio,第一次编译项目的时候, 一直开在下载 fastutil-7.2.0.jar 原因是需要FQ.那么改一下你的buil.gradle buildscript { ...
- Ubuntu目录与权限
Ubuntu目录 / /bin /sbin /boot /etc /mnt /home d :directory - :file b :block 磁盘以块进行 l :link Ubuntu权限 U ...
- 查看linux系统版本命令汇总
Linux下如何查看版本信息, 包括位数.版本信息以及CPU内核信息.CPU具体型号等等,整个CPU信息一目了然. 1.Linux查看版本当前操作系统内核信息 命令:uname -a
- eclipse注释快捷键
1.单行注释 注释: ctrl + / 取消注释: ctrl + / 多行注释 注释: ctrl shift + / 取消注释: ctrl shift + \
- 大理石在哪儿 (Where is the Marble?,UVa 10474)
题目描述:算法竞赛入门经典例题5-1 #include <iostream> #include <algorithm> using namespace std; ; int m ...