热门标签 | 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;如需转载请自行联系原作者




推荐阅读
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • SQLPLUS 命令
    定制:sql提示符信息1、显示SQLPLUS帮助,命令如下:HELPINDEX@COPYPAUSESHUTDOWN@@DEFINEPRINTSPOOLDELPR ... [详细]
  • 祖先|目的地_logback架构
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了logback架构相关的知识,希望对你有一定的参考价值。logback的架构 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • PHP中的单例模式与静态变量的区别及使用方法
    本文介绍了PHP中的单例模式与静态变量的区别及使用方法。在PHP中,静态变量的存活周期仅仅是每次PHP的会话周期,与Java、C++不同。静态变量在PHP中的作用域仅限于当前文件内,在函数或类中可以传递变量。本文还通过示例代码解释了静态变量在函数和类中的使用方法,并说明了静态变量的生命周期与结构体的生命周期相关联。同时,本文还介绍了静态变量在类中的使用方法,并通过示例代码展示了如何在类中使用静态变量。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
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社区 版权所有