fastreport使用第一例
用报表设计器设计报表:(包含多个表格)
第一步:设计出下面样式:
第二步:在configure里ADD时,注意一下,选择数据区时要占到空白才能新建数据,有了数据后,选中数据,才能给数据添加数据头和数据脚。
第三步:在DATA属性页,新增加数据,用的方法是,先选择Save Dictionary,保存至文件,再修改文件内容如下面的XML样式。再选择Open Dictionary选择进来。就会出现下面的数据源中二个表。在Parameters上右击,增加新参数。
修改成如下内容:
<?xml version="1.0" encoding="utf-8"?>
<Dictionary>
<TableDataSource Name="Table" ReferenceName="Data.Table" DataType="System.Int32" Enabled="true">
<Column Name="单据标志" DataType="System.String" PropName="Column"/>
<Column Name="单据类型" DataType="System.String" PropName="Column"/>
<Column Name="采购金额" DataType="System.String" PropName="Column"/>
<Column Name="零售金额" DataType="System.String" PropName="Column"/>
<Column Name="进销差价" DataType="System.String" PropName="Column"/>
</TableDataSource>
<TableDataSource Name="Table1" ReferenceName="Data.Table1" DataType="System.Int32" Enabled="true">
<Column Name="单据标志" DataType="System.String" PropName="Column"/>
<Column Name="单据类型" DataType="System.String" PropName="Column"/>
<Column Name="采购金额" DataType="System.String" PropName="Column"/>
<Column Name="零售金额" DataType="System.String" PropName="Column"/>
<Column Name="进销差价" DataType="System.String" PropName="Column"/>
</TableDataSource>
</Dictionary>
第四步:在属性页的报表树,将table1和table2添加事件如下:事件代码如下。
private void Table1_ManualBuild(object sender, EventArgs e)
{
DataSourceBase data1 = Report.GetDataSource("Table"); // 获取DataSet中表名为Table的数据源
data1.Init(); // 初始化
Table1.PrintRow(0); // 控件Table打印第0行
Table1.PrintColumns(); // 每打印一行,都要调用 PrintColumn或PrintColumns
while(data1.HasMoreRows) // 打印重复循环的行
{
Table1.PrintRow(1);
Table1.PrintColumns();
data1.Next(); // 读取下一行
}
}
private void Table2_ManualBuild(object sender, EventArgs e)
{
DataSourceBase data1 = Report.GetDataSource("Table1"); // 获取DataSet中表名为Table1的数据源
data1.Init(); // 初始化
Table2.PrintRow(0); // 控件Table1打印第0行
Table2.PrintColumns(); // 每打印一行,都要调用 PrintColumn或PrintColumns
while(data1.HasMoreRows) // 打印重复循环的行
{
Table2.PrintRow(1);
Table2.PrintColumns();
data1.Next(); // 读取下一行
}
}
到此报表设计器的操作结束,接下来,就是winform里面的调用代码。
第五步:新建一个窗体应用,引用相应DLL。
本机都在C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\FastReport.Editor\v4.0_2016.1.0.0__db7e5ce63278458c\下面。
放一个button,点出后出报表。事件如下:
DataSet ds = new DataSet();
DataTable table1 = new DataTable();
table1.TableName = "Table"; // 一定要设置表名称
ds.Tables.Add(table1);
// 添加表中的列
table1.Columns.Add("单据标志", typeof(string));
table1.Columns.Add("单据类型", typeof(string));
table1.Columns.Add("采购金额", typeof(string));
table1.Columns.Add("零售金额", typeof(string));
table1.Columns.Add("进销差价", typeof(string));
DataTable table2 = new DataTable();
table2.TableName = "Table1"; // 一定要设置表名称
ds.Tables.Add(table2);
table2.Columns.Add("单据标志", typeof(string));
table2.Columns.Add("单据类型", typeof(string));
table2.Columns.Add("采购金额", typeof(string));
table2.Columns.Add("零售金额", typeof(string));
table2.Columns.Add("进销差价", typeof(string));
所需要的数据自己读取出来,赋值进二个datatable。
foreach (DataRow row in tableTemp.Rows)
{
DataRow row1 = table1.NewRow();
row1["单据标志"] = row["单据标志"];
row1["单据类型"] = row["单据类型"];
row1["采购金额"] = row["采购金额"];
row1["零售金额"] = row["零售金额"];
row1["进销差价"] = row["进销差价"];
table1.Rows.Add(row1);
}
foreach (DataRow row in tableTemp.Rows)
{
DataRow row1 = table2.NewRow();
row1["单据标志"] = row["单据标志"];
row1["单据类型"] = row["单据类型"];
row1["采购金额"] = row["采购金额"];
row1["零售金额"] = row["零售金额"];
row1["进销差价"] = row["进销差价"];
table2.Rows.Add(row1);
}
下面是报表操作代码
Report FReport = new Report();
string sPath = Application.StartupPath + @"test.frx";
FReport.Load(sPath);
//设置参数
FReport.Parameters.Clear();
//送入时间参数,就是报表里添加的参数
Parameter v_param = new Parameter();
v_param.Name = "YearMonth";//这里的参数名对应报表里的参数名称
v_param.Value = "2099-05-30/2099-06-26";
FReport.Parameters.Add(v_param);
// 将DataSet对象注册到FastReport控件中
FReport.RegisterData(ds);
FReport.GetDataSource(ds.Tables["Table"].TableName).Enabled = true; //这里的Table对应报表里的数据源
FReport.GetDataSource(ds.Tables["Table1"].TableName).Enabled = true;//这里的Table1对应报表里的数据源
FReport.Show();
效果如上:
fastreport使用第一例相关推荐
- 《UNIX网络编程卷1》第一例及问题
<UNIX网络编程卷1>一上来就给了一个例子,新手不容易看懂,估计作者也没有打算让人看懂,作了详尽的解释.新手都想运行这个程序,我也是. 首先,给的程序都是在unix下运行的.这里有全书代 ...
- 【内含福利】全球第一例:苹果Apple Card遭盗刷,物理卡或被克隆;谷歌正在试产5G智能手机,最快下周发布……...
戳蓝字"CSDN云计算"关注我们哦! 嗨,大家好,重磅君带来的[云重磅]特别栏目,如期而至,每周五第一时间为大家带来重磅新闻.把握技术风向标,了解行业应用与实践,就交给我重磅君吧! ...
- C语言的第一例,简单易操作
在信息化.智能化的世界里,可能很早很早 我们就听过许多IT类的名词,C语言也在其中,我们侃侃而谈,到底C程序是什么样子?让我们先看简单的一个例子: #include<stdio.h> in ...
- Spring入门第一例
通过多天对基础语法的学习,早就向往一睹SPRING的芳容.今天按照ITEYE 唐的 教程,第一次运行Spring成功,步骤及注意事项如下: 一.基础环境 Jdk1.8, Eclipse4.71 .Sp ...
- RichFaces第一例
学习JSF和RichFaces一周了,总结以一个小例子为介,分别试验动态皮肤,calendar控件和effect效果. 首先建立web工程,引入必须包jsf1.2,jtsl1.1,richfaces3 ...
- c语言算法基础第一例
◆题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔 子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数 为多少? 程序分析:兔子的规律为数列1,1,2,3,5 ...
- VR医疗|全球首例“换头手术”成功了么?
用VR技术让病人提前适应"换头手术"后的生活,真的可以吗? 还记得半年前很惊悚的新闻--"换头手术"吗?从小瘫痪的斯皮里多诺为了改变人生决定把自己的脑袋完整割下 ...
- 世界首例针对特斯拉自动驾驶判罚:德国裁定Autopilot广告误导买家,特斯拉柏林工厂可能受阻...
贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI "全自动?别骗人了." 7月14日,德国慕尼黑法院正式裁定,特斯拉在其自动驾驶Autopilot的广告中,存在夸大宣传 ...
- Node.js -- Stream 使用小例 ( 流运用 :读取、写入、写出、拷贝)
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. Stream 是一个抽象接口,Node 中有很多对象实现了这个接口.例如,对http 服务器发起请求 ...
最新文章
- python中的装饰器介绍
- 三星oneui主屏幕费电_都 9012 年了,三星系统还「负优化」吗?
- ORM MVC、模板引擎介绍(建议收藏)
- unbuntu运行shell脚本的问题
- android键盘弹出,聊天背景不变形
- 在mac os10.13系统下 ,将py文件打包成可执行程序后, 里面的路径出现的问题
- vue 使用axios
- 2015年全年目标及执行情况跟踪
- 微端服务器物品备注,HeroM2引擎怎么在装备上添加备注 传奇添加物品备注说明的方法...
- javaweb开发后端常用技术_Java web开发需要学习哪些技术?
- IDEA集成docker-maven-plugin配置CA安全证书
- Apple Pay初探
- 【Java】面向对象(二)继承
- zencart网店模板
- 好久能旅游?新加坡,一座惬意的城市
- 在vm虚拟机上安装esd格式的win7系统文件
- 使用思维导图的甘特图进行项目排期
- Android Studio-开发少年强国App(三)网格列表 0. 需求分享
- 背包问题求解(数据结构课设)
- 听说台积电去美国建厂出问题了?张忠谋:明年再说
热门文章
- HttpServletrequest 注册和登录、request域对象、web动态shop
- wget下载提示:无法建立SSL连接
- 从0开始搭建SQL Server 2012 AlwaysOn 第一篇(AD域与DNS)
- BP算法浅谈(Error Back-propagation)
- 大学生能从计算机游戏中受益,2017年大学英语四级作文习题及范文:大学生玩游戏...
- 比价寄快递v1.0.24
- Unreal Engine本人教程。UE产品_游戏_宣传片_官网_网站收藏
- 拉伯证券|业绩猛增超13倍,主力连续抢筹,这只股收获4连板
- web网络安全——网站入侵(三)
- python调用地图api_python调用地图api接口