<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_DotNet菜园</title><subtitle type="text">专注所以专业,专业所以专注</subtitle><id>http://feed.cnblogs.com/blog/u/13897/rss</id><updated>2012-01-05T14:01:30Z</updated><author><name>DotNet菜园</name><uri>http://www.cnblogs.com/chillsrc/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chillsrc/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/13897/rss"/><entry><id>http://www.cnblogs.com/chillsrc/archive/2012/01/05/2313691.html</id><title type="text">正则表达式与模版解析的性能比较</title><summary type="text">正则表达式与模版解析的性能比较</summary><published>2012-01-05T14:02:00Z</published><updated>2012-01-05T14:02:00Z</updated><author><name>DotNet菜园</name><uri>http://www.cnblogs.com/chillsrc/</uri></author><link rel="alternate" href="http://www.cnblogs.com/chillsrc/archive/2012/01/05/2313691.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chillsrc/archive/2012/01/05/2313691.html"/><content type="html">&lt;p&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;---正则表达式与模版解析的性能比较&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//使用正则表达式获取需要的货号&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//对于企业工单导入时对工单表头中的货号是否存在于工单工作表与历史表中进行验证 &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;private&amp;nbsp; bool IsVerfiyHeadItemNo(string templateName)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;bool result=true;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;using(FormatConvert.EPDAO.TxtConnection&amp;nbsp; conn=new FormatConvert.EPDAO.TxtConnection (this.ImportFile.FullName))&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#region 工单表头中的货号验证&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;conn.Open();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;using(StreamReader sr = new StreamReader( conn.Stream,ConfigHelper.TxtCoding))&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;conn.Stream.Position = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;string txt= "";&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;int linesum = 0;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;while((txt = sr.ReadLine()) != null)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (!IsHead(txt))&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;continue;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;string itemno=GetItemNo(txt);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;linesum++;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if(&amp;nbsp;&amp;nbsp; &amp;nbsp;itemno!=string.Empty)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;result=this.IsUnique(itemno,linesum);&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (result==false)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;this.ImportFile.CopyTo(Constants.g_ownListErrorPath+"\\"+this.ImportFile.Name,true);//备份文件.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return result;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#endregion&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}return result;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//根据模版解析当前报文的行（按行解析并返回对象）&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//对于企业工单导入时对工单表头中的货号是否存在于工单工作表与历史表中进行验证&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;private&amp;nbsp; bool IsVerfiyHeadItemNoLine(string templateName)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;bool result=true;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;using(FormatConvert.EPDAO.TxtConnection&amp;nbsp; conn=new FormatConvert.EPDAO.TxtConnection (this.ImportFile.FullName))&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#region 工单表头中的货号验证&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;conn.Open();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;TxtTemplate template = TemplateFactory.GetTemplate(Ems_Edi_Wo_HeadDao.templatePath,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;templateName,typeof(Ems_Edi_Wo_HeadDao.DB_COLS),typeof(EMS_EDI_WO_HEAD.COLS),typeof(EMS_EDI_WO_HEAD));&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;using(StreamReader sr = new StreamReader( conn.Stream,ConfigHelper.TxtCoding))&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;conn.Stream.Position = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;string txt= "";&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;TxtMessage msg=new TxtMessage();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;int linesum = 0;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;while((txt = sr.ReadLine()) != null)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (!IsHead(txt))&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;continue;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;TxtLine line=new TxtLine(txt);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;msg.AddLine(line);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;IList tmpWo_head=template.TranslateTxt(msg);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;EMS_EDI_WO_HEAD head=tmpWo_head[0] as EMS_EDI_WO_HEAD;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;string itemno=head.Item_No;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;linesum++;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if(&amp;nbsp;&amp;nbsp; &amp;nbsp;itemno!=string.Empty)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;result=this.IsUnique(itemno,linesum);&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (result==false)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return result;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;msg.clear();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#endregion&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}return result;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//实体类赋值&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/// &amp;lt;summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/// 用模版解析当前报文的行（按行解析并返回对象）&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/// &amp;lt;param name="line"&amp;gt;报文行对象&amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;public IModel TranslateLine(TxtLine line)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;string txtbody = line.Txtbody;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;object model = GetModelInstance();&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SetModelProperty(model,txtbody);&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return (IModel)model;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/// &amp;lt;summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/// 将报文中当前行的信息放入model中&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/// &amp;lt;param name="model"&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/// &amp;lt;param name="txt"&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;private void SetModelProperty(object model,string txt)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for(int i=1;i&amp;lt;dt.Rows.Count;i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;int length = Convert.ToInt32(dt.Rows[i]["FIELDLENGTH"]);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;string name = dt.Rows[i]["ColName"].ToString();&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;string val = GetEncodingString(txt,length);&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;name = NameCol2Prop(name).ToString();&amp;nbsp; //根据Dao中定义的数据库枚举返回Model成员变量的枚举值&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SetValue(model,name,val);&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;txt = CutStringByLength(txt,length);&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;----------正则判断---------&lt;br /&gt;&lt;br /&gt;模板解析验证共644条记录&lt;br /&gt;第一次：费时0分0秒546毫秒&lt;/p&gt;&#xD;
&lt;p&gt;第二次：费时0分0秒500毫秒&lt;br /&gt;第三次：费时0分0秒500毫秒&lt;br /&gt;第四次：费时0分0秒515毫秒&lt;br /&gt;第五次：费时0分0秒578毫秒&lt;br /&gt;-------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;正则解析验证共644条记录&lt;br /&gt;第一次：费时0分0秒406毫秒&lt;br /&gt;第二次：费时0分0秒390毫秒&lt;br /&gt;&lt;br /&gt;第三次：费时0分0秒390毫秒&lt;br /&gt;第四次：费时0分0秒390毫秒&lt;br /&gt;第五次：费时0分0秒406毫秒&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;模板解析/正则解析&lt;br /&gt;2639/1982=133.15%&lt;br /&gt;正则解析/模板解析&lt;br /&gt;1982/2639=75.10%&lt;/p&gt;&lt;img src="http://www.cnblogs.com/chillsrc/aggbug/2313691.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/chillsrc/archive/2012/01/05/2313691.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/chillsrc/archive/2012/01/05/2313685.html</id><title type="text">关于拼sql语句执行与直接执行存储过程的效率比较</title><summary type="text">关于拼sql语句执行与直接执行存储过程的效率比较</summary><published>2012-01-05T13:57:00Z</published><updated>2012-01-05T13:57:00Z</updated><author><name>DotNet菜园</name><uri>http://www.cnblogs.com/chillsrc/</uri></author><link rel="alternate" href="http://www.cnblogs.com/chillsrc/archive/2012/01/05/2313685.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chillsrc/archive/2012/01/05/2313685.html"/><content type="html">&lt;p&gt;1.关于拼sql语句执行与直接执行存储过程的效率比较&lt;/p&gt;&#xD;
&lt;p&gt;最近对于一个旧的程序的导入进行优化，不过由于这个导入程序原来是直接在程序中使用拼SQL语句执行导入，执行时间较长，一般要十分钟左右。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;1）在程序代码中拼sql语句，类似代码如下：&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;System.Data.OleDb.OleDbCommand Command=conn.CreateCommand();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Command.CommandTimeout=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Command.Transaction=trans;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Command.CommandType=CommandType.Text;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;string sql="";&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for(int i=0;i&amp;lt;IWo_Img.Count;i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Wo_Img=IWo_Img[i] as EMS_EDI_WO_IMG;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Wo_ImgDb.Wo_No=Wo_Img.Wo_No;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Wo_ImgDb.Comp_No=Wo_Img.Comp_No;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Wo_ImgDb.Take_Date_=Wo_Img.Take_Date;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Wo_ImgDb.Ems_No= ems_no;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Wo_ImgDb.Process_No=Wo_Img.Process_No;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Wo_ImgDb.Item_No_=Wo_Img.Item_No;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Wo_ImgDb.Take_Type_=Wo_Img.Take_Type;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Wo_ImgDb.Qty_=Wo_Img.Qty.ToString();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Wo_ImgDb.Unit_=Wo_Img.Unit;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Wo_ImgDb.Pcno=pcsum;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;sql ="insert into EMS_EDI_WO_IMG(WO_NO,COMP_NO,Take_Date,PROCESS_NO,Item_No,Take_Type,Qty,Unit,EMS_NO,PCNO) " +&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; " values('"+Wo_ImgDb.Wo_No +"','"+Wo_ImgDb.Comp_No+"','"+Wo_ImgDb.Take_Date_+"','"+Wo_ImgDb.Process_No+"','"+Wo_ImgDb.Item_No_+"','" +&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; Wo_ImgDb.Take_Type_ +"','"+Wo_ImgDb.Qty_+"','"+Wo_ImgDb.Unit_+"','"+Wo_ImgDb.Ems_No+"','"+Wo_ImgDb.Pcno+"'"+&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; ")";&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Command.CommandText=sql;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Command.ExecuteNonQuery();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;this.m_Actor.ShowCurrentValue(j+1);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;j=j+1;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if((j%1000==0) &amp;amp;&amp;amp; (j!=0))&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;this.m_Actor.ShowMessage("成功导入1000条工单领料信息数据!");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Command.Dispose();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;执行5次，每次执行时都重启一下数据库，每次导入8000条数据，执行时间为：&lt;br /&gt;第一次：费时0分2秒609毫秒&lt;br /&gt;第二次：费时0分2秒375毫秒&lt;br /&gt;第三次：费时0分2秒421毫秒&lt;br /&gt;第四次：费时0分2秒562毫秒&lt;br /&gt;第五次：费时0分2秒437毫秒&lt;br /&gt;&lt;br /&gt;2）使用存储过程来插入数据，代码如下：&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;System.Data.OleDb.OleDbCommand Command=conn.CreateCommand();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Command.CommandTimeout=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Command.Transaction=trans;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Command.CommandType=CommandType.StoredProcedure;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Command.CommandText="SP_InsWOImgList";&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;System.Data.OleDb.OleDbParameter [] parameters={ &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; new System.Data.OleDb.OleDbParameter("wono",OleDbType.VarChar,50)&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; ,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; new System.Data.OleDb.OleDbParameter("tradeCo",OleDbType.VarChar,10)&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; ,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; new System.Data.OleDb.OleDbParameter("takeDate",OleDbType.VarChar,12)&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; ,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; new System.Data.OleDb.OleDbParameter("processNo",OleDbType.VarChar,50)&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; ,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; new System.Data.OleDb.OleDbParameter("itemNo",OleDbType.VarChar,50)&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; ,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; new System.Data.OleDb.OleDbParameter("takeType",OleDbType.VarChar,10)&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; ,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; new System.Data.OleDb.OleDbParameter("qty",OleDbType.VarChar,50)&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; ,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; new System.Data.OleDb.OleDbParameter("unit",OleDbType.VarChar,10)&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; ,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; new System.Data.OleDb.OleDbParameter("pcno",OleDbType.Integer,4)&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; ,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; new System.Data.OleDb.OleDbParameter("emsno",OleDbType.VarChar,12)&amp;nbsp;&amp;nbsp; &amp;nbsp; };&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for(int i=0;i&amp;lt;IWo_Img.Count;i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Wo_Img=IWo_Img[i] as EMS_EDI_WO_IMG;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Command.Parameters.Clear();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Wo_ImgDb.Wo_No=Wo_Img.Wo_No;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Wo_ImgDb.Comp_No=Wo_Img.Comp_No;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Wo_ImgDb.Take_Date_=Wo_Img.Take_Date;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Wo_ImgDb.Ems_No= ems_no;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Wo_ImgDb.Process_No=Wo_Img.Process_No;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Wo_ImgDb.Item_No_=Wo_Img.Item_No;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Wo_ImgDb.Take_Type_=Wo_Img.Take_Type;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Wo_ImgDb.Qty_=Wo_Img.Qty.ToString();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Wo_ImgDb.Unit_=Wo_Img.Unit;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Wo_ImgDb.Pcno=pcsum;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;parameters[0].Value=Wo_ImgDb.Wo_No;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;parameters[1].Value=Wo_ImgDb.Comp_No;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;parameters[2].Value=Wo_ImgDb.Take_Date_;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;parameters[3].Value=Wo_ImgDb.Process_No;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;parameters[4].Value=Wo_ImgDb.Item_No_;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;parameters[5].Value=Wo_ImgDb.Take_Type_;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;parameters[6].Value=Wo_ImgDb.Qty_;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;parameters[7].Value=Wo_ImgDb.Unit_;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;parameters[8].Value=Wo_ImgDb.Pcno;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;parameters[9].Value=Wo_ImgDb.Ems_No;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (int k=0;k&amp;lt;10;k++)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Command.Parameters.Add(parameters[k]);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Command.ExecuteNonQuery();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;this.m_Actor.ShowCurrentValue(j+1);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;j=j+1;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if((j%1000==0) &amp;amp;&amp;amp; (j!=0))&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;this.m_Actor.ShowMessage("成功导入1000条工单领料信息数据!");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Command.Dispose();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;执行5次，每次执行时都重启一下数据库，每次导入8000条数据，执行时间为：&lt;br /&gt;第一次：费时0分1秒531毫秒&lt;br /&gt;第二次：费时0分1秒656毫秒&lt;br /&gt;第三次：费时0分1秒533毫秒&lt;br /&gt;第四次：费时0分1秒542毫秒&lt;br /&gt;第五次：费时0分1秒551毫秒&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;存储过程执行/程序中拼sql语句执行&lt;/p&gt;&#xD;
&lt;p&gt;7813/12404=62.99%&lt;br /&gt;程序中拼sql语句执行/存储过程执行&lt;br /&gt;12404/7813=158.76%&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;最后得出结论，存储过程的执行效率要比在程序中拼sql语句的执行效率要高。不过如果总的执行时间很长，如10分钟或是20分钟，这样节省的时间&lt;br /&gt;对用户来说可能没什么太大的感觉，例如由原来的20分钟，缩短到12-13分钟，如果不卡表比照，没什么感觉的。只有当原来是2个小时的导入时间，&lt;br /&gt;现在只要1个小时多一点，这时才会有明显的感觉。至于最后使用哪种方式，自己选择，如果导入时间在20分钟以内，如果不要求性能与效率，&lt;br /&gt;哪种方式都差不多。&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/chillsrc/aggbug/2313685.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/chillsrc/archive/2012/01/05/2313685.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/chillsrc/archive/2011/11/22/2259589.html</id><title type="text">SQL语句练习实例之九 ——对字符串进行排序</title><summary type="text">SQL语句练习实例之九 ——对字符串进行排序</summary><published>2011-11-22T15:24:00Z</published><updated>2011-11-22T15:24:00Z</updated><author><name>DotNet菜园</name><uri>http://www.cnblogs.com/chillsrc/</uri></author><link rel="alternate" href="http://www.cnblogs.com/chillsrc/archive/2011/11/22/2259589.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chillsrc/archive/2011/11/22/2259589.html"/><content type="html">&lt;p&gt;----对字符串进行排序&lt;br /&gt;---对字符串DCCBBABA 执行之后变成 AABBBCCD&lt;br /&gt;declare @str nvarchar(20) &lt;br /&gt;set @str='DCCBBABA'&lt;br /&gt;&amp;nbsp;select replicate('A',(len(@str)-len(replace(@str,'A',''))))+ &lt;br /&gt;replicate('B',(len(@str)-len(replace(@str,'B','')))) +&lt;br /&gt;replicate('C',(len(@str)-len(replace(@str,'C','')))) + &lt;br /&gt;replicate('D',(len(@str)-len(replace(@str,'D',''))))&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;---电影院座位预订(未成功)&lt;br /&gt;---电影院预定连号的座位号约束&lt;br /&gt;--预订规则是两片连号的座位不能重叠&lt;br /&gt;create table filmeSeat&lt;br /&gt;(&lt;br /&gt;reserver nvarchar(20) not null primary key&lt;br /&gt;,startSeat int not null,&lt;br /&gt;finishSeat int not null&lt;br /&gt;)&lt;br /&gt;go&lt;br /&gt;insert filmeSeat&lt;br /&gt;select '张三',1,4 union&lt;br /&gt;select '李四',6,7 union&lt;br /&gt;select '王五',21,24 union&lt;br /&gt;select '赵六',11,14 union&lt;br /&gt;select '钱七',16,18&lt;br /&gt;&lt;br /&gt;go&lt;br /&gt;drop table filmeSeat &lt;br /&gt;--go&lt;br /&gt;--create table filmeSeat&lt;br /&gt;--(&lt;br /&gt;--reserver nvarchar(20) not null primary key&lt;br /&gt;--,startSeat int not null,&lt;br /&gt;--finishSeat int not null,&lt;br /&gt;--check(startSeat&amp;lt;=finishSeat))&lt;br /&gt;--go&lt;br /&gt;------在Check中不允许使用子查询。只允许使用标量表达式。&lt;br /&gt;--ALTER TABLE filmeSeat&lt;br /&gt;--ADD CONSTRAINT no_overlaps&lt;br /&gt;--check(not exists (select t1.reserver from filmeSeat as t1&lt;br /&gt;--where filmeSeat.startSeat between t1.startSeat and t1.finishSeat&lt;br /&gt;--or filmeSeat.finishSeat between t1.startSeat and t1.finishSeat)&lt;br /&gt;--)&lt;br /&gt;&lt;br /&gt;----------&lt;/p&gt;&lt;img src="http://www.cnblogs.com/chillsrc/aggbug/2259589.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/chillsrc/archive/2011/11/22/2259589.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/chillsrc/archive/2011/11/09/2243794.html</id><title type="text">SQL语句练习实例之八——对于销售员提成收入的计算</title><summary type="text">SQL语句练习实例之八——对于销售员提成收入的计算</summary><published>2011-11-09T15:48:00Z</published><updated>2011-11-09T15:48:00Z</updated><author><name>DotNet菜园</name><uri>http://www.cnblogs.com/chillsrc/</uri></author><link rel="alternate" href="http://www.cnblogs.com/chillsrc/archive/2011/11/09/2243794.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chillsrc/archive/2011/11/09/2243794.html"/><content type="html">&lt;p&gt;----对于销售员提成收入的计算&lt;br /&gt;Create Table Emplyees&lt;br /&gt;(&lt;br /&gt;empid int not null,&lt;br /&gt;empName nvarchar(20) not null&lt;br /&gt;)&lt;br /&gt;insert Emplyees&lt;br /&gt;select 1,'张三'&lt;br /&gt;union&lt;br /&gt;select 2,'李四'&lt;br /&gt;union&lt;br /&gt;select 3 ,'王五'&lt;br /&gt;go&lt;br /&gt;create table Bills&lt;br /&gt;(&lt;br /&gt;empid int not null,&lt;br /&gt;BillDate datetime not null,&lt;br /&gt;BillRate decimal(5,2)&lt;br /&gt;)&lt;br /&gt;insert Bills&lt;br /&gt;select 1,'2009-1-1',25 union&lt;br /&gt;select 2,'2010-1-1',15 union&lt;br /&gt;select 3,'2011-1-1',20 union&lt;br /&gt;select 1,'2011-1-1',30 union&lt;br /&gt;select 2,'2011-1-1',35 &lt;br /&gt;&lt;br /&gt;go&lt;br /&gt;create table HoursWorked&lt;br /&gt;(&lt;br /&gt;jobid int not null,&lt;br /&gt;empid int not null,&lt;br /&gt;workDate datetime not null,&lt;br /&gt;BillHours decimal(5,2)&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;insert HoursWorked&lt;br /&gt;select 4,1,'2011-2-1',3 union&lt;br /&gt;select 4,1,'2011-3-1',5 union&lt;br /&gt;select 4,2,'2011-4-1',2 union&lt;br /&gt;select 4,1,'2011-5-1',4 &lt;br /&gt;&lt;br /&gt;go&lt;br /&gt;---需要一个查询，用来实现显示某个促销工作的促销员的姓名和总提成。总提成按每个促销员分别计算&lt;br /&gt;----方法是工作小时数乘以适用的每小时收费标准。&lt;br /&gt;---方法一、使用视图&lt;br /&gt;create view HourRateRpt&lt;br /&gt;as &lt;br /&gt;select h1.empid,empname,workdate,billhours,&lt;br /&gt;(select billRate from Bills as s1&lt;br /&gt;where BillDate=(select MAX(billdate) from Bills as s2&lt;br /&gt;where s2.BillDate&amp;lt;=h1.workdate and s1.empid=s2.empid&lt;br /&gt;and s1.empid=h1.empid)) as billRate&lt;br /&gt;from HoursWorked h1,Emplyees e1&lt;br /&gt;where e1.empid=h1.empid&lt;br /&gt;&lt;br /&gt;go&lt;br /&gt;select empid,empName,SUM(BillHours*billRate) as billTotsal&lt;br /&gt;from HourRateRpt&lt;br /&gt;group by empid,empName&lt;br /&gt;&lt;br /&gt;---方法二，使用一条SQL语句实现&lt;br /&gt;---&lt;br /&gt;go&lt;br /&gt;--select e1.empid,e1.empName,SUM(billHours*&lt;br /&gt;--(select billRate from Bills&amp;nbsp; as b1&lt;br /&gt;-- where BillDate=(select max(billdate) from bills as b2&lt;br /&gt;-- where b2.BillDate&amp;lt;=h1.workDate and b1.empid=b2.empid and b1.empid=h1.empid)))&lt;br /&gt;--from HoursWorked h1,Emplyees e1&lt;br /&gt;--where h1.empid=e1.empid&lt;br /&gt;--group by e1.empid,e1.empName&lt;br /&gt;go&lt;br /&gt;select e1.empid,e1.empName,SUM(billHours*b1.BillRate)&lt;br /&gt;&lt;br /&gt;from HoursWorked h1,Emplyees e1 ,Bills as b1&lt;br /&gt;where e1.empid=b1.empid and e1.empid=h1.empid and&lt;br /&gt;BillDate=(select max(billdate) from bills b2 where b2.empid=e1.empid and b2.BillDate&amp;lt;=h1.workDate)&lt;br /&gt;and h1.workDate&amp;gt;=b1.BillDate&lt;br /&gt;group by e1.empid,e1.empName&lt;br /&gt;go&lt;br /&gt;drop table Emplyees;&lt;br /&gt;drop table HoursWorked;&lt;br /&gt;drop table Bills;&lt;br /&gt;drop view HourRateRpt&lt;/p&gt;&lt;img src="http://www.cnblogs.com/chillsrc/aggbug/2243794.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/chillsrc/archive/2011/11/09/2243794.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/chillsrc/archive/2011/10/19/2218337.html</id><title type="text">SQL语句练习实例之七——剔除不需要的记录行</title><summary type="text">SQL语句练习实例之七——剔除不需要的记录行</summary><published>2011-10-19T15:25:00Z</published><updated>2011-10-19T15:25:00Z</updated><author><name>DotNet菜园</name><uri>http://www.cnblogs.com/chillsrc/</uri></author><link rel="alternate" href="http://www.cnblogs.com/chillsrc/archive/2011/10/19/2218337.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chillsrc/archive/2011/10/19/2218337.html"/><content type="html">&lt;p&gt;--相信大家肯定经常会把数据导入到数据库中，但是可能会有些记录行的所有列的数据是null，这为null的数据是我们不需要&lt;br /&gt;--现在需要一个简单的查询来剔除掉这些为null的记录行。&lt;br /&gt;--假设表名为 emplyees&lt;br /&gt;--方法1.&lt;br /&gt;---先把数据导入到数据库&lt;br /&gt;---其次： &lt;br /&gt;select * from sys.columns&lt;br /&gt;where object_id =(select object_id from sys.objects where name='EMPLYEEs')&lt;br /&gt;&lt;br /&gt;---方法2&lt;br /&gt;---使用数据库提供的函数&lt;br /&gt;exec sp_columns 'Employees'&lt;br /&gt;delete from Employees where coalesce(status,tel,gwei,ADDRESS1,address2,nwei) is null&lt;/p&gt;&lt;img src="http://www.cnblogs.com/chillsrc/aggbug/2218337.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/chillsrc/archive/2011/10/19/2218337.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/chillsrc/archive/2011/10/19/2218311.html</id><title type="text">SQL语句练习实例之六——人事系统中的缺勤（休假）统计</title><summary type="text">SQL语句练习实例之六——人事系统中的缺勤（休假）统计</summary><published>2011-10-19T14:57:00Z</published><updated>2011-10-19T14:57:00Z</updated><author><name>DotNet菜园</name><uri>http://www.cnblogs.com/chillsrc/</uri></author><link rel="alternate" href="http://www.cnblogs.com/chillsrc/archive/2011/10/19/2218311.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chillsrc/archive/2011/10/19/2218311.html"/><content type="html">&lt;p&gt;---这是一个人事系统中的示例，要求记录一下员工的缺勤情况&lt;br /&gt;---1.要在表中记录一下缺勤计分，是对经常缺勤者的一种处罚性计分&lt;br /&gt;---规则：&lt;br /&gt;---1.如果员工在一年内的缺勤计分达到50，就会可以解雇该员工。&lt;br /&gt;---2.如果员工缺勤连续超过一天，就视为长病假，这时，第二天，第三天及以后的天数都不会统计该员工的缺勤计分&lt;br /&gt;----这些天也不算为缺勤。&lt;br /&gt;&lt;br /&gt;create table absence&lt;br /&gt;(&lt;br /&gt;empId int not null,&lt;br /&gt;absenceDate datetime not null,&lt;br /&gt;reason nvarchar(100) not null,&lt;br /&gt;severityPoints int&lt;br /&gt;&lt;br /&gt;)&lt;br /&gt;go&lt;br /&gt;----2.如果员工缺勤连续超过一天，就视为长病假，这时，第二天，第三天及以后的天数都不会统计该员工的缺勤计分&lt;br /&gt;----这些天也不算为缺勤。&lt;br /&gt;---这个怎么实现呢？&lt;br /&gt;---最简单的方法，就是允许severityPoint允许为0&lt;br /&gt;---更新 &amp;lsquo;长病假&amp;rsquo;，同时缺勤计分为0&lt;br /&gt;update absence set severityPoints=0,reason='长病假'&lt;br /&gt;where exists (select * from absence as a where absence.empId=a.empId&lt;br /&gt;and absence.absenceDate=dateadd(d,-1,a.absenceDate)&lt;br /&gt;&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;--1.如果员工在一年内的缺勤计分达到50，就会可以解雇该员工。&lt;br /&gt;select empid,SUM(severityPoints) as totalPoints&lt;br /&gt;from absence&lt;br /&gt;group by empId&lt;br /&gt;&lt;br /&gt;--删除&lt;br /&gt;--delete from employee where empid =(select a.empid from absence where a.empid=employee.empid group by a.empid having sum(severityPoints)&amp;gt;=50)&lt;br /&gt;--&lt;br /&gt;---上面的语句中是否存在Bug呢？&lt;br /&gt;---有。&lt;br /&gt;---1.子查询没有按钮要求检查员工的缺勤计分在一年内是否达到或超过50，它需要在where子名中进行额外的日期范围检查&lt;br /&gt;--修改之后的删除&lt;br /&gt;--delete from employee where empid =(select a.empid from absence where a.empid=employee.empid&amp;nbsp; &lt;br /&gt;--and absenceDate between dateadd(d,-365,getdate()) and getdate()&lt;br /&gt;--group by a.empid having sum(severityPoints)&amp;gt;=50)&lt;br /&gt;--&lt;br /&gt;--2关于在删除了员工之后，却没有删除此员工的缺勤记录，需要显式删除或隐式删除，隐式删除可以添加级联删除。&lt;br /&gt;&lt;br /&gt;---假设：如果在缺勤期间，员工不会调换部门，则可以使用以下语句来提高性能&lt;br /&gt;update absence set severityPoints=0,reason='长病假'&lt;br /&gt;where exists (select * from absence a where a.empId=absence.empId and &lt;br /&gt;dateadd(d,-1,absence.absenceDate)=a.absencedate&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;-------第三，再考虑以下这种情况：&lt;br /&gt;---对于跨星期的长病假，例如：如果你在周未生病，对公司来说是没有问题的，因为周未一般是不用上班的。&lt;br /&gt;---接着你在第二个星期一个星期都缺勤了，第三个星期的星期一也缺勤了，上面的update语句只会把第二个星期的五个工作日&lt;br /&gt;----设为长病假，第一周的周五与第三周的周一，都将视为缺勤，并计算缺勤计分。所以上面的update中的子查询需要对&lt;br /&gt;---遗漏的一系列日期做额外的处理。&lt;br /&gt;---方法：&lt;br /&gt;---1.对预先安排好的休息日（如周六，周日，五一，十一等）添加一个缺勤计分为0的代码，可以避免周未与节假日的问题。&lt;br /&gt;--对于这类问题需要新增一张表calendar用来计算员工的工作 。&lt;br /&gt;create table calendar&lt;br /&gt;(&lt;br /&gt;calendarDate datetime, --日期&lt;br /&gt;Weeks int, --第几周&lt;br /&gt;weekday varchar(20),--星期几&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;select empId,SUM(severitypoints) as score&lt;br /&gt;from absence a ,calendar b &lt;br /&gt;where b.calendarDate=a.absenceDate and a.absenceDate between DATEADD(d,-365,getdate())&lt;br /&gt;and GETDATE()&lt;br /&gt;group by empId&lt;br /&gt;having SUM(a.severitypoints)&amp;gt;=50&lt;br /&gt;&lt;br /&gt;go&lt;br /&gt;drop table absence&lt;br /&gt;drop table calendar&lt;/p&gt;&lt;img src="http://www.cnblogs.com/chillsrc/aggbug/2218311.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/chillsrc/archive/2011/10/19/2218311.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/chillsrc/archive/2011/10/17/2215946.html</id><title type="text">SQL语句练习实例之五——WMS系统中的关于LIFO或FIFO的问题</title><summary type="text">SQL语句实例之五--WMS系统中的关于LIFO或FIFO的问题</summary><published>2011-10-17T14:56:00Z</published><updated>2011-10-17T14:56:00Z</updated><author><name>DotNet菜园</name><uri>http://www.cnblogs.com/chillsrc/</uri></author><link rel="alternate" href="http://www.cnblogs.com/chillsrc/archive/2011/10/17/2215946.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chillsrc/archive/2011/10/17/2215946.html"/><content type="html">&lt;p&gt;---在仓储管理中经常会碰到的一个问题&lt;/p&gt;&#xD;
&lt;p&gt;一、关于LIFO与FIFO的简单说明&lt;br /&gt;---FIFO: First in, First out.先进先出。&lt;br /&gt;---LIFO: Last in, First out.后进先出。&lt;br /&gt;&lt;br /&gt;--如货物A：本月1日购买10件，单价10元/件，3日购买20件，单价15元/件；10日购买10件，单价8元/件。&lt;br /&gt;--本月15日发货35件。&lt;br /&gt;&lt;br /&gt;--按FIFO先进先出，就是先购入的存货先发出，所以，先发1日进货的10件，再发3日进货的20件，最后发10日进货的5件，发出成本共为：10*10+20*15+5*8=440元。&lt;br /&gt;--按LIFO后进先出，就是后购入的存货先发出，所以，先发10日进货的10件，再发3日进货的20件，最后发1日进货的5件，发出成本共为：10*8+20*15+5*10=430元&lt;/p&gt;&#xD;
&lt;p&gt;二、示例&lt;/p&gt;&#xD;
&lt;p&gt;--------&lt;br /&gt;Create table stock&lt;br /&gt;(Id int not null primary key,&lt;br /&gt;articleno varchar(20) not null,&lt;br /&gt;rcvdate datetime not null,&lt;br /&gt;qty int not null,&lt;br /&gt;unitprice money not null&lt;br /&gt;)&lt;br /&gt;go&lt;br /&gt;----&lt;br /&gt;insert stock&lt;br /&gt;select 1,'10561122','2011-1-1',15,10 union&lt;br /&gt;select 2,'10561122','2011-2-2',25,12 union&lt;br /&gt;select 3,'10561122','2011-3-3',35,15 union&lt;br /&gt;select 4,'10561122','2011-4-4',45,20 union&lt;br /&gt;select 5,'10561122','2011-5-5',55,10 union&lt;br /&gt;select 6,'10561122','2011-6-6',65,30 union&lt;br /&gt;select 7,'10561122','2011-7-7',75,17 union&lt;br /&gt;select 8,'10561122','2011-8-8',110,8 &lt;br /&gt;&lt;br /&gt;go&lt;br /&gt;----此时如果在2011-8-8卖出300件产品，那么应该如何计算库存销售的价值呢？&lt;br /&gt;----1使用当前的替换成本，2011-8-8时每件产品的成本为8，就是说你这300件产品，成本价值为2400&lt;br /&gt;----2使用当前的平均成本单价，一共有420，总成本为6530，平均每件的成本为15.55&lt;br /&gt;----1.LIFO （后进先出）&lt;br /&gt;----2011-8-8 110 *8&lt;br /&gt;----2011-7-7 75*17&lt;br /&gt;----2011-6-6 65*30&lt;br /&gt;----2011-5-5 50*10&lt;br /&gt;-----总成本为 4605&lt;br /&gt;-----2.FIFO(先进先出)&lt;br /&gt;---- '2011-1-1',15*10&lt;br /&gt;---&amp;nbsp; '2011-2-2',25*12&lt;br /&gt;-----'2011-3-3',35*15&amp;nbsp; &lt;br /&gt;-----'2011-4-4',45*20 &lt;br /&gt;-----'2011-5-5',55*10 &lt;br /&gt;-----'2011-6-6',65*30 &lt;br /&gt;-----'2011-7-7',65*17&lt;br /&gt;----总成本为5480&lt;br /&gt;&lt;br /&gt;---成本视图&lt;br /&gt;create view costLIFO&lt;br /&gt;as&lt;br /&gt;select unitprice from stock&lt;br /&gt;where rcvdate= (select MAX(rcvdate) from stock)&lt;br /&gt;go&lt;br /&gt;create view costFIFO&lt;br /&gt;as&lt;br /&gt;select sum(unitprice*qty)/SUM(qty) as unitprice from stock&lt;br /&gt;&lt;br /&gt;go&lt;br /&gt;-----找出满足订单的、足够存货的最近日期。如果运气好的话，某一天的库存数量正好与订单要求的数字完全一样&lt;br /&gt;-----就可以将总成本作为答案返回。如果订单止的数量比库存的多，什么也不返回。如果某一天的库存数量比订单数量多&lt;br /&gt;---则看一下当前的单价，乘以多出来的数量，并减去它。&lt;br /&gt;---下面这些查询和视图只是告诉我们库存商品的库存价值，注意，这些查询与视图并没有实际从库存中向外发货。&lt;br /&gt;create view LIFO&lt;br /&gt;as &lt;br /&gt;select s1.rcvdate,s1.unitprice,sum(s2.qty) as qty,sum(s2.qty*s2.unitprice) as totalcost&lt;br /&gt;from stock s1 ,stock s2&lt;br /&gt;where s2.rcvdate&amp;gt;=s1.rcvdate&lt;br /&gt;group by s1.rcvdate,s1.unitprice&lt;br /&gt;&lt;br /&gt;go&lt;br /&gt;select (totalcost-((qty-300)*unitprice )) as cost&lt;br /&gt;from lifo as l&lt;br /&gt;where rcvdate=(select max(rcvdate) from lifo as l2 where qty&amp;gt;=300)&lt;br /&gt;go&lt;br /&gt;&lt;br /&gt;create view FIFO&lt;br /&gt;as &lt;br /&gt;select s1.rcvdate,s1.unitprice,sum(s2.qty) as qty,sum(s2.qty*s2.unitprice) as totalcost&lt;br /&gt;from stock s1 ,stock s2&lt;br /&gt;where s2.rcvdate&amp;lt;=s1.rcvdate&lt;br /&gt;group by s1.rcvdate,s1.unitprice&lt;br /&gt;&lt;br /&gt;go&lt;br /&gt;select (totalcost-((qty-300)*unitprice )) as cost&lt;br /&gt;from fifo as l&lt;br /&gt;where rcvdate=(select min(rcvdate) from lifo as l2 where qty&amp;gt;=300)&lt;br /&gt;--------&lt;br /&gt;go&lt;br /&gt;-----&lt;br /&gt;-----在发货之后，实时更新库存表&lt;br /&gt;create view CurrStock&lt;br /&gt;as&lt;br /&gt;select s1.rcvdate,SUM(case when s2.rcvdate&amp;gt;s1.rcvdate then s2.qty else 0 end) as PrvQty&lt;br /&gt;,SUM(case when s2.rcvdate&amp;lt;=s1.rcvdate then s2.qty else 0 end) as CurrQty&lt;br /&gt;from stock s1 ,stock s2&lt;br /&gt;where s2.rcvdate&amp;lt;=s1.rcvdate&lt;br /&gt;group by s1.rcvdate,s1.unitprice&lt;br /&gt;go&lt;br /&gt;create proc RemoveQty&lt;br /&gt;@orderqty int&lt;br /&gt;as &lt;br /&gt;if(@orderqty&amp;gt;0)&lt;br /&gt;begin&lt;br /&gt;update stock set qty =case when @orderqty&amp;gt;=(select currqty from CurrStock as c where c.rcvdate=stock.rcvdate)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;then 0 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;when @orderqty&amp;lt;(select prvqty from CurrStock c2 where c2.rcvdate=stock.rcvdate)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;then stock.qty&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;else (select currqty from CurrStock as c3 where c3.rcvdate=stock.rcvdate)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;-@orderqty end&lt;br /&gt;end&lt;br /&gt;--&lt;br /&gt;delete from stock where qty=0&lt;br /&gt;---&lt;br /&gt;go&lt;br /&gt;&amp;nbsp;exec RemoveQty 20&lt;br /&gt;go&lt;br /&gt;---------------&lt;/p&gt;&#xD;
&lt;p&gt;三、使用&amp;ldquo;贪婪算法&amp;rdquo;进行订单配货&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;-------还有一个问题，如何使用空间最小或最大的仓库中的货物来满足订单，假设仓库不是顺序排列，你可以按钮希望的顺序任意选择满足订单。&lt;br /&gt;---使用最小的仓库可以为订单的装卸工人带来最小的工作量，使用最大的仓库，则可以在仓库中清理出更多的空间&lt;br /&gt;-------例如：对于这组数据，你可以使用（1，2，3，4，5，6，7）号仓库也可以使用（5，6，7，8）号仓库中的货物来满足订单的需求。&lt;br /&gt;----这个就是装箱问题，它属于NP完全系统问题。对于一般情况来说，这种问题很难解决，因为要尝试所有的组合情况，而且如果数据量大的话，&lt;br /&gt;----计算机也很难很快处理。&lt;br /&gt;---所以有了&amp;ldquo;贪婪算法&amp;rdquo;，这个算法算出来的常常是近乎最优的。这个算法的核心就是&amp;ldquo;咬最大的一口&amp;rdquo;直到达到或超越目标。&lt;br /&gt;---&lt;br /&gt;--1. 第一个技巧，要在表中插入一些空的哑仓库，如果你最多需要n次挑选，则增加n-1个哑仓库&lt;br /&gt;insert stock&lt;br /&gt;select -1,'10561122','1900-1-1',0,0 union&lt;br /&gt;select -2,'10561122','1900-1-1',0,0 &lt;br /&gt;--select -3,'1900-1-1',0,0 &lt;br /&gt;----&lt;br /&gt;go&lt;br /&gt;create view pickcombos&lt;br /&gt;as&lt;br /&gt;select distinct (w1.qty+w2.qty+w3.qty) as totalpick&lt;br /&gt;,case when w1.id&amp;lt;0 then 0 else w1.id end as&amp;nbsp; bin1 ,w1.qty as qty1,&lt;br /&gt;case when w2.id&amp;lt;0 then 0 else w2.id end as bin2,w2.qty as qty2&lt;br /&gt;,case when w3.id&amp;lt;0 then 0 else w3.id end as bin3 ,w3.qty as qty3&lt;br /&gt;from stock w1,stock w2, stock w3&lt;br /&gt;where w1.id not in (w2.id,w3.id)&lt;br /&gt;and w2.id not in (w1.id,w3.id)&lt;br /&gt;and w1.qty&amp;gt;=w2.qty&lt;br /&gt;and w2.qty&amp;gt;=w3.qty&lt;br /&gt;----&lt;br /&gt;---1.使用存储过程来找出满足或接近某一数量的挑选组合 &lt;br /&gt;--------&lt;br /&gt;go&lt;br /&gt;create proc OverPick&lt;br /&gt;@pickqty int&lt;br /&gt;as &lt;br /&gt;if(@pickqty&amp;gt;0)&lt;br /&gt;begin&lt;br /&gt;select @pickqty,totalpick,bin1,qty1,bin2,qty2,bin3,qty3&lt;br /&gt;from pickcombos&lt;br /&gt;where totalpick=(select MIN(totalpick) from pickcombos where totalpick&amp;gt;=@pickqty)&lt;br /&gt;end&lt;br /&gt;go&lt;br /&gt;exec OverPick 180&lt;br /&gt;&lt;br /&gt;----------&lt;br /&gt;select * from stock&lt;br /&gt;drop table stock&lt;br /&gt;drop view lifo&lt;br /&gt;drop view fifo&lt;br /&gt;drop view costfifo&lt;br /&gt;drop view costlifo&lt;br /&gt;drop view CurrStock&lt;br /&gt;drop proc OverPick&lt;br /&gt;drop proc RemoveQty&lt;br /&gt;drop view pickcombos&lt;/p&gt;&lt;img src="http://www.cnblogs.com/chillsrc/aggbug/2215946.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/chillsrc/archive/2011/10/17/2215946.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/chillsrc/archive/2011/10/09/2204917.html</id><title type="text">SQL语句练习实例之四——找出促销活动中销售额最高的职员</title><summary type="text">SQL语句实例之四--找出促销活动中销售额最高的职员</summary><published>2011-10-09T15:57:00Z</published><updated>2011-10-09T15:57:00Z</updated><author><name>DotNet菜园</name><uri>http://www.cnblogs.com/chillsrc/</uri></author><link rel="alternate" href="http://www.cnblogs.com/chillsrc/archive/2011/10/09/2204917.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chillsrc/archive/2011/10/09/2204917.html"/><content type="html">&lt;p&gt;---找出促销活动中销售额最高的职员&lt;br /&gt;---你刚在一家服装销售公司中找到了一份工作，此时经理要求你根据数据库中的两张表得到促销活动销售额最高的销售员&lt;br /&gt;---1.一张是促销活动表&lt;br /&gt;---2.一张是销售客列表&lt;br /&gt;create table Promotions&lt;br /&gt;(&lt;br /&gt;activity nvarchar(30),&lt;br /&gt;sdate datetime,&lt;br /&gt;edate datetime&lt;br /&gt;)&lt;br /&gt;insert Promotions&lt;br /&gt;select '五一促销活动','2011-5-1','2011-5-7'&lt;br /&gt;union&lt;br /&gt;select '十一促销活动','2011-10-1','2011-10-7'&lt;br /&gt;union&lt;br /&gt;select 'OA专场活动','2011-6-1','2011-6-7'&lt;br /&gt;go&lt;br /&gt;create table sales&lt;br /&gt;(&lt;br /&gt;id int not null,&lt;br /&gt;name nvarchar(20),&lt;br /&gt;saledate datetime,&lt;br /&gt;price money&lt;br /&gt;)&lt;br /&gt;go&lt;br /&gt;insert sales&lt;br /&gt;select 1,'王五','2011-5-1',1000 union&lt;br /&gt;select 1,'王五','2011-5-2',2000 union&lt;br /&gt;select 1,'王五','2011-5-3',3000 union&lt;br /&gt;select 1,'王五','2011-5-4',4000 union&lt;br /&gt;select 1,'张三','2011-5-1',1000 union&lt;br /&gt;select 1,'张三','2011-5-3',2000 union&lt;br /&gt;select 1,'张三','2011-5-4',4000 union&lt;br /&gt;select 1,'李四','2011-5-6',1000 union&lt;br /&gt;select 1,'赵六','2011-5-5',1000 union&lt;br /&gt;select 1,'钱七','2011-5-8',1000 union&lt;br /&gt;&lt;br /&gt;select 1,'孙五','2011-6-1',1000 union&lt;br /&gt;select 1,'孙五','2011-6-2',2000 union&lt;br /&gt;select 1,'王五','2011-6-3',3000 union&lt;br /&gt;select 1,'孙五','2011-6-4',4000 union&lt;br /&gt;select 1,'张三','2011-6-1',11000 union&lt;br /&gt;select 1,'张三','2011-6-3',20000 union&lt;br /&gt;select 1,'张三','2011-6-4',4000 union&lt;br /&gt;select 1,'李四','2011-6-6',1000 union&lt;br /&gt;select 1,'赵六','2011-6-5',1000 union&lt;br /&gt;select 1,'钱七','2011-6-8',1500 union&lt;br /&gt;&lt;br /&gt;select 1,'孙五','2011-10-1',11000 union&lt;br /&gt;select 1,'孙五','2011-10-2',12000 union&lt;br /&gt;select 1,'王五','2011-10-3',9000 union&lt;br /&gt;select 1,'孙五','2011-10-4',4000 union&lt;br /&gt;select 1,'张三','2011-10-1',11000 union&lt;br /&gt;select 1,'张三','2011-10-3',2000 union&lt;br /&gt;select 1,'张三','2011-10-4',4000 union&lt;br /&gt;select 1,'李四','2011-10-6',27000 union&lt;br /&gt;select 1,'赵六','2011-10-5',9000 union&lt;br /&gt;select 1,'钱七','2011-10-8',3000 &lt;br /&gt;go&lt;br /&gt;-----我们需要找出在每次的促销活动中，其销售总额大于 等于&lt;br /&gt;---所有其他职员销售额的职员及促销事件。&lt;br /&gt;---说明：谓词a2.name&amp;lt;&amp;gt;a.name将其他职员从子查询合计中排除出去&lt;br /&gt;---------谓词Between 中的子查询确保我们使用了正确的促销日期&lt;/p&gt;&#xD;
&lt;p&gt;--方法一：&lt;br /&gt;select a.name,b.activity,SUM(a.price) as totalprice&lt;br /&gt;from sales a ,Promotions as b &lt;br /&gt;where a.saledate between b.sdate and b.edate&lt;br /&gt;group by a.name,b.activity&lt;br /&gt;having SUM(price)&amp;gt;= all(select SUM(price) from sales a2&lt;br /&gt;where a2.name&amp;lt;&amp;gt;a.name and a2.saledate between&lt;br /&gt;(&lt;br /&gt;select sdate from Promotions as b2 where b2.activity=b.activity&lt;br /&gt;)&lt;br /&gt;and (select edate from Promotions b3 &lt;br /&gt;where b3.activity=b.activity)&lt;br /&gt;group by a2.name)&lt;br /&gt;-----------------&lt;/p&gt;&#xD;
&lt;p&gt;---方法二： &lt;br /&gt;---说明： 如果促销活动时间是不重叠的，则promotions表中只有一个主键列，这样在group by&lt;br /&gt;--子句中使用(activity,sdate,edate)将不会改变。但是它将使having子句可以使用sdate和edate&lt;br /&gt;select a.name,b.activity,SUM(a.price) as totalprice&lt;br /&gt;from sales a ,Promotions as b &lt;br /&gt;where a.saledate between b.sdate and b.edate&lt;br /&gt;group by b.activity,b.sdate,b.edate,a.name&lt;br /&gt;having SUM(price)&amp;gt;= all(select SUM(price) from sales a2&lt;br /&gt;where a2.name&amp;lt;&amp;gt;a.name and a2.saledate between&lt;br /&gt;b.sdate&lt;br /&gt;and b.edate&lt;br /&gt;group by a2.name)&lt;br /&gt;&lt;br /&gt;go&lt;/p&gt;&#xD;
&lt;p&gt;--方法三：&lt;br /&gt;---使用cte(sql 2005以后的版本)&lt;br /&gt;with clearksTotal(name,activity,totalprice) as&lt;br /&gt;(&lt;br /&gt;select a.name,b.activity,SUM(price)&lt;br /&gt;from sales a ,Promotions b &lt;br /&gt;where a.saledate between b.sdate and b.edate&lt;br /&gt;group by a.name,b.activity&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;select c1.name,c1.activity,c1.totalprice&lt;br /&gt;from clearksTotal c1&lt;br /&gt;where totalprice=(select MAX(c2.totalprice) from clearksTotal c2&lt;br /&gt;where c1.activity=c2.activity)&lt;br /&gt;go&lt;br /&gt;drop table Promotions&lt;br /&gt;go&lt;br /&gt;drop table sales&lt;/p&gt;&lt;img src="http://www.cnblogs.com/chillsrc/aggbug/2204917.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/chillsrc/archive/2011/10/09/2204917.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/chillsrc/archive/2011/10/04/2199104.html</id><title type="text">SQL语句练习实例之三——平均销售等待时间</title><summary type="text">SQL语句练习实例之三——平均销售等待时间</summary><published>2011-10-04T13:11:00Z</published><updated>2011-10-04T13:11:00Z</updated><author><name>DotNet菜园</name><uri>http://www.cnblogs.com/chillsrc/</uri></author><link rel="alternate" href="http://www.cnblogs.com/chillsrc/archive/2011/10/04/2199104.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chillsrc/archive/2011/10/04/2199104.html"/><content type="html">&lt;p&gt;---1.平均销售等待时间&lt;br /&gt;---有一张Sales表，其中有销售日期与顾客两列，现在要求使用一条SQL语句实现计算&lt;br /&gt;--每个顾客的两次购买之间的平均天数&lt;br /&gt;--假设：在同一个人在一天中不会购买两次&lt;br /&gt;create table sales&lt;br /&gt;(&lt;br /&gt;custname varchar(10) not null,&lt;br /&gt;saledate datetime not null&lt;br /&gt;)&lt;br /&gt;go&lt;br /&gt;insert sales&lt;br /&gt;select '张三','2010-1-1' union&lt;br /&gt;select '张三','2010-11-1' union&lt;br /&gt;select '张三','2011-1-1' union&lt;br /&gt;select '王五','2010-2-1' union&lt;br /&gt;select '王五','2010-4-1' union&lt;br /&gt;select '李四','2010-1-1' union&lt;br /&gt;select '李四','2010-5-1' union&lt;br /&gt;select '李四','2010-9-1' union&lt;br /&gt;select '李四','2011-1-1' union&lt;br /&gt;select '赵六','2010-1-1' union&lt;br /&gt;select '钱途','2010-1-1' union&lt;br /&gt;select '钱途','2011-3-1' union&lt;br /&gt;select '张三','2011-9-1' &lt;br /&gt;go&lt;br /&gt;select custname,DATEDIFF(d,min(saledate),max(saledate))/(COUNT(*)-1) as avgday&lt;br /&gt;from sales&lt;br /&gt;group by custname&lt;br /&gt;having count(*)&amp;gt;1&lt;br /&gt;go&lt;br /&gt;select custname,case when count(*)&amp;gt;1 then DATEDIFF(d,min(saledate),max(saledate))/(COUNT(*)-1)&lt;br /&gt;else DATEDIFF(d,min(saledate),max(saledate)) end&lt;br /&gt;&amp;nbsp;as avgday&lt;br /&gt;from sales&lt;br /&gt;group by custname&lt;br /&gt;--having count(*)&amp;gt;1&lt;br /&gt;&lt;br /&gt;go&lt;br /&gt;drop table sales&lt;/p&gt;&lt;img src="http://www.cnblogs.com/chillsrc/aggbug/2199104.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/chillsrc/archive/2011/10/04/2199104.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/chillsrc/archive/2011/10/02/2197882.html</id><title type="text">SQL语句练习实例之二——找出销售冠军</title><summary type="text">SQL语句练习实例之二——找出销售冠军</summary><published>2011-10-01T17:17:00Z</published><updated>2011-10-01T17:17:00Z</updated><author><name>DotNet菜园</name><uri>http://www.cnblogs.com/chillsrc/</uri></author><link rel="alternate" href="http://www.cnblogs.com/chillsrc/archive/2011/10/02/2197882.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chillsrc/archive/2011/10/02/2197882.html"/><content type="html">&lt;p&gt;--销售冠军&lt;br /&gt;--问题：在公司中，老板走进来，要一张每个地区销量前3名的销售额与销售员的报表 &lt;br /&gt;---&lt;br /&gt;create table salesdetail&lt;br /&gt;(&lt;br /&gt;Area int not null,&lt;br /&gt;Saler nvarchar(20) not null,&lt;br /&gt;SalerId int not null,&lt;br /&gt;Sales money not null&lt;br /&gt;)&lt;br /&gt;insert salesdetail&lt;br /&gt;select 1,'张三',15,3000&lt;br /&gt;union select 1,'赵一',16,3500&lt;br /&gt;union select 1,'钱二',17,4000&lt;br /&gt;union select 1,'孙三',18,5000&lt;br /&gt;union select 1,'李四',19,5000&lt;br /&gt;union select 1,'王五',11,7000&lt;br /&gt;union select 2,'周边一',25,3000&lt;br /&gt;union select 2,'李白',22,4000&lt;br /&gt;union select 2,'张镇东',23,6000&lt;br /&gt;union select 2,'李宁',24,1000&lt;br /&gt;union select 3,'李斯',35,3000&lt;br /&gt;union select 3,'李勇',33,2000&lt;br /&gt;union select 4,'李逵',44,5000&lt;br /&gt;union select 4,'宋江',45,5000&lt;br /&gt;union select 4,'吴用',42,13000&lt;br /&gt;union select 4,'公孙胜',43,23000&lt;br /&gt;union select 5,'阮小二',51,5000&lt;br /&gt;union select 5,'阮小五',52,5000&lt;br /&gt;union select 5,'林冲',53,5000&lt;br /&gt;union select 5,'林莽',54,6000&lt;br /&gt;go&lt;br /&gt;---以下这种写法SQL语句会主动把最小的那一个销售额的所有行，都自动删除，只能得到比最小销售额大的数据&lt;br /&gt;--如果你的最小销售额有3行，最大的只有一行，如地区5所示，只会得到最大的那一行。&lt;br /&gt;--地区4只能得到二行，原因同上。&lt;br /&gt;select * from salesdetail as a&lt;br /&gt;where sales &amp;gt;= (select min(b.sales)&lt;br /&gt;from salesdetail as b where a.Area=b.Area and a.Sales&amp;lt;=b.Sales&lt;br /&gt;--group by sales&lt;br /&gt;having COUNT(distinct b.Saler)&amp;lt;=3)&lt;br /&gt;order by a.Area,a.Sales desc,a.Saler,a.SalerId&lt;br /&gt;go&lt;br /&gt;---使用rank()为每个分区中的每一行分配一个顺序号，如果有重复值，它们都将分配相同的顺序号。&lt;br /&gt;select a.area,a.saler,seq from&lt;br /&gt;(&lt;br /&gt;select area,saler,RANK() over(PARTITION&amp;nbsp; by area order by sales desc)&amp;nbsp; as seq from salesdetail&lt;br /&gt;)a where seq&amp;lt;=3&lt;br /&gt;drop table salesdetail&lt;/p&gt;&lt;img src="http://www.cnblogs.com/chillsrc/aggbug/2197882.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/chillsrc/archive/2011/10/02/2197882.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
