使用FastReport进行基于富盛SBO程序开发框架的报表开发

  富盛SBO程序">开发框架中缺省集成了FastReport作为报表打印的控件,并且可以轻易实现SBO报表查询和打印集成。

  富盛SBO程序开发框架支持使用Matrix或者Grid组件作为报表查询结果显示控件,当然,也可以不在SBO中显示查询结果,而直接将报表数据结果显示在FastReport中。

  富盛SBO程序开发框架使用Grid组件进行FastReport报表打印、显示集成的基类为fsSboReportGridQueryForm,这个基类包括以下几个属性:

  报表文件:ReportFileName,字符型

  报表查询语句,包括四部分,基类会在GetReportQuerySQL函数中组装,

  SELECT语句:ReportQueryStr,字符型

  WHERE子句:根据查询条件由GetReportWhereSQL()生成,应该被重载

  GROUP子句:ReportGroupStr,字符型

  ORDER子句:ReportOrderStr,字符型

  子报表类型,比如:分配排序等:strSubReportList,字符型

  格式:

  格式1:子报表1代码,子报表1描述|子报表2代码,子报表2描述|...|子报表n代码,子报表n描述

  格式2:子报表1描述|子报表2描述|...|子报表n描述,这时代码为1,2,3...n

  子报表名称为: ReportFileName + 子报表代码 + ".fr3"

  请继承PostExtPrintTypeSet,并处理这些子报表对应的查询语句

  实例:

  strSubReportList = "测试报表类型01|测试报表类型02|测试报表类型03";

  strSubReportList = "Test1,测试报表类型01|Test2,测试报表类型02|Test3,测试报表类型03";

  是否在当前界面上通过显示Grid显示报表信息:UseReportGrid,布尔型

  UseReportGrid = true;使用Grid控件,这个时候请不要指定ButtonTop值

  UseReportGrid = false;不使用Grid控件

  上面的属性指定之后,调用由fsSboReportGridQueryForm集成的类实例,就完成了基础的布局。最简单的,这个时侯需要获得报表分析的条件。报表分析条件对于报表来讲应该是必须的,也是动态的,为此富盛SBO程序开发框架开放了报表分析条件方法GetReportWhereSQL,在报表分析类中,这个方法应该被重载。

  如果指定了子报表类型strSubReportList,报表类将自动根据子报表类型找到相应的子报表,当然子报表的数据显示格式可能不同,所以对应的报表名称也就各自不同(子报表名称=主报表名称+子表代码),当然对于子报表的数据分析条件也应该有所动态化的定义,那么请重载方法PostExtPrintTypeSet即可完成,以处理这些子报表对应的查询语句。

  实例:以下这个简单的类,就实现了使用FastReport进行数据分析报表及其子报表的管理,看看富盛SBO程序开发框架的确非常简便了很多复杂问题的解决。

