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

来源:互联网 发布:迅捷路由器的访客网络 编辑:程序博客网 时间:2024/05/17 09:02

通常报表都存储在一个地方,但是在单独的文件中。随着文件数量的增加在结构和搜索上也困难多多,针对这个问题,我遇到了一个非常有趣的报表对象属性——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
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 建筑放线技巧 工程施工放线 定位放线记录 测量放线工必备技能 测量放线公司 建筑放线方法 楼层测量放线记录 经纬仪如何放线 怎么测量放线 电动电缆放线架 束丝机放线架 如何测量放线 工字轮放线架 压线 放着 放点 放个 放片 放坡线 道路施工测量放线 建筑施工如何放线 建筑施工怎么放线 如何用全站仪放线 市政工程测量放线 高层建筑如何放线 道路工程测量放线 高层建筑测量放线 建筑工程定位放线 公路工程测量放线 新手施工员测量放线步骤图解 放翁 一树梅花一放翁 餐桌放肆 放肆 放肆近义词 放肆宠溺 寒少放肆爰 放肆意思 放肆听 放肆的意思 放肆反义词