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

标签: 数据库 .NET FastReport 教程 报表
201人阅读 评论(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报表属性在自己希望的数据库中组织报表的存储。

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

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

查看评论

fastreport.net保存到数据库

这次的项目由于涉及到了打印输出,这样也就不得不要涉及一些打印预览功能,本来可以使用CrystalReport,但又通过别人介绍发现了一款制作更加精美,而且实用的FastReport控件,下面把项目中的...
  • u013002790
  • u013002790
  • 2018-02-01 16:39:14
  • 79

FastReport.Net 报表连接数据库

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

FastReport.Net报表控件功能详解—报表元素

FastReport.NET是一个优秀的报表生成器。有13个类型区域:报表标题、报表摘要、页眉、页脚、列标题、列页脚、数据头、数据、数据页脚、组页眉、组页脚、子报表、覆盖。另外,它还完全支持子报表。广...
  • Pokemogo
  • Pokemogo
  • 2017-08-02 13:57:19
  • 753

.Net报表控件FastReport.Net在C#程序中如何邦定报表模版

1、首先在程序中引用dll using FastReport; using FastReport.Export.Pdf; using FastReport.Data; using FastRepor...
  • Pokemogo
  • Pokemogo
  • 2017-08-04 15:55:43
  • 893

Asp.Net Mvc 使用WebUploader 多图片上传

public ActionResult UpLoadProcess(string id, string name, string type, string lastModifiedDate, int ...
  • ncqqbesny
  • ncqqbesny
  • 2015-12-11 19:48:47
  • 1415

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

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

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

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

FastReport.NET报表工具,你的报表帮手

一、页面设置   情景:FastReport设计器页面默认设置为A4纸,但如果需要显示的字段过多,这时就出现了页面的大小无法满足完整显示所需内容的问题。   解决:出现这个问题后,我们可以...
  • Pokemogo
  • Pokemogo
  • 2017-08-04 16:02:29
  • 643

FastReport报表 设计复杂报表使用子报表解决(图文)

今天做的一个复杂报表,涉及到使用2个数据源,其中一个读取一条记录在页面显示,另外一个读取关联数据将多条记录在页面中间显示。可以直接在Data band中添加子数据只能在页面最下面显示循环记录。经过简单...
  • upi2u
  • upi2u
  • 2016-09-14 08:18:08
  • 2258

使用FastReport 3.0及以上版本创建动态报表的

1.已经生成的报表保存到流中,再从流中取出  TfrxReport.PreviewPages.SaveToStream(TStream);  TfrxReport.PreviewPages.LoadF...
  • johnny_83
  • johnny_83
  • 2007-07-22 10:11:00
  • 1332
    个人资料
    持之以恒
    等级:
    访问量: 1万+
    积分: 667
    排名: 7万+
    文章存档
    最新评论