一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-入库业务结尾工作-演示单据的打印

简介:

回顾与说明

     首先给大家说声抱歉,上一周忙了一些其他的事,博客也就差不多一周没有更新,让关注AgileEAS.NET平台的朋友们久等了,希望大家能继续关注AgileEAS.NET平台,关注AgileEAS.NET平台所采用的架构设计实践和AgileEAS.NET平台背后的一些软件工程实践思考。
     前面我用了至少两篇直接的文章对“商品入库”模块进行了详细的说明,我想大家已经很清楚的知道商品入库处理的流程、技术特别以及特别查询的缓存查询技术。为什么我要在这么一个简单的模块费多少大的口舌呢?
    因为,“商品入库”是一个在管理信息系统(MIS)之中非常典型的应用场景,在这个很小的应用场景之中,我们涉及到了字典信息查询、中间结果保存、事务处理以及马上要进行的“票据打印”,可以说基本是一个信息系统中在线事务处理或者数据采集应用的一个缩影,当我们能熟练的能使用AgileEAS.NET平台开发这样的应用的时候,那么MIS系统将在我们面前没有一些难度。

本文的内容

     前面的文章,我已经把“商口入库”模块之中的字典查询以及其中使用的缓存技术、中间数据记录、业务的处理及事务等进行了详细的介绍,今天本文的重点是入库单(票据)打印业务。
     那么这是一个什么场景呢,当我们点击“入库”按钮完成入库今年的保存之后,我们需要点击“打印”按钮完成入库票据的打印,或者当我们完成入库按钮之后完成入库之后即打印本次业务的业务票据,操作界面上有“直接输出打印机”的选项,如果选中则不显示打印预览对话框。
image
 

准备报表,以备调用

      首先我们制做报表,打开报表设计器ReportDesigner.Start.exe,通过菜单“文件”-->“新建”-->“对象报表”,打开“新建数据对象报表”对话框,然后选择“数据对象”Tab页,点击“浏览”选择编译目标目录中的“Product.DAL.SQLServer.dll”,在类型下接列表之选择Product.DAL.SQLServer.ProductInList:
image
       现在我们单击“确定”按钮,使用报表设计器调整报表格式,达到以下样式:
 
image
 
        我们可以在报表设计器中预览一下,注意: 因为是基于数据对象的报表不能连接数据库,所以数据都是随机生成的,用于模拟显示。
image
 
        现在报表已经做好,我们把报表定义保存在编译目标目录的Report文件夹中,名称为“商品入库单据.rdl”。

修改程序,控制打印

      报表已经制作好了,现在的任务就是在程序中加载报表,并且绑定要打印的数据,那么数据从那来呢,我们已经完成了商品的入库并且我们知道刚刚完成的入库单号,我们可以通过入库单号来查询入库表,从来得到指定入库单中的入库记录,要达到这样的需求,我们需要在DAL层接口项目Product.DAL.Interface中的IProductInList中增加一个方法:
 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     }
     同时需要在DAL层SQLService实现项目Product.DAL.SQLServer中的ProductInList类中实现这个方法:
 1       ///   <summary>
 2       ///  表对象 ProductInList(产品入库)。
 3       ///   </summary>
 4      public   partial   class  ProductInList:EAS.Data.ORM.Table, IProductInList
 5     {
 6          public   void  GetProductInList( string  billCode)
 7         {
 8             Condition condition  =   this .CreateCondition();
 9             condition.AddElement( " BILLCODE " , billCode);
10              this .Query(condition);
11         }
12     }
     接下来我们来写“打印”按钮的事件处理代码,实现数据提取与报表打印:
 1           private   void  btnPrint_Click( object  sender, EventArgs e)
 2          {
 3              IProductInList productInList  =  DALHelper.DALManager.CreateProductInList();
 4              productInList.GetProductInList( this .previouBillCode);
 5 
 6               if  (productInList.Rows.Count  ==   0 )
 7              {
 8                  MessageBox.Show( " 没有需要打印的数据! " " 提示 " , MessageBoxButtons.OK, MessageBoxIcon.Information);
 9                   return ;
10              }
11 
12               if  ( this .printForm  ==   null )
13                   this .printForm  =   new  RDLViewDialog();
14 
15               //
16              System.IO.TextReader textReader  =   null ;
17               try
18              {
19                   string  fileName  =  Path.Combine(Application.StartupPath,  " Reports\\商品入库单据.rdl " );
20                  textReader  =   new  System.IO.StreamReader(fileName);
21                   this .printForm.SourceRdl  =  textReader.ReadToEnd();
22              }
23               finally
24              {
25                   if  (textReader  !=   null )
26                      textReader.Close();
27              }
28 
29               this .printForm.DataObject  =  productInList;
30 
31               if  ( this .cbPrinter.Checked)
32                   this .printForm.Print();  // 直接打印
33               else
34                   this .printForm.PrintPreview();   // 打印预览
35          }
      现在,商品入库单-票据打印就解决了,我们来看一下效果吧:
