随笔 - 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:  /// <summary>
 2:  /// 表接口 IProductInList(产品入库)。
 3:  /// </summary>
 4:  public partial interface IProductInList
 5:  {
 6:      /// <summary>
 7:      /// 根据入库票据号查询入库明细。
 8:      /// </summary>
 9:      /// <param name="billCode">入库票据号。</param>
10:      void GetProductInList(string billCode);
11:   
12:      /// <summary>
13:      /// 根据入库时间及拼音简码查询入库明细。
14:      /// </summary>
15:      /// <param name="startTime">开始时间。</param>
16:      /// <param name="endTime">结束时间。</param>
17:      /// <param name="pyCode">拼音简码。</param>
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 = 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 '" + pyCode + "%')", ElementType.SqlCondition);
16:   
17:      this.Query(condition);
18:  }

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

制作报表

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

}WJVL0VIMM4S73[GNB9RB)R

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

集成代码

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

 1:  private void btnSearch_Click(object sender, EventArgs e)
 2:  {
 3:      //加载报表
 4:  
 5:      if (this.reportViewer.SourceRdl==null)
 6:      {
 7:          System.IO.TextReader textReader = null;
 8:          try
 9:          {
10:              string fileName = Path.Combine(Application.StartupPath, "Reports\\商品入库查询报表.rdl");
11:              textReader = new System.IO.StreamReader(fileName);
12:              this.reportViewer.SourceRdl = textReader.ReadToEnd();
13:          }
14:          finally
15:          {
16:              if (textReader != null)
17:                  textReader.Close();
18:          }
19:      }
20:   
21:      //处理数据
22:      IProductInList table = DALHelper.DALManager.CreateProductInList();
23:      table.GetProductInList(this.dtpStartTime.Value,this.dtpEndTime.Value, this.tbSearch.Text);
24:      this.reportViewer.DataObject = table;
25:  }        

运行结果

    编译并运行程序,我们看一下运行效果:

image
        打印预览:

image

我们把报表导出来,选择导出Excel格式:

014M7TW{9157IJF_E8AS%O4

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

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

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

链接

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

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

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

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

AgileEAS.NET官方网站

敏捷软件工程实验室

QQ群:116773358


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



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

相关文章
|
8月前
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
172 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
8月前
|
开发框架 JavaScript .NET
asp.net中条件查询+分页
asp.net中条件查询+分页
|
22天前
|
网络协议 C#
基于.NET WinForm开发的一款硬件及协议通讯工具
基于.NET WinForm开发的一款硬件及协议通讯工具
|
2月前
|
前端开发 Android开发
WinForm 直接运行 Admin.NET
本文介绍了如何将 Admin.NET 以 WinForm 桌面程序模式运行,简化了手动配置 Web 服务的过程,便于演示和作为单机软件使用。通过添加特定 NuGet 包、修改 `Program.cs` 和 `Form1.cs` 文件,并调整项目配置,最终实现了在 WinForm 中嵌入 WebView 组件显示 Admin.NET 界面的效果。
30 0
WinForm 直接运行 Admin.NET
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
本文讨论了在基于.NET 6和.NET Framework的WinForms项目中添加图表控件的不同方法。由于.NET 6的WinForms项目默认不包含Chart控件,可以通过NuGet包管理器安装如ScottPlot等图表插件。而对于基于.NET Framework的WinForms项目,Chart控件是默认存在的,也可以通过NuGet安装额外的图表插件,例如LiveCharts。文中提供了通过NuGet添加图表控件的步骤和截图说明。
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
|
5月前
|
开发框架 前端开发 算法
分享 .NET EF6 查询并返回树形结构数据的 2 个思路和具体实现方法
分享 .NET EF6 查询并返回树形结构数据的 2 个思路和具体实现方法
101 0
|
5月前
|
SQL Oracle 关系型数据库
.NET 开源快捷的数据库文档查询和生成工具
【8月更文挑战第1天】推荐几款.NET开源数据库文档工具:1. DBDocumentor,支持多类型数据库,快速生成详尽文档;2. SqlDoc,界面简洁,自定义内容与格式;3. DBInfo,强大查询功能,支持多种导出格式。这些工具有效提升文档管理效率与质量。
|
6月前
|
C#
效率提升利器:一个在线的.NET源码查询网站
效率提升利器:一个在线的.NET源码查询网站
|
8月前
|
Android开发 开发者 UED
探索安卓应用开发中的UI设计趋势
随着移动应用市场的不断发展和用户需求的变化,安卓应用的UI设计趋势也在不断演进。本文将深入探讨当前安卓应用开发中的UI设计趋势,包括暗黑模式、原生化设计、动效设计等方面的发展趋势,为开发者提供参考和启发。
|
8月前
|
SQL 数据库
使用ADO.NET查询和操作数据
使用ADO.NET查询和操作数据