一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-演示使用报表构建UI-入库业务查询模块
2010-11-09 10:11
986 查看
[b]回顾与说明[/b]
前面我们把“商品字典”、“商品入库”、“商品库存查询”三个模块已经概括或者详细的演示完了,这些模块涉及到简单数据的增、删、修,也涉及到复杂业务处理的事务、业务层提取,以及MIS系统中非常常见的查询、报表打印技术和基础字典的缓存查询技术。本文内容
今天我们将以另外一种技术实现另一个模块“商品入库查询”,将采用何种技术呢,其实也是一个很简单的技术,在构建UI应用中使用报表技术,即我们把打印预览的报表技术使用在业务查询应用的主体UI之中,如下图所示一样的效果:制做界面
首先,我们需要在UI项目中增加一个WinForm窗体ProductInQueryForm拖动控件达到如下效果:在这里,我们需要注意的是需要向界面放一个报表预览控件,报表预览控件由EAS.Report.Controls程序集承载,类型EAS.Report.Controls.RDLReportViewer,打印预览控件工具条显示位置由属性ToolBoxDockStyle决定,我们设置为DockStyle.Bottom。
处理查询
接下来我们编写查询相关的代码,先在数据层接口项目中的IProductInList的分部类定义IProductInList.cs文件中增加如下代码:///<summary>
///表接口IProductInList(产品入库)。
///</summary>
publicpartialinterfaceIProductInList
{
///<summary>
///根据入库票据号查询入库明细。
///</summary>
///<paramname="billCode">入库票据号。</param>
voidGetProductInList(stringbillCode);
///<summary>
///根据入库时间及拼音简码查询入库明细。
///</summary>
///<paramname="startTime">开始时间。</param>
///<paramname="endTime">结束时间。</param>
///<paramname="pyCode">拼音简码。</param>
voidGetProductInList(DateTimestartTime,DateTimeendTime,stringpyCode);
}
.codearea{color:black;background-color:white;line-height:18px;border:1pxsolid#4f81bd;margin:0;width:auto!important;width:100%;overflow:auto;text-align:left;font-size:12px;font-family:"CourierNew","Consolas","Fixedsys","BitStreamVeraSansMono",courier,monospace,serif}
.codeareapre{color:black;line-height:18px;padding:00012px!important;margin:0em;background-color:#fff!important}
.linewrappre{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;word-break:normal}
.codeareapre.alt{background-color:#f7f7ff!important}
.codearea.lnum{color:#4f81bd;line-height:18px}
同样,我们需要在数据层实现项目中实现这个方法:
publicvoidGetProductInList(DateTimestartTime,DateTimeendTime,stringpyCode)
{
Conditioncondition=this.CreateCondition();
if(!startTime.Equals(endTime))
{
List<DateTime>times=newList<DateTime>(2);
times.Add(startTime);
times.Add(endTime);
condition.AddElement("InTime",times,ElementType.BetWeen);
}
if(pyCode.Length>0)
condition.AddElement("SqlText","CODEin(selectCODEfromdbo.PRODUCTwherePYCODElike'"+pyCode+"%')",ElementType.SqlCondition);
this.Query(condition);
}
.codearea{color:black;background-color:white;line-height:18px;border:1pxsolid#4f81bd;margin:0;width:auto!important;width:100%;overflow:auto;text-align:left;font-size:12px;font-family:"CourierNew","Consolas","Fixedsys","BitStreamVeraSansMono",courier,monospace,serif}
.codeareapre{color:black;line-height:18px;padding:00012px!important;margin:0em;background-color:#fff!important}
.linewrappre{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;word-break:normal}
.codeareapre.alt{background-color:#f7f7ff!important}
.codearea.lnum{color:#4f81bd;line-height:18px}
大家在这地方仔细看一下,因为在商品库存表中没有定义产品的拼音简码,所以我就使用了一个字查询,并以SQL条件的形式写了出来,在实现应用中,应该在产品库存表中增加拼音简码字典,以方便查询。
制作报表
这一步在前面的文章中已经有过详细的介绍了,在这就简单的走过,打开报表设计器,选择对象报表,数据对象为Product.DAL.SQLServer.ProductInList,我们做出如下样式的报表:需要注意的是,在这个报表中,我增加了一个分组,按单据号进行分组并显示分组统计,完成报表设计之后,保存在编译目标目录中的Reports文件夹中并取名为“商品入库查询报表.rdl”。
集成代码
接下来我们修改程序,把报表挂载进来,编写“查询”按钮的事件处理代码:privatevoidbtnSearch_Click(objectsender,EventArgse)
{
//加载报表
if(this.reportViewer.SourceRdl==null)
{
System.IO.TextReadertextReader=null;
try
{
stringfileName=Path.Combine(Application.StartupPath,"Reports\\商品入库查询报表.rdl");
textReader=newSystem.IO.StreamReader(fileName);
this.reportViewer.SourceRdl=textReader.ReadToEnd();
}
finally
{
if(textReader!=null)
textReader.Close();
}
}
//处理数据
IProductInListtable=DALHelper.DALManager.CreateProductInList();
table.GetProductInList(this.dtpStartTime.Value,this.dtpEndTime.Value,this.tbSearch.Text);
this.reportViewer.DataObject=table;
}
运行结果
编译并运行程序,我们看一下运行效果:
打印预览:
我们把报表导出来,选择导出Excel格式:
这里我们需要注意的是:导出Excel格式只支持Excel2007格式,这个让我很纠结,我不喜欢装备庞大的office2007,2010更是用一个月就用不成了,挺郁闷的,Wps自带的表格软件打不开这个格式。
至此,“商品入库查询”模块的相关处理就此结束,接下来我将介绍“商品字典”的另一个实现,同时演示ORM对象与DataGridView的绑定技术,希望大家感兴趣,对AgileEAS.NET平台感兴趣的朋友呢,可以下载了完整代码之后自己看看,有问题请及时的和我联系。
有关本例所涉及的数据表结构请参考
链接
QQ群:116773358
相关文章推荐
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-演示使用报表构建UI-入库业务查询模块
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-入库业务结尾工作-演示单据的打印
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-入库业务结尾工作-演示单据的打印
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-复杂业务的实现(商品入库)-附案例操作视频
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-复杂业务的实现(商品入库)-附案例操作视
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-库存查询模块
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-库存查询模块
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-在UI中应用DataUIMapper组件
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-实例一个模块(商品字典)
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-实例一个模块(商品字典)
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-在UI中应用DataUIMapper组件
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-演示ORM对象与DataGridView的绑定技术-商品字典的另一个实现
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-演示ORM中的查询
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-演示ORM中的查询
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-实现字典的打印
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-实现字典的打印
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-演示ORM的基本操作
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-演示ORM的基本操作
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-演示ORM的批量删除与更新
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-通过SQL实现特殊业务