关闭

在数据库中保存FastReport .Net报表

标签: 数据库.NETFastReport教程报表
104人阅读 评论(0) 收藏 举报
分类:

通常报表都存储在一个地方,但是在单独的文件中。随着文件数量的增加在结构和搜索上也困难多多,针对这个问题,我遇到了一个非常有趣的报表对象属性——ReportSourceString,此属性以字符串形式保存整个报表模板。

这意味着它可以在任何数据库中存储报表模板,并把所有的报表都存储在一个地方。为了将报表保存到数据库中,我们需要编写自己的方法来保存和加载报表。下面就开始吧!

<获取FastReport .NET最新试用版>

首先,让我们创建一个数据库来存储报表。我已经使用了微软的访问。该表的结构如下:

Field name

Data type

id

Counter

Name

Text

Template

MEMO

创建窗体应用程序。添加连接到数据库。放置按钮组件到表单:数据集,BindingSource和报表。

创建窗体

绑定源

我们需要一个对话框,在保存/加载时会要求报表的名称:

加载保存对话框

按钮必须根据名称来设置DialogResult属性。

开始设计,我们使用下面的fastreports库:

usingFastReport;
usingFastReport.Utils;
usingFastReport.Design;


创建实例对话框:

publicSaveLoadForm form2 = newSaveLoadForm();


创建事件处理程序来保存报表:

voidcmdSave_CustomAction(objectsender, EventArgs e)
 {
 ReportsDataSet.ReportsRow row;
 row = reportsDataSet1.Reports.NewReportsRow();
 if(form2.ShowDialog() == DialogResult.OK)
 {
 row.Name = form2.ReportName;
 row.Template = report1.ReportResourceString;
 this.reportsDataSet1.Reports.Rows.Add(row);
 ReportsDataSetTableAdapters.ReportsTableAdapter adapter = newReportsDataSetTableAdapters.ReportsTableAdapter();
 adapter.Update(reportsDataSet1.Reports);
 }
 }


这里,我们在报表表单中创建一个新的行,紧接着开始对话框。将报表名称输入表单,分配对话框的文本字段值到名称字段,在模板字段中将报表模板写入文本。此后,通过适配器将更改的内容保存到表中。

现在创建一个报表下载的事件处理程序:

voidcmdOpen_CustomAction(objectsender, EventArgs e)
 {
 if(form2.ShowDialog() == DialogResult.OK)
 {
 for(inti = 1; i < reportsDataSet1.Reports.Rows.Count; i++)
 if(reportsDataSet1.Reports[i].Name == form2.ReportName)
 {
 report1.ReportResourceString = reportsDataSet1.Reports[i].Template.ToString();
 }
 Designer designer = sender asDesigner;
 designer.SetModified(this, "EditData");
 }
 }


调用对话框,在循环中查找与在文本字段中输入的名称相对应的报表,从模板字段中加载报表到ReportResourceString属性。然后,设计师根据改变做出更新。

所以,我们写了2个处理程序。它是必要的,以拦截标准的事件处理程序并用我们的处理程序替代。

privatevoid DesignerSettings_DesignerLoaded(objectsender, EventArgs e)
 {
 (sender asDesigner).cmdSaveAs.CustomAction += newEventHandler(cmdSave_CustomAction);
 (sender asDesigner).cmdOpen.CustomAction += newEventHandler(cmdOpen_CustomAction);
 }


正如你所看到那样,我们通过自定义处理程序拦截事件来保存和加载一个报表。

在主表单中按钮OnClick事件中添加以下代码:

privatevoid DesignBtn_Click(objectsender, EventArgs e)
{
Config.DesignerSettings.DesignerLoaded += DesignerSettings_DesignerLoaded;
report1.Design();
}


重写处理程序加载报表设计器。

这样,我们就已经创建了一个应用程序,允许您在MS访问数据库中保存和加载报表。您可以通过ReportSourceString报表属性在自己希望的数据库中组织报表的存储。

产品视频资源等请查看>>

获取更多产品信息请咨询>>

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

FastReport.Net 报表连接数据库

通常开发人员在学习FastReport .Net时出现的第一个问题就是:如何将数据连接到报表中?幸运的是,该报告生成器有一个直观的界面设计器。为节省您的时间,我将简单谈论一下在报表中连接数据源。接下来...
  • Pokemogo
  • Pokemogo
  • 2017-08-09 15:04
  • 601

FastReport.net在用户的应用程序中创建报表

概述:在这篇文章中,主要讲述FastReport .Net直接从用户应用程序中创建报表的能力,如果你不想产生一堆个人文件的报告模板或要在应用程序内隐藏一个报告模板,以避免损坏或修改模板,它就派上大用场...
  • flyingdream123
  • flyingdream123
  • 2016-08-03 19:46
  • 854

如何利用FastReport创建交叉报表?

转自:http://www.fastreportcn.com/Article/92.html 本文我们将创建一个交叉报表,用于显示员工四年中的工资。要创建交叉报表,我们需要使用到Fa...
  • cw370008359
  • cw370008359
  • 2014-12-11 13:24
  • 1081

C#使用FastReport 报表初步体验(图文)

原来程序使用的Word和Excel来做一些导出数据和打印的操作,可是运行一段时间发现总有一些用户的电脑上安装的Office有些问题,还需要重新安装调整造成一些额外的维护工作。这里通过简单尝试使用Fas...
  • upi2u
  • upi2u
  • 2016-08-30 16:24
  • 3621

浅谈FastReport. Net报表样式风格,事实上多数人都低估了其作用

在本文中,将谈谈关于FastReport. Net报表风格的使用。事实上,多数人都低估了风格功能的作用,他们认为风格帮助把文档归于一个统一的种类。几乎每个用户都面对微软word文本编辑器,也知道风格有...
  • Pokemogo
  • Pokemogo
  • 2017-08-03 14:08
  • 286

使用功能强大的插件FastReport.Net打印报表实例

我第一次使用FastReport插件做的功能是打印一个十分复杂的excel表格,有几百个字段都需要绑定数据,至少需要4个数据源,而且用到横向、竖向合并单元格。     我不是直接连接数据库...
  • gold0523
  • gold0523
  • 2015-11-22 03:15
  • 2772

FastReport.NET报表控件功能详解—预览、打印和导出

FastReport.NET提供方便的MS Word样式的预览窗口,支持在报表预览状态中进行文本搜索,还支持在报表预览状态中进行修改。 预览窗口 文本搜索 预览状态中修改 ...
  • Pokemogo
  • Pokemogo
  • 2017-08-03 15:30
  • 685

【.Net码农】FastReport.Net直接打印相关问题整理

https://www.evget.com/article/2013/9/5/19550.html FastReport直接打印相关问题整理 概述:最近慧都收集到很多关于FastR...
  • CrackLibby
  • CrackLibby
  • 2016-07-18 15:21
  • 2183

FastReport在线报表设计器:页面结构简介

引用 :http://www.fastreportcn.com/Article/255.html FastReport Online Designer的界面结构有以下几个方面: Men...
  • flyingdream123
  • flyingdream123
  • 2016-08-03 19:06
  • 682

FastReport for.Net开发指南-主从表(Master/Detail)报表设计详解

下面介绍主从表(Master/Detail Report)报表: 报表设计 (Report Designer) Group Header/Group Footer (主...
  • pj386960300
  • pj386960300
  • 2014-08-18 12:07
  • 2147
    个人资料
    • 访问:8556次
    • 积分:542
    • 等级:
    • 排名:千里之外
    • 原创:35篇
    • 转载:5篇
    • 译文:6篇
    • 评论:1条
    最新评论