前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-入库业务结尾工作-演示单据的打印

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

作者头像
魏琼东
发布2018-01-12 11:18:07
8950
发布2018-01-12 11:18:07
举报
文章被收录于专栏:魏琼东魏琼东
回顾与说明

     首先给大家说声抱歉,上一周忙了一些其他的事,博客也就差不多一周没有更新,让关注AgileEAS.NET平台的朋友们久等了,希望大家能继续关注AgileEAS.NET平台,关注AgileEAS.NET平台所采用的架构设计实践和AgileEAS.NET平台背后的一些软件工程实践思考。

     前面我用了至少两篇直接的文章对“商品入库”模块进行了详细的说明,我想大家已经很清楚的知道商品入库处理的流程、技术特别以及特别查询的缓存查询技术。为什么我要在这么一个简单的模块费多少大的口舌呢?

    因为,“商品入库”是一个在管理信息系统(MIS)之中非常典型的应用场景,在这个很小的应用场景之中,我们涉及到了字典信息查询、中间结果保存、事务处理以及马上要进行的“票据打印”,可以说基本是一个信息系统中在线事务处理或者数据采集应用的一个缩影,当我们能熟练的能使用AgileEAS.NET平台开发这样的应用的时候,那么MIS系统将在我们面前没有一些难度。

本文的内容

     前面的文章,我已经把“商口入库”模块之中的字典查询以及其中使用的缓存技术、中间数据记录、业务的处理及事务等进行了详细的介绍,今天本文的重点是入库单(票据)打印业务。

     那么这是一个什么场景呢,当我们点击“入库”按钮完成入库今年的保存之后,我们需要点击“打印”按钮完成入库票据的打印,或者当我们完成入库按钮之后完成入库之后即打印本次业务的业务票据,操作界面上有“直接输出打印机”的选项,如果选中则不显示打印预览对话框。

image
image
准备报表,以备调用

      首先我们制做报表,打开报表设计器ReportDesigner.Start.exe,通过菜单“文件”-->“新建”-->“对象报表”,打开“新建数据对象报表”对话框,然后选择“数据对象”Tab页,点击“浏览”选择编译目标目录中的“Product.DAL.SQLServer.dll”,在类型下接列表之选择Product.DAL.SQLServer.ProductInList:

image
image

       现在我们单击“确定”按钮,使用报表设计器调整报表格式,达到以下样式:

image
image

        我们可以在报表设计器中预览一下,注意:因为是基于数据对象的报表不能连接数据库,所以数据都是随机生成的,用于模拟显示。

image
image

        现在报表已经做好,我们把报表定义保存在编译目标目录的Report文件夹中,名称为“商品入库单据.rdl”。

修改程序,控制打印

      报表已经制作好了,现在的任务就是在程序中加载报表,并且绑定要打印的数据,那么数据从那来呢,我们已经完成了商品的入库并且我们知道刚刚完成的入库单号,我们可以通过入库单号来查询入库表,从来得到指定入库单中的入库记录,要达到这样的需求,我们需要在DAL层接口项目Product.DAL.Interface中的IProductInList中增加一个方法:

代码语言:js
复制
 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类中实现这个方法:

代码语言:js
复制
 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    }

     接下来我们来写“打印”按钮的事件处理代码,实现数据提取与报表打印:

代码语言:js
复制
 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
image

      注意:在实际应用中,在需要频繁的使用单根打印的过程之中会直接输出到打印机而不会使用打印预览对话框,比如在银行、电信、电力、医疗等各行业的窗口业务模块。

     至此,“商品入库”模块的相关处理就此结束,接下来演示两个查询类模块“库存查询”与“入库信息查询”。对这东西感兴趣的朋友呢,可以下载了完整代码之后自己看看,有问题请及时的和我联系。

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2010-11-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 回顾与说明
  • 本文的内容
  • 准备报表,以备调用
  • 修改程序,控制打印
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档