热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

随笔142文章0评论2294一步一步教你使用AgileEAS.NET基础类库进行应用开发WinForm应用篇演示使用报表构建UI入库业务查询模块...

回顾与说明前面我们把“商品字典”、“商品入库”、“商品库存查询”三个模块已经概括或者详细的演示完了,这些模块涉及到简单数据的增、删、修,也涉及到复杂业务

回顾与说明

    前面我们把“商品字典”、“商品入库”、“商品库存查询”三个模块已经概括或者详细的演示完了,这些模块涉及到简单数据的增、删、修,也涉及到复杂业务处理的事务、业务层提取,以及MIS系统中非常常见的查询、报表打印技术和基础字典的缓存查询技术。

本文内容

    今天我们将以另外一种技术实现另一个模块“商品入库查询”,将采用何种技术呢,其实也是一个很简单的技术,在构建UI应用中使用报表技术,即我们把打印预览的报表技术使用在业务查询应用的主体UI之中,如下图所示一样的效果:

报表01

制做界面

      首先,我们需要在UI项目中增加一个WinForm窗体ProductInQueryForm拖动控件达到如下效果:

image

      在这里,我们需要注意的是需要向界面放一个报表预览控件,报表预览控件由EAS.Report.Controls程序集承载,类型EAS.Report.Controls.RDLReportViewer,打印预览控件工具条显示位置由属性ToolBoxDockStyle决定,我们设置为DockStyle.Bottom。

处理查询

      接下来我们编写查询相关的代码,先在数据层接口项目中的IProductInList的分部类定义IProductInList.cs文件中增加如下代码:

1: ///

2: /// 表接口 IProductInList(产品入库)。

3: ///

4: public partial interface IProductInList

5: {

6: ///

7: /// 根据入库票据号查询入库明细。

8: ///

9: /// 入库票据号。

10: void GetProductInList(string billCode);

11:  

12: ///

13: /// 根据入库时间及拼音简码查询入库明细。

14: ///

15: /// 开始时间。

16: /// 结束时间。

17: /// 拼音简码。

18: void GetProductInList(DateTime startTime,DateTime endTime,string pyCode);

19: }

         同样,我们需要在数据层实现项目中实现这个方法:

1: public void GetProductInList(DateTime startTime, DateTime endTime, string pyCode)

2: {

3: Condition condition = this.CreateCondition();

4:  

5: if (!startTime.Equals(endTime))

6: {

7: List<DateTime> times &#61; new List<DateTime>(2);

8: times.Add(startTime);

9: times.Add(endTime);

10:  

11: condition.AddElement("InTime", times, ElementType.BetWeen);

12: }

13:  

14: if (pyCode.Length > 0)

15: condition.AddElement("SqlText", "CODE in (select CODE from dbo.PRODUCT where PYCODE like &#39;" &#43; pyCode &#43; "%&#39;)", ElementType.SqlCondition);

16:  

17: this.Query(condition);

18: }

          大家在这地方仔细看一下&#xff0c;因为在商品库存表中没有定义产品的拼音简码&#xff0c;所以我就使用了一个字查询,并以SQL条件的形式写了出来&#xff0c;在实现应用中&#xff0c;应该在产品库存表中增加拼音简码字典&#xff0c;以方便查询。

制作报表

      这一步在前面的文章中已经有过详细的介绍了&#xff0c;在这就简单的走过&#xff0c;打开报表设计器&#xff0c;选择对象报表&#xff0c;数据对象为Product.DAL.SQLServer.ProductInList&#xff0c;我们做出如下样式的报表&#xff1a;

}WJVL0VIMM4S73[GNB9RB)R

       需要注意的是&#xff0c;在这个报表中&#xff0c;我增加了一个分组&#xff0c;按单据号进行分组并显示分组统计&#xff0c;完成报表设计之后&#xff0c;保存在编译目标目录中的Reports文件夹中并取名为“商品入库查询报表.rdl”。

集成代码

       接下来我们修改程序&#xff0c;把报表挂载进来&#xff0c;编写“查询”按钮的事件处理代码&#xff1a;

1: private void btnSearch_Click(object sender, EventArgs e)