class fsCxFRptTestForm : fsSboReportGridQueryForm  {    public fsCxFRptTestForm(fsSboCommon fs)      : base(fs)    {      ReportFileName = fsSbo.thiSAPpPath + @"ReportsfsCxFRpt.fr3";        ReportQueryStr = "___select " + fsSbo.GetAllUserField4Table("@FSCXFITEM
BATINFO", true, "a") + " FROM [@FSCXFITEMBATINFO] a "; ;      ReportGroupStr = "";      ReportOrderStr = "U_WhsCode, U_InDate, U_ItemCode";        strSubReportList = "Test1,测试报表类型01|Test2,测试报表类型02|Test3,测试报表类型03";        UseReportGrid = false;      }      //将报表的检索统计条件加入到界面中,必须被重载    protected override bool AddQueryConditions2Form()    {      Boolean bRet = base.AddQueryConditions2Form();        try      {        oForm.DataSources.UserDataSources.Add("dsWhs", BoDataType.dt_SHORT_TEXT, 20);        fsSbo.AddStaticText2Form(ref oForm, "stWhs", "仓库", 10, 10, 60, 14);        ComboBox cbx = fsSbo.AddCombox2Form(ref oForm, "cbWhs", "", "dsWhs", 10, 70, 80, 14);        fsSbo.AddValidValues2Combox(ref cbx, "___select WhsCode, WhsName FROM OWHS Order by WhsCode");        cbx.ValidValues.Add("", "所有");          if (UseReportGrid) fsSbo.AddButton2Form(ref oForm, "btnQuery", "检索", 7, 220, 65, 20);          AllowReportPrint = true;      }      catch (Exception ex)      {        fsSbo.ShowMsg("错误:" + ex.Message);          bRet = false;      }        return bRet;    }      //获得报表查询语句中的WHERE查询子句的函数,这个函数应该被重载    protected override string GetReportWhereSQL()    {      string strRet = "";        try      {        string strValue = fsSbo.GetValue4Item(oForm, "cbWhs");        if (strValue.Length > 0)        {          strRet = "U_WhsCode=N'" + strValue + "'";            ReportNotesStr = " 仓库 " + fsSbo.GetDescription4Combox(oForm, "cbWhs") + "[" + strValue + "]";        }          if (strRet.Length > 0)          if (!strRet.Trim().ToUpper().StartsWith(" WHERE ")) strRet = " WHERE " + strRet;      }      catch (Exception ex)      {        strRet = "";          fsSbo.ShowMsg("错误:" + ex.Message);      }        return strRet;    }  }}

  结果展示,上述代码的运行结果如下图所示。

  左下角就是子报表的显示列表,不过在这个例子中我们并没有对子报表的相关条件进行处理和约束,真正要做报表的时候需要处理,否则子报表就显得没有任何意义。

  点击打印按钮就可以实现报表数据的现实和打印,点击设计按钮就可以实现对打印报表的格式设计。因为我没有对报表结果进行打印设计,所以在此就不展示打印结果了。

  就这么简单的几十行代码--一些还是系统自动生成的,就完成了使用富盛SBO程序开发框架中使用FastReport进行报表设计。

  需要指出的是,富盛SBO程序开发框架下的报表集成不光支持SELECT查询分析语句,还支持存储过程调用。

  本文出自 “富盛软件” 博客,请务必保留此出处http://foresun.blog.51cto.com/221037/103133

时间: 2024-08-30 13:22:30

使用FastReport进行基于富盛SBO程序开发框架的报表开发的相关文章

基于富盛SBO程序开发框架的自动序列生成器

很多时候,我们期望系统中的某些关键字段可以按照我们期望的条件自动生成,比如,员工代码,商品序列号,商品条形码等.的确,针对个体业务,要实现这种自动生成方法很多,那么是否可以实现可以支持所有业务的序列生成呢? 答案是肯定的.在此我们展示一下基于富盛SBO程序http://www.aliyun.com/zixun/aggregation/13435.html">开发框架的自动序列生成器. 为了便于描述,先让大家看看自动序列生成器的界面. 是的,序列自动生成器必须支持序列组成项目的用户自定义.可

富盛Sbo Add-on程序开发框架及开发实例

一.问题的提出 Sbo是一套具有非常不错业务架构.并且很好支持了二次开发的企业http://www.aliyun.com/zixun/aggregation/13617.html">信息管理系统--对不起,我还不称之为Erp,因为如果不进行二次开发,Sbo可以支持的业务面还是太窄太小,业务之间约束关系也太简单.是的,我的观点是,如果没有很好的二次开发,Sbo是无法支撑不断发展变化的中国企业的业务需要的. 那么,进行Sbo二次开发是不是很简单? 应该说,不太复杂!不过,对于初学者或者刚涉足这

富盛Sbo入库质检验收的实现

在Sbo中的标准http://www.aliyun.com/zixun/aggregation/13476.html">业务流程中,不包括入库之前的物料验收环节,事实上,很多企业是需要这样的业务的. Sbo的入库主要包括三大类:采购入库.销售退货入库和生产入库.采购入库的数据来源主要包括采购订单.采购退货单和采购预留发票:销售退货入库的数据来源主要是交货单:而生产入库的主要数据来源是生产订单.那么,要实现Sbo的入库验收就应该在采购到货入库.销售退货入库和生产到货入库之前加入质检验收环节,

用Ext JS构建Ajax应用程序:一种用于富因特网应用程序开发的JavaScript框架

简介:Ext JS 是一种强大的 JavaScript 库,它通过使用可重用的对象和部件简化了 Asynchronous JavaScript + XML(Ajax)开发.本文介绍 Ext JS,概述它背后的面向对象 JavaScript 设计概念,解释如何使用 Ext JS 框架开发富因特网应用程序的用户界面元素. 当今有许许多多的 Web 开发框架,开发人员很难判断哪些框架值得花时间去学习.Ext JS 是一种 JavaScript 开发框架,这种强大的 JavaScript 库通过使用可重

使用Grails构建富Internet应用程序,第1部分:使用Grails和Flex构建Web应用程序

简介:富 Internet 应用程序(Rich Internet Applications,RIA)通过浏览器保证桌面应用程序 的动态性和功能.RIA 的主要特征之一就是将表示层移动到客户机,并使用服务器上健壮的 RESTful 服 务层支持它.这种想法借助 SOUI(Service Oriented User Interface)和 SOFEA(Service Oriented Front End Architecture)之类的热门词汇得到传播. 关于本系列 这个系列探索一些应 用程序架构,

使用Grails构建富Internet应用程序,第2部分

相关文章: 使用Grails构建富Internet应用程序,第1部分:使用Grails和Flex构建Web应用程序 Grails和Google Web Toolkit 简介:在这个共 2 部分的系列的第 2 部分中,将基于您在 第 1 部分 中用 Grails 创建的 Web 服 务创建新的服务.您将创建一个新的搜索页面,但这一次使用 Google Web Toolkit (GWT) 来创建这个 应用程序.此外,您还将使用 Ext GWT 库中的一些更丰富的 UI 小部件. 关于本系列 这个系列

使用ZK框架的富Internet应用程序:一个开源Ajax框架

ZK 是一个用 Java 代码编写的开源 Asynchronous JavaScript + XML (Ajax) 框架,使用该框架,您无需编写 JavaScript 代码就可以编写一个 支持 Web 2.0 的富 Internet 应用程序.Dojo 等典型的 Ajax 框架拥有一些 JavaScript 库,用于公开某些 API 以进行 "Ajax 化" 调用.另 一方面,ZK 使用一个基于 XML 的元定义(meta-definition)来定义用户界面 .当客户机请求这个页面时

使用jQuery,第3部分:用jQuery和Ajax构建富Internet应用程序

本文配套源码 简介 最近这几个月以来,JQuery 受欢迎的指数迅速攀升,现已成为 Web 开发人员首选的 JavaScript 库.与此同时,人们对富 Internet 应用程序(Rich Internet Application,RIA)的应用和需求也在迅速增长,并期待用基于浏览器的应用程序代替桌面应用程序.无论是电子表格,还是薪水册和电子邮件应用程序,现在都在浏览器中再现了类似于桌面的体验.随着这些应用程序数量的增多和功能的日益复杂,JavaScript 库将会变得越来越重要,因为它是构建

JavaFX深入浅出(一)富客户端应用程序RIAs

每当我们要学习一种新的技术,首先要搞明白他是干什么的,对自己有什么用处,把相关情况弄清楚以后,才能决定去不去学习他.在学习JavaFX之前,下面几个问题我觉得应该先搞清楚: 一.什么是 Rich Internet Applications ? Rich Internet Applications ,缩写RIAs,翻译过来是富客户端应用程序,或者富互联网应用程序.他是从网络下载到本机,可以在浏览器中运行的一种应用程序.当然也可以脱离浏览器,直接在操作系统下运行.相对于传统的的Web应用,富客户端应