使用FastReport进行基于富盛SBO程序开发框架的报表开发
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://foresun.blog.51cto.com/221037/103133 |
富盛SBO程序开发框架中缺省集成了FastReport作为报表打印的控件,并且可以轻易实现SBO报表查询和打印集成。
富盛SBO程序开发框架支持使用Matrix或者Grid组件作为报表查询结果显示控件,当然,也可以不在SBO中显示查询结果,而直接将报表数据结果显示在FastReport中。
富盛SBO程序开发框架使用Grid组件进行FastReport报表打印、显示集成的基类为fsSboReportGridQueryForm,这个基类包括以下几个属性:
上面的属性指定之后,调用由fsSboReportGridQueryForm集成的类实例,就完成了基础的布局。最简单的,这个时侯需要获得报表分析的条件。报表分析条件对于报表来讲应该是必须的,也是动态的,为此富盛SBO程序开发框架开放了报表分析条件方法GetReportWhereSQL,在报表分析类中,这个方法应该被重载。
如果指定了子报表类型strSubReportList,报表类将自动根据子报表类型找到相应的子报表,当然子报表的数据显示格式可能不同,所以对应的报表名称也就各自不同(子报表名称=主报表名称+子表代码),当然对于子报表的数据分析条件也应该有所动态化的定义,那么请重载方法PostExtPrintTypeSet即可完成,以处理这些子报表对应的查询语句。
实例:以下这个简单的类,就实现了使用FastReport进行数据分析报表及其子报表的管理,看看富盛SBO程序开发框架的确非常简便了很多复杂问题的解决。
class fsCxFRptTestForm : fsSboReportGridQueryForm
{ public fsCxFRptTestForm(fsSboCommon fs) : base(fs) { ReportFileName = fsSbo.thiSAPpPath + @"Reports\fsCxFRpt.fr3"; ReportQueryStr = "___select " + fsSbo.GetAllUserField4Table("@FSCXFITEMBATINFO", 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 本文出自 51CTO.COM技术博客 |



.jpg)
foresun
博客统计信息
热门文章
最新评论
友情链接