2: {

3: //加载报表

4:

5: if (this.reportViewer.SourceRdl&#61;&#61;null)

6: {

7: System.IO.TextReader textReader &#61; null;

8: try

9: {

10: string fileName &#61; Path.Combine(Application.StartupPath, "Reports\\商品入库查询报表.rdl");

11: textReader &#61; new System.IO.StreamReader(fileName);

12: this.reportViewer.SourceRdl &#61; textReader.ReadToEnd();

13: }

14: finally

15: {

16: if (textReader !&#61; null)

17: textReader.Close();

18: }

19: }

20:  

21: //处理数据

22: IProductInList table &#61; DALHelper.DALManager.CreateProductInList();

23: table.GetProductInList(this.dtpStartTime.Value,this.dtpEndTime.Value, this.tbSearch.Text);

24: this.reportViewer.DataObject &#61; table;

25: }

运行结果

    编译并运行程序&#xff0c;我们看一下运行效果&#xff1a;

image
        打印预览&#xff1a;
image

我们把报表导出来&#xff0c;选择导出Excel格式&#xff1a;

014M7TW{9157IJF_E8AS%O4

      这里我们需要注意的是&#xff1a;导出Excel格式只支持Excel2007格式&#xff0c;这个让我很纠结&#xff0c;我不喜欢装备庞大的office2007,2010更是用一个月就用不成了&#xff0c;挺郁闷的&#xff0c;Wps自带的表格软件打不开这个格式。

      至此&#xff0c;“商品入库查询”模块的相关处理就此结束&#xff0c;接下来我将介绍“商品字典”的另一个实现&#xff0c;同时演示ORM对象与DataGridView的绑定技术&#xff0c;希望大家感兴趣&#xff0c;对AgileEAS.NET平台感兴趣的朋友呢&#xff0c;可以下载了完整代码之后自己看看&#xff0c;有问题请及时的和我联系。

      有关本例所涉及的数据表结构请参考基于AgileEAS.NET平台基础类库进行应用开发-总体说明及数据定义一文&#xff0c;有关数据对象模型定义文件、文档、DDL脚本请下载&#xff1a;http://files.cnblogs.com/eastjade/demo.db.doc.sql.rar&#xff0c;本例完整代码下载&#xff1a;Product.Demo.rar。

链接

一步一步教你使用AgileEAS.NET基础类库进行应用开发-系列目录

AgileEAS.NET平台开发指南-系列目录

AgileEAS.NET应用开发平台介绍-文章索引

AgileEAS.NET平台应用开发教程-案例计划

AgileEAS.NET官方网站

敏捷软件工程实验室

QQ群&#xff1a;116773358


作者&#xff1a;魏琼东 
出处&#xff1a;http://www.cnblogs.com/eastjade
关于作者&#xff1a;有13年的软件从业经历&#xff0c;专注于中小软件企业软件开发过程研究&#xff0c;通过在技术与管理帮助中小软件企业实现技术层面开源节流的目的。熟悉需求分析、企业架构、项目管理。现主要从事基于AgileEAS.NET平台的技术咨询工作&#xff0c;主要服务于医疗卫生、铁路、电信、物流、物联网、制造、零售等行业。如有问题或建议&#xff0c;请多多赐教&#xff01; 
本文版权归作者和博客园共有&#xff0c;欢迎转载&#xff0c;但未经作者同意必须保留此段声明&#xff0c;且在文章页面明显位置给出原文连接&#xff0c;如有问题&#xff0c;可以通过mail.james&#64;qq.com 联系我&#xff0c;也可以加入QQ群:113723486、199463175、116773358、116773358、212867943、147168308、59827496、193486983、15118502和大家共同讨论&#xff0c;非常感谢。



    本文转自魏琼东博客园博客&#xff0c;原文链接&#xff1a;http://www.cnblogs.com/eastjade/archive/2010/11/09/1871133.html&#xff0c;如需转载请自行联系原作者




推荐阅读
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍了如何解决Uploadify插件在Internet Explorer(IE)9和10版本中遇到的点击失效及JQuery运行时错误问题。通过修改相关JavaScript代码,确保上传功能在不同浏览器环境中的一致性和稳定性。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 导航栏样式练习:项目实例解析
    本文详细介绍了如何创建一个具有动态效果的导航栏,包括HTML、CSS和JavaScript代码的实现,并附有详细的说明和效果图。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • Android LED 数字字体的应用与实现
    本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
author-avatar
echo7111436
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有