一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-库存查询模块

简介:

回顾与说明

    前面我就用了大量的篇幅我讲解了“商品入库”模块,在商品入库模块之中,我们介绍 了与之相关的管理信息系统开发中的一个共性场景,以及这个应用场景中所涉及的缓存、业务处理、票据打印等相关的技术。
    可以说,在WinForm篇中的示例代码之中,最有价值的模块就是“商品入库”,在真实的MIS应用场景中,有至少60%的应用与“商品入库”类似。

本文的内容

    我们通过“商品入库模块”完成了商品的库操作,系统会写入数据库商品入库明细和商品库存信息,那么这些信息如何查呢,我们得提供“库存信息查询”和“入库记录查询”两个模块。
     本文将详细的介绍“库存信息查询”模块实现过程,“库存信息查询”要实现的功能为:根据用户的输入码(拼音简码)和查询选项(是否显示零库存记录)查询商品库存信息(库存表)并显示在界面上,操作员也可以选择把查询结果打印出来。

制做界面

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

 处理查询

      接下来我们编写查询相关的代码,先在数据层接口项目中的IProductStoreList的分部类定义IProductStoreList.cs文件中增加如下代码:
 1:  /// <summary>
 2:  /// 表接口 IProductStoreList(产品库存)。
 3:  /// </summary>
 4:  public partial interface IProductStoreList
 5:  {
 6:      /// <summary>
 7:      /// 查询商品库存。
 8:      /// </summary>
 9:      /// <param name="pyCode">拼音码。</param>
10:      /// <param name="showZero">是否显示零库存记录。</param>
11:      void GetProductStoreList(string pyCode,bool showZero);
12:  }
         同样,我们需要在数据层实现项目中实现这个方法:  
 1:  public void GetProductStoreList(string pyCode, bool showZero)
 2:  {
 3:      Condition condition = this.CreateCondition();
 4:   
 5:      if (pyCode.Length > 0)
 6:      {
 7:          condition.AddElement("SqlText", "CODE in (select CODE from dbo.PRODUCT where PYCODE like '" + pyCode + "%')", ElementType.SqlCondition);
 8:      }
 9:   
10:      if (!showZero)
11:          condition.AddElement("NUMBER", 0, ElementType.GreaterThan);
12:   
13:      condition.AddOrderElement("CODE");
14:      condition.AddOrderElement("IDN", true);
15:      this.Query(condition);
16:  }
          大家在这地方仔细看一下,因为在商品库存表中没有定义产品的拼音简码,所以我就使用了一个字查询,并以SQL条件的形式写了出来,在实现应用中,应该在产品库存表中增加拼音简码字典,以方便查询。
        接下来我们写编写UI中的“查询”按钮的事件处理代码如下:
 1:  private void btnSearch_Click(object sender, EventArgs e)
 2:          {
 3:              IProductStoreList table = DALHelper.DALManager.CreateProductStoreList();
 4:              table.GetProductStoreList(this.tbSearch.Text, this.cnZero.Checked);
 5:   
 6:              decimal sumMoney = decimal.Zero;
 7:   
 8:              try
 9:              {
10:                  this.Cursor = Cursors.WaitCursor;
11:                  this.lvInfo.Tag = table;
12:   
13:                  this.lvInfo.BeginUpdate();
14:                  this.lvInfo.Items.Clear();
15:   
16:                  foreach (IProductStore ps in table.Rows)
17:                  {
18:                      decimal money = ps.Price * ps.Number;
19:                      sumMoney += money;
20:                      ListViewItem item = new ListViewItem(new string[] { string.Empty, ps.Code, ps.Name, ps.Spec, ps.Unit, ps.Price.ToString("F2"), ps.Number.ToString(), money.ToString("F2") }, 0);
21:                      this.lvInfo.Items.Add(item);
22:                  }
23:   
24:              }
25:              finally
26:              {
27:                  this.lvInfo.EndUpdate();
28:                  this.Cursor = Cursors.Default;
29:              }
30:   
31:              this.lblTip.Text = "汇总:共有记录" + table.Rows.Count + "条,总金额" + sumMoney .ToString("F2")+ "元";
32:          }        
       到这一步,我们就完成了数据查询并且显示在界面上的需求,下一步完成打开导出。

处理打印

      首先,我们需要制作报表,这一步在前面的文章中已经有过详细的介绍了,在这我就不介绍了,选择对象报表,数据对象为Product.DAL.SQLServer.ProductStoreList,我们做出如下样式的报表:
VF02_C{I~7`84YDLRH1OI9O
        把制作好的报表保存在编译目标目录中的Reports文件夹中并取名为商品库存查询报.rdl。
       接下来我们修改程序,把报表挂载进来,编写“打印预览”按钮的事件处理代码:
 1:  private void btnPrint_Click(object sender, EventArgs e)
 2:  {
 3:      if (this.lvInfo.Items.Count == 0)
 4:      {
 5:          MessageBox.Show("没有需要打印的数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
 6:          return;
 7:      }
 8:   
 9:      if (this.printForm == null)
10:          this.printForm = new RDLViewDialog();
11:   
12:      //
13:      System.IO.TextReader textReader = null;
14:      try
15:      {
16:          string fileName = Path.Combine(Application.StartupPath, "Reports\\商品库存查询报表.rdl");
17:          textReader = new System.IO.StreamReader(fileName);
18:          this.printForm.SourceRdl = textReader.ReadToEnd();
19:      }
20:      finally
21:      {
22:          if (textReader != null)
23:              textReader.Close();
24:      }
25:   
26:      this.printForm.DataObject = this.lvInfo.Tag;
27:      this.printForm.PrintPreview();
28:  }

 修改程序,控制打印

       编译并运行程序,我们看一下运行效果:
image
        打印预览:
 
image
 
       至此,“商品库存查询”模块的相关处理就此结束,接下来我将介绍“入库信息查询”,这个模块我将介绍大家直接使用报表做为UI呈现主体,希望大家感兴趣,对AgileEAS.NET平台感兴趣的朋友呢,可以下载了完整代码之后自己看看,有问题请及时的和我联系。  
      有关本例所涉及的数据表结构请参考 基于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/603069
相关文章
|
12天前
|
开发框架 监控 .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
|
25天前
|
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控件,该如何解决?
|
2月前
|
数据采集 JSON API
.NET 3.5 中 HttpWebRequest 的核心用法及应用
【9月更文挑战第7天】在.NET 3.5环境下,HttpWebRequest 类是处理HTTP请求的一个核心组件,它封装了HTTP协议的细节,使得开发者可以方便地发送HTTP请求并接收响应。本文将详细介绍HttpWebRequest的核心用法及其实战应用。
127 6
|
2月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
43 7
|
2月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
60 0
|
3月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
49 0
|
3月前
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?
|
3月前
|
开发框架 .NET
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
127 0
|
6月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
194 0

热门文章

最新文章