image
      注意: 在实际应用中,在需要频繁的使用单根打印的过程之中会直接输出到打印机而不会使用打印预览对话框,比如在银行、电信、电力、医疗等各行业的窗口业务模块。
 
     至此,“商品入库”模块的相关处理就此结束,接下来演示两个查询类模块“库存查询”与“入库信息查询”。对这东西感兴趣的朋友呢,可以下载了完整代码之后自己看看,有问题请及时的和我联系。
      有关本例所涉及的数据表结构请参考 基于AgileEAS.NET平台基础类库进行应用开发-总体说明及数据定义一文,有关数据对象模型定义文件、文档、DDL脚本请下载: http://files.cnblogs.com/eastjade/demo.db.doc.sql.rar,本例完整代码下载: Product.Demo.rar

链接

QQ群:116773358

本文转自 agilelab 51CTO博客,原文链接:http://blog.51cto.com/agilelab/603067

相关文章
|
8天前
|
弹性计算 开发框架 安全
基于云效 Windows 构建环境和 Nuget 制品仓库进行 .Net 应用开发
本文将基于云效 Flow 流水线 Windows 构建环境和云效 Packages Nuget 制品仓库手把手教你如何开发并部署一个 .NET 应用,从环境搭建到实战应用发布的详细教程,帮助你掌握 .NET 开发的核心技能。
|
26天前
|
前端开发 Android开发
WinForm 直接运行 Admin.NET
本文介绍了如何将 Admin.NET 以 WinForm 桌面程序模式运行,简化了手动配置 Web 服务的过程,便于演示和作为单机软件使用。通过添加特定 NuGet 包、修改 `Program.cs` 和 `Form1.cs` 文件,并调整项目配置,最终实现了在 WinForm 中嵌入 WebView 组件显示 Admin.NET 界面的效果。
22 0
WinForm 直接运行 Admin.NET
|
29天前
|
机器学习/深度学习 人工智能 Cloud Native
在数字化时代,.NET 技术凭借其跨平台兼容性、丰富的类库和工具集以及卓越的性能与效率,成为软件开发的重要平台
在数字化时代,.NET 技术凭借其跨平台兼容性、丰富的类库和工具集以及卓越的性能与效率,成为软件开发的重要平台。本文深入解析 .NET 的核心优势,探讨其在企业级应用、Web 开发及移动应用等领域的应用案例,并展望未来在人工智能、云原生等方面的发展趋势。
34 3
|
1月前
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
|
1月前
|
JSON 算法 安全
JWT Bearer 认证在 .NET Core 中的应用
【10月更文挑战第30天】JWT(JSON Web Token)是一种开放标准,用于在各方之间安全传输信息。它由头部、载荷和签名三部分组成,用于在用户和服务器之间传递声明。JWT Bearer 认证是一种基于令牌的认证方式,客户端在请求头中包含 JWT 令牌,服务器验证令牌的有效性后授权用户访问资源。在 .NET Core 中,通过安装 `Microsoft.AspNetCore.Authentication.JwtBearer` 包并配置认证服务,可以实现 JWT Bearer 认证。具体步骤包括安装 NuGet 包、配置认证服务、启用认证中间件、生成 JWT 令牌以及在控制器中使用认证信息
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控件,该如何解决?
|
3月前
|
数据采集 JSON API
.NET 3.5 中 HttpWebRequest 的核心用法及应用
【9月更文挑战第7天】在.NET 3.5环境下,HttpWebRequest 类是处理HTTP请求的一个核心组件,它封装了HTTP协议的细节,使得开发者可以方便地发送HTTP请求并接收响应。本文将详细介绍HttpWebRequest的核心用法及其实战应用。
150 6
|
3月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
48 7
|
3月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
75 0
|
4月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
56 0