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 服务器发起请求 ...
最新文章
- 基于Springboot实现的固废物管理系统
- 使用tab键分割的文章能快速转换成表格。( )_word排版技巧:活用Enter键提高工作效率...
- python 程序开发以及推荐机制设计
- CCDP-思科认证网络设计高级工程师
- 530. 二叉搜索树的最小绝对差
- LeetCode 1759. 统计同构子字符串的数目
- 菜鸟学习笔记:Java提升篇3(容器3——泛型、排序)
- html选择第一个clss,css3如何选择第一个子元素?
- ssh 无法连接 z/OS 主机
- mysql的varchar 和text_MySQL中char、varchar和text的区别
- Hadoop-HDFS原理及操作(小实验)
- http接口开发几种工具简单介绍
- html 选择题代码,JS实现简单的选择题测评系统代码思路详解(demo)
- SSD-tensorflow-1 demo
- 201621123068 Week03-面向对象入门
- 2017 多校4 Wavel Sequence
- 编译openssl1.1.1f for android
- 各类学生机万能卸载攻略
- CocosCreator3.x屏幕适配
- 全栈设计师必须拥有的Mac软件推荐