时空212单据的EXCEL数据导入后自动分摊批号

合集下载

利用Excel实现数据的批量处理与导入导出

利用Excel实现数据的批量处理与导入导出

利用Excel实现数据的批量处理与导入导出在现代社会中,数据处理已经成为各行各业的必备技能。

无论是企业的销售数据分析,还是学校的学生成绩管理,数据处理都是必不可少的工作。

而Excel作为一款强大的办公软件,提供了丰富的功能,可以帮助我们实现数据的批量处理与导入导出。

一、批量处理数据Excel提供了多种功能,可以帮助我们对大量的数据进行处理。

首先,我们可以使用筛选功能,根据特定的条件筛选出需要的数据。

比如,我们可以筛选出某个时间段内的销售数据,或者筛选出某个地区的客户信息。

这样,我们可以更加方便地对数据进行分析和统计。

其次,Excel还提供了排序功能,可以根据某一列的数值或者字母进行排序。

这对于需要对数据进行排名或者按照一定规则进行排序的工作非常有帮助。

比如,我们可以按照销售额对销售人员进行排名,或者按照学生的成绩进行排序。

另外,Excel还提供了数据透视表功能,可以帮助我们对大量的数据进行汇总和分析。

通过设置透视表的行、列和值,我们可以快速地生成各种统计报表,比如销售额按照地区和时间的分布情况,或者学生的成绩按照科目和班级的统计情况。

二、数据的导入导出除了批量处理数据,Excel还可以帮助我们实现数据的导入导出。

首先,我们可以将其他格式的数据导入到Excel中进行处理。

比如,我们可以将文本文件或者数据库中的数据导入到Excel中,然后利用Excel的功能进行分析和处理。

这样,我们就可以更加方便地对数据进行操作。

另外,Excel还可以将处理好的数据导出到其他格式中。

比如,我们可以将数据导出为文本文件、CSV文件或者数据库中的表格。

这样,我们就可以将数据与其他系统进行交互,实现数据的共享和传递。

三、利用宏实现自动化处理除了上述的功能,Excel还提供了宏的功能,可以帮助我们实现自动化处理。

通过录制宏和编写VBA代码,我们可以实现一系列的操作,从而简化繁琐的工作。

比如,我们可以录制一个宏,实现对数据的自动筛选、排序和汇总。

Excel函数自动统计库存的出入库表格

Excel函数自动统计库存的出入库表格

Excel函数⾃动统计库存的出⼊库表格1、使⽤步骤⽅便⼤家对做账的步骤快速了解,总结出⼊库管理表格的整体使⽤步骤:(1)在“⽬录”⼯作表,填写货物的基础信息。

包括:物料编码、物料名称、规格型号、计量单位、期初数量。

(2)打开货物的账页⼯作表,登记进出记录。

包括:⽇期、凭证号/摘要、收⼊或发出数量、备注。

(3)货物所在账页会⾃动计算当前的结存数量,同时“数量结存表”与“收发存报表”⾃动统计汇总数据的报表。

2、货物⽬录表⽤于填写基本的货物信息、期初库存数量,并做为表格的账页与报表导航。

可以通过点击链接,快速打开每款货物的账页、数量结存表、收发存报表等。

⽩⾊背景的区域,是填写货物资料的地⽅;灰⾊背景的区域,由表格公式⾃动处理。

⽐如:序号,是Excel公式⾃动填写数字;打开账页,是Excel函数⾃动⽣成的链接。

3、进出库账页进出库账页,是做进出库记录的台账,每个货物⼀个⼯作表,独⽴做账、互不影响。

⽩⾊背景的区域,填写⽇期、进出数量等;灰⾊背景的区域,由表格公式⾃动⽣成。

这⾥每次填写好⼊库记录、出库记录,都会⽴即⾃动计算结存数量,同时其它统计报表也会⾃动跟着计算汇总。

4、数量结存表所有货物的库存数量汇总统计列表,只要做好前⾯每个货物的台账,此⼯作表的所有货物都由Excel⾃动计算。

5、收发存报表汇总计算所有货物的期初、收⼊、发出、结存数据列表,此⼯作表不需要⼿⼯操作,全部数据由Excel⾃动统计。

总结1.每种货物单独⼀个⼯作表,这样做账清晰明⽩,适合货物各类不多的仓库做账。

还有Excel表格⾃动进⾏当前结存数量计算、收发存汇总2.公式使⽤的很巧妙,新增⼀张⼯作表以后,在⽬录界⾯,会⾃动⽣成链接,可以“点击打开”对应货品的⼯作表。

3.这款表格适合⼩型仓库、货物不多的情况,以简单明了为主.4.这个表⽅便单独查看与记录每款货物的进出。

在excel中打印的时候可以自动生成单据编号吗10在excel中打印的时候可以自动生成单据编号吗

在excel中打印的时候可以自动生成单据编号吗10在excel中打印的时候可以自动生成单据编号吗

在excel中打印的时候可以自动生成单据编号吗10在excel 中打印的时候可以自动生成单据编号吗•在excel中打印的时候可以自动生成单据编号吗10在excel中打印的时候可以自动生成单据编号吗•如:就是打印一次单号就自动加1这样子的•问题补充:•就是比如:20100731,打印一次之后,下一次打印的时候就自动变成20100801,前面那六位数是按当天的日期显示,后两位数是编号,可以实现吗?••好像是可以。

要怎样设置呢•我可以帮你实现在打印前增加。

不过你的例子说的不明白,是从20100731变成20100801(即年月日)这样的呢,还是7月份20100701、20100702、...20100756、20100757、....到了8月份20100801、20100802、...20100835、20100836、(即年月加序号)•无论如何,操作如下:•同时按Alt和F11进入宏界面,在左上窗口找到本工作簿里的ThisWorkbook,双击它,在右边窗口粘贴如下代码:•Private Sub Workbook_BeforePrint(Cancel As Boolean)•Range("F1") = Format(CDate(Format(Range("F1"), "0000-00-00")) + 1, "YYYYMMDD")•End Sub•这是第一种情况,假设单号在单元格F1,不是的话自己修改。

另一种情况把中间那句话改为:•If Left(Range("F1"), 6) = Format(Date, "YYYYMM") Then•Range("F1") = Range("F1") + 1•Else•Range("F1") = Format(Date, "YYYYMM") * 100 + 1•End If我对这个一点也不懂,粘贴代码之后呢,要按那里这是事件代码。

如何在excel中实现数据批量导入和导出

如何在excel中实现数据批量导入和导出

如何在excel中实现数据批量导入和导出如何在 Excel 中实现数据批量导入和导出在日常的办公和数据处理中,我们经常会遇到需要在 Excel 中进行数据批量导入和导出的情况。

掌握这一技能可以大大提高工作效率,节省时间和精力。

接下来,我将详细为您介绍如何在 Excel 中实现这一操作。

一、数据批量导入1、从文本文件导入打开 Excel 软件,点击“数据”选项卡。

在“获取外部数据”组中,选择“自文本”。

找到您要导入的文本文件(如txt 或csv 格式),点击“导入”。

在“文本导入向导”中,根据文件的格式选择分隔符(如逗号、制表符等),并设置数据格式(如文本、数值等)。

点击“完成”,选择数据的放置位置,即可完成导入。

2、从数据库导入如果您的数据存储在数据库中(如 SQL Server、MySQL 等),可以通过以下步骤导入到 Excel 中。

首先,确保您的计算机上安装了相应的数据库驱动程序。

在 Excel 中,点击“数据”选项卡,选择“自其他来源”,然后选择“来自Microsoft Query”。

在“选择数据源”对话框中,选择您要连接的数据库类型,并建立连接。

根据数据库中的表和字段,选择您要导入的数据,并设置筛选条件和排序方式。

点击“将数据返回Microsoft Excel”,选择数据的放置位置,即可完成导入。

3、从网页导入有时,我们需要从网页上获取数据并导入到 Excel 中。

在 Excel 中,点击“数据”选项卡,选择“自网站”。

输入网页的 URL 地址,点击“转到”。

等待网页加载完成后,选择您要导入的数据表格,点击“导入”。

按照提示设置数据的放置位置和格式,即可完成导入。

二、数据批量导出1、导出为文本文件打开您要导出数据的 Excel 工作表。

选择要导出的数据区域。

点击“文件”选项卡,选择“另存为”。

在“保存类型”下拉列表中,选择“文本文件(制表符分隔)”或“CSV(逗号分隔)”。

选择保存的位置,输入文件名,点击“保存”。

在Excel中如何实现数据自动化导入与规范化

在Excel中如何实现数据自动化导入与规范化

在Excel中如何实现数据自动化导入与规范化在当今数字化的时代,数据处理和分析变得日益重要。

Excel 作为一款强大的电子表格软件,被广泛应用于各个领域。

然而,手动处理大量数据往往既耗时又容易出错。

因此,掌握如何在 Excel 中实现数据自动化导入与规范化,对于提高工作效率和数据准确性具有重要意义。

一、数据自动化导入1、从文本文件导入数据在 Excel 中,可以轻松地从文本文件(如 CSV 格式)导入数据。

首先,点击“数据”选项卡,然后在“获取外部数据”组中选择“自文本”。

在弹出的“导入文本文件”对话框中,找到要导入的文本文件,选择合适的分隔符(如逗号、制表符等),并按照向导的提示完成导入。

2、从数据库导入数据如果数据存储在数据库中(如 MySQL、SQL Server 等),可以通过 ODBC 连接来实现数据导入。

首先,需要在 Windows 系统中配置ODBC 数据源。

然后,在 Excel 中点击“数据”选项卡,选择“自其他来源”中的“来自Microsoft Query”。

在“选择数据源”对话框中,选择刚刚配置的 ODBC 数据源,并根据提示选择要导入的数据表和字段。

3、从网页导入数据有时候,我们需要从网页上获取数据。

Excel 提供了“从Web”的功能来实现这一需求。

点击“数据”选项卡,选择“自Web”。

在弹出的对话框中,输入网页的 URL,然后选择要导入的数据区域,并按照提示完成操作。

二、数据规范化1、数据清洗在导入数据后,常常需要进行数据清洗,以去除重复值、空值和错误值。

可以使用 Excel 的“数据工具”中的“删除重复项”功能来去除重复值。

对于空值,可以通过筛选功能将其找出,然后根据实际情况进行填充或删除。

对于错误值,可以通过条件格式进行突出显示,然后进行修正。

2、数据格式设置为了使数据更易于阅读和分析,需要对数据格式进行设置。

例如,将数值格式设置为合适的小数位数,将日期格式设置为标准的日期格式,将文本格式设置为统一的对齐方式等。

新版增值税发票清单导入 批量自动开票 自动拆分合并误差调整

新版增值税发票清单导入 批量自动开票 自动拆分合并误差调整

新版增值税发票清单导入批量自动开票自动拆分合并误差调整Q:您是不是在为“发票多”“清单明细多”,“手工录入”太慢、太麻烦而烦恼?A:企胜防伪税控接口系统--轻松可以帮您解决!Q:您还是不是在为清单明细多出现了“6分钱误差”无法开票而烦恼?A:企胜防伪税控接口系统--轻松可以帮您解决!Q:您还是不是在为订单“超出限额”无法开票又不知道如何拆分订单而烦恼?A:企胜防伪税控接口系统--轻松可以帮您解决!企胜防伪税控接口系统专为企业财务解决手工录入开票的所有疑难问题!帮助您实现清单快速导入自动开票,自动拆分、合并订单,自动调整6分钱误差、智能自动匹配商品税收分类编码!企胜防伪税控接口系统可以将已开票的所有数据信息查询导出Excel表格!方便企业财务统计、分析使用!企胜防伪税控接口系统--安装说明:/Video/Show_47_280.html企胜防伪税控接口系统Excel表格清单导入自动开票操作说明:第一步:表格数据整理第二步:企胜防伪税控接口系统将表格数据导入到接口中,接口系统会根据开票的规则和要求自动校验数据!如果数据不符合接口有提供各种工具帮助财务来快速自动调整!第三步:将调整好的数据直接传送到开票系统完成开票即可!航天开票系统:百旺开票系统:以上简单三步即可完成Excel表格清单快速导入批量自动开票!航天Excel快速导入清单开票--效果视频:/Video/Show_47_276.html百旺(望)Excel清单导入开票--效果视频:/Video/Show_47_278.htmlERP金税接口:当企业有使用到了ERP系统、单独进销存、单独财务系统或企业自主开发系统,企胜防伪税控接口都可以帮助您实现系统对接,这样可以直接将企业的业务系统数据传送到开票系统完成开票!开完发票之后还可以根据企业的需求将开票的结果信息返写到ERP系统中!具体ERP系统对接详情可咨询企胜线上客服或企胜400热线!航天ERP系统对接快速导入清单开票--效果视频:/Video/Show_47_277.html百旺ERP系统对接快速导入清单开票--效果视频:/Video/Show_47_279.htmlAPI集成接口:在很多企业使用ERP系统想更加方便实现快速开票的情况下,企胜防伪税控接口系统还提供API集成的方式,也就是将我们的企胜防伪税控接口系统集成到企业的ERP系统中,这样在开票的时候财务只需执行ERP系统和开票系统即可,我们的企胜防伪税控接口系统处于隐藏式的工作!具体API集成实施详情可咨询企胜线上客服或企胜400热线!。

excel批次出入库管理表格

excel批次出入库管理表格

Excel批次出入库管理表格一、引言在企业的日常运营中,物料的出入库管理是一个非常重要的环节。

良好的出入库管理能够确保物料的安全、准确、快速地流转,并且有助于企业对物料的库存状况进行有效的监控与控制。

而Excel批次出入库管理表格作为一种简单、直观、易操作的工具,在企业中应用广泛,能够很好地满足企业出入库管理的需要。

二、Excel批次出入库管理表格的优势1. 灵活性高:Excel批次出入库管理表格能够根据企业的实际需要进行自定义,灵活性非常高,能够满足不同类型企业的出入库管理需求。

2. 易操作:Excel是一种非常常见的办公软件,大部分员工都具备一定的Excel操作能力,使用Excel批次出入库管理表格无需专门的培训,操作简便。

3. 数据分析:Excel批次出入库管理表格可以方便地进行数据分析,通过数据透视表、图表等功能,可以直观地展现物料的出入库情况,为企业管理决策提供可靠的参考依据。

三、Excel批次出入库管理表格的构成1. 物料基本信息表:包括物料名称、规格型号、计量单位等信息。

2. 入库记录表:记录物料的入库批次、入库时间、入库数量、供应商信息等。

3. 出库记录表:记录物料的出库批次、出库时间、出库数量、领用部门信息等。

4. 库存状况表:根据入库和出库记录计算物料的库存数量,及时反映库存状况。

四、Excel批次出入库管理表格的应用实例以某企业的原材料为例,介绍Excel批次出入库管理表格的具体应用流程。

1. 物料基本信息表在Excel中创建物料基本信息表,包括物料编号、物料名称、规格型号、计量单位等字段。

物料基本信息表是出入库管理的基础,确保物料信息的准确性与完整性。

2. 入库记录表企业采购原材料后,需要记录入库信息。

在Excel中创建入库记录表,包括入库批次、入库时间、入库数量、供应商信息等字段。

员工根据实际情况填写入库信息,系统自动对库存进行更新。

3. 出库记录表当生产部门需要领用原材料时,需要进行出库操作。

Excel中的数据导入和导出技巧

Excel中的数据导入和导出技巧

Excel中的数据导入和导出技巧在日常工作和学习中,我们经常会使用Excel进行数据的处理和分析。

Excel提供了丰富的功能,其中数据导入和导出是最常用的功能之一。

本文将介绍一些Excel中的数据导入和导出技巧,帮助您更加高效地处理数据。

一、数据导入1. 从文本文件导入数据Excel允许从各种文本格式的文件导入数据,如CSV、TXT等。

您只需要打开Excel,选择“文件”菜单下的“打开”,然后选择要导入的文件即可。

在导入过程中,您还可以选择导入的方式和分隔符,确保数据能够正确导入。

2. 从数据库导入数据如果您的数据存储在数据库中,Excel也可以轻松地将其导入。

在Excel中,您可以使用“数据”菜单下的“获取数据”功能,选择“从数据库”选项,然后根据提示连接到您的数据库。

一旦连接成功,您可以选择要导入的表或查询,并将其导入到Excel中进行分析和处理。

3. 从Web导入数据有时候,您可能需要从Web上获取数据并导入到Excel中。

Excel提供了“数据”菜单下的“从Web”功能,您只需要输入Web页面的地址,Excel就可以帮您从该页面上获取数据并导入到工作表中。

这对于需要定期更新和分析Web数据的用户来说非常方便。

二、数据导出1. 导出为文本文件如果您需要将Excel中的数据导出为文本文件,Excel提供了多种导出格式的选项。

您只需选择需要导出的数据,然后点击“文件”菜单中的“导出”选项,选择“创建文本文件”或“更改文件类型”,即可将数据保存为TXT、CSV等常见的文本文件格式。

2. 导出为PDF文件有时候,您可能需要将Excel中的数据导出为PDF文件,以便与他人共享或打印。

Excel提供了将工作表或整个工作簿导出为PDF的功能。

您只需选择需要导出的内容,然后点击“文件”菜单中的“另存为”选项,选择PDF作为文件类型,即可将数据保存为PDF格式。

3. 导出为图片文件如果您需要将Excel中的数据导出为图片文件,Excel也提供了相应的功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

时空212单据的EXCEL数据导入后自动分摊批号.自动核算赠品1,修改DJExcel配制文件如下:[212]; 数据路径=D:\cdmfd\ccerpexeout\; 文件名=采购导入模板.xls插入1=insert into tmp_excel_dj(gzid,spbh,spmch,shl,dw,dj,shpchd,shpgg,hshj,插入2=spid) IN [ODBC]插入3= [ODBC;Driver=SQLServer;UID=sa;PWD=:password;Server=:server;DataBase=:database]插入4=select :gzid, a.商品编号, a.商品名称,a.数量, a.包装单位, a.单价,a.生产厂商,插入5= a.商品规格,a.金额,a.商品内码插入6= from [a$] a查询1=exec wms_read_excel @action = 0, @djlx = 212, @gzid = :gzid删除1=exec wms_read_excel @action = 1, @djlx = 212, @gzid = :gzid2,修改wms_read_excel存储过程set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgoALTER procedure [dbo].[wms_read_excel]@action int = 0, -- 0 查询 1 删除@djlx char(3),@gzid char(11)ASBEGINSET NOCOUNT ONif @action = 0beginif @djlx in ('112', '120')begin-- declare @spid char(11),@glid char(13)-- set @spid=''-- set @glid=''/*declare spid_cursor insensitive cursorforselect distinct glid from tmp_excel_dj(nolock) where glid not in(select glid from spkfk(nolock) where beactive='是') and gzid = @gzidfor read onlyopen spid_cursorfetch next from spid_cursor into @glidwhile @@fetch_status <> -1beginexec SOF_getmaxbh 'SPH', 3, @spid output--print @spidinsert intospkfk(spid,spbh,spmch,shpgg,jlgg,shpchd,dw,glid,hscbj,itemlength,itemwidth,weight,pizhwh,tong ym,jixing,beizhu,itemheight,is_zhongyao)select top 1@spid,spbh,spmch,shpgg,jlgg,shpchd,dw,glid,hescbj,itemlength,itemwidth,weight,pizhwh,tongym ,jixing,beizhu,itemheight,casewhen @djlx=120 then '是' else '否' end from tmP_excel_djwhere glid=@glid and gzid = @gzidinsert into spkfjc(spid) values(@spid)fetch next from spid_cursor into @glidendclose spid_cursordeallocate spid_cursorselect * from (select b.spid,a.spbh,case when b.spid is null then '新品!'else b.spmch end as spmch,b.shpgg,b.shpchd,b.dw,b.jlgg,a.pihao,a.sxrq,case when isdate(a.baozhiqi) = 1 then convert(char(10), cast(a.baozhiqi as datetime), 20)else isnull(a.baozhiqi,'') end baozhiqi,sum(a.shl) as shl,cast((isnull(sum(a.je),0)/ case when isnull(sum(a.shl), 0) = 0 then 99999999999 else sum(a.shl) end) as decimal(14,5)) as dj,(isnull(sum(a.je),0) / case when isnull(sum(a.shl), 0) = 0 then 99999999999 else sum(a.shl) end ) as hshj,case when b.spid is null then 'clRed' else 'clBlack' end as __fcolor, 'default' as __bcolor,a.jixing,a.glid,a.hescbj,a.itemlength,a.itemheight,a.itemwidth ,a.weight,a.beizhu,a.pizhwh,a.tongymfrom tmp_excel_dj a (nolock) left join spkfk b (nolock) on a.glid = b.glid and b.beactive='是' and a.spmch = b.spmch and a.shpgg=b.shpgg and a.jlgg=b.jlggwhere a.gzid = @gzidgroup by b.spid, a.spbh,b.spmch,b.shpgg, b.shpchd, b.dw,b.jlgg,a.pihao,a.sxrq,a.baozhiqi,a.jixing,a.glid,a.hescbj,a.itemlength,a.itemheight,a.itemwidth,a.weight,a.beizhu,a.pi zhwh,a.tongym having sum(a.shl)<>0) a where a.shl <> 0order by a.spid */select a.spbh,a.tongym,a.spmch,a.shpgg,a.shpchd ,a.dw,isnull(b.hshj,0),isnull(b.dj,0),a.shlv, a.jlgg,a.zgjjxz,a.zjm,a.jj,a.ypbs,0 as shl ,'合格' as zhilqk ,a.leibie,a.jixing,a.chuffl,a.wdyq,a.pizhwh,a.zaobaoj,a.pfpj,a.zgshl,a.zdshj,c.chbdj,a.zhdcbj,a.spid,a.is_cyhydz,a.is_jbyw,'' as beizhu,0 as jiansh,'' as yanshjlfrom tmp_excel_dj b (nolock) , spkfk a (nolock) ,spkfjc c (nolock)where b.gzid = @gzid and a.spid = b.spid and a.beactive='是' and c.spid=b.spidorder by a.spbhendif @djlx in ('212')begin--需分摊品种库存表create table #t_kc(spid char(11),hw char(11),pihao char(15),baozhshl decimal(14,2),lingsshl decimal(14,2),shl decimal(14,2),sxrq char(10),baozhiqi char(10),jlgg int ,yyj int,gebjj decimal(14,2),huowname char(20))--整零表create table #t_alldd(spid char(11),shl decimal(14,2),jlgg int,biaoshi int)--整零库存表create table #t_allkc(spid char(11),hw char(11),pihao char(15),shl decimal(14,2),sxrq char(10),baozhiqi char(10),jlgg int,biaoshi int,is_mz int,yyj int,gebjj decimal(14,2), huowname char(20))--整货分摊表create table #t_ft_zj( spid char(11),hw char(11),pihao char(15),shl decimal(14,2),kcshl decimal(14,2), ftshl decimal(14,2), is_mz int,sxrq char(10),baozhiqi char(10), biaoshi int,gebjj decimal(14,2), huowname char(20) )--零货分摊表create table #t_ft_ls( spid char(11),hw char(11),pihao char(15),shl decimal(14,2),kcshl decimal(14,2), ftshl decimal(14,2), is_mz int,sxrq char(10),baozhiqi char(10), biaoshi int,gebjj decimal(14,2), huowname char(20) )--未分摊完成整货create table #t_wft_zj( spid char(11),shl decimal(14,2),ftshl decimal(14,2), wftshl decimal(14,2)-- 未分摊完成的数量+ 零散数量表create table #t_lsdd(spid char(11),shl decimal(14,2) ) --,biaoshi int)--分摊完成表create table #result(spid char(11),hw char(11),pihao char(15),shl decimal(14,2),sxrq char(10),baozhiqi char(10),gebjj decimal(14,2),huowname char(20))--待分摊品种select b.spid,floor(a.shl/b.jlgg) as baozhshl,(a.shl%b.jlgg) as lingsshl,a.shl,b.jlgg,a.dj,b.spbh,b.tongym,b.spmch,b.shpgg,b.shpchd,b.dw,b.koul,b.shlv,b.zgjjxz,b.zjm,b.jj,b.leibie,b.jixing,b.chuffl,b.wdyq,b.pizhwh,b.zaobaoj,b.pfpj,b.zgshl,b.zdshj,b.zhdcbj,b.is_cyhydz,b.is_jbywinto #t_ddfrom tmp_excel_dj a (nolock) join spkfk b (nolock) on a.spid=b.spidwhere a.gzid=@gzid and a.spid<>''-- =============================================--可销数量--库存批号数量select a.spid ,a.shl, a.hw,a.pihao,a.baozhiqi,a.sxrq ,a.gebjjinto #tmp_kcfrom sphwph a(nolock) join huoweizl b (nolock) on a.hw=b.hwjoin #t_dd c (nolock) on a.spid=c.spidwhere a.shl >0 and b.huowname not like '%区' and a.dangqzht='合格'-- 开票未出库数量select a.spid ,sum(a.shl) as shl , a.hw,a.pihao,a.baozhiqi,a.sxrqinto #tmp_kpwckfrom jzorder_mx a (nolock) join #t_dd b (nolock) on a.spid=b.spid ---销售开票未出库数量where a.djbh like 'XSG%' and a.is_zx='否'group by a.spid ,a.hw,a.pihao,a.baozhiqi,a.sxrq--采购退出开票未出库数量select a.spid ,sum(a.shl) as shl , a.hw,a.pihao,a.baozhiqi,a.sxrqinto #tmp_cgwckfrom jzorder_mx a (nolock) join #t_dd b (nolock) on a.spid=b.spidwhere a.djbh like 'JHT%' and is_zx='否'group by a.spid ,a.hw,a.pihao,a.baozhiqi,a.sxrq--采购退出正在开票数量select a.spid ,sum(a.shl) as shl , a.hw,a.pihao,a.baozhiqi,a.sxrqinto #tmp_kpzzkpfrom tmp_dj_jht114 a (nolock) join #t_dd b (nolock) on a.spid=b.spidgroup by a.spid ,a.hw,a.pihao,a.baozhiqi,a.sxrq--内部调拨正在开票数量select a.spid ,sum(a.shl) as shl , a.dchw as hw,a.pihao,a.baozhiqi,a.sxrqinto #tmp_dbzzkpfrom tmp_dj_CDB314 a (nolock) join #t_dd b (nolock) on a.spid=b.spidgroup by a.spid ,a.dchw,a.pihao,a.baozhiqi,a.sxrq--销售正在开票数量select a.spid ,sum(a.shl) as shl , a.hw,a.pihao,a.baozhiqi,a.sxrqinto #tmp_xszzkpfrom tmp_dj_XSG212 a (nolock) join #t_dd b (nolock) on a.spid=b.spidwhere a.hw<> '' and a.pihao<>''group by a.spid ,a.hw,a.pihao,a.baozhiqi,a.sxrqselect a.spid ,(isnull(a.shl,0)-isnull(b.shl,0)-isnull(c.shl,0)-isnull(d.shl,0)-isnull(e.shl,0)-isnull(f.s hl,0)) as shl , a.hw,a.pihao,a.baozhiqi,a.sxrq ,a.gebjjinto #tmp_kxshlfrom #tmp_kc a left join #tmp_kpwck b on a.spid=b.spid and a.hw=b.hw and a.pihao=b.pihao left join #tmp_cgwck c on a.spid=c.spid and a.hw=c.hw and a.pihao=c.pihaoleft join #tmp_kpzzkp d on a.spid=d.spid and a.hw=d.hw and a.pihao=d.pihaoleft join #tmp_dbzzkp e on a.spid=e.spid and a.hw=e.hw and a.pihao=e.pihaoleft join #tmp_xszzkp f on a.spid=f.spid and a.hw=f.hw and a.pihao=f.pihao--分摊品种库存insert #t_kc(spid,hw,pihao,baozhshl,lingsshl,shl,sxrq,baozhiqi,jlgg,yyj,gebjj,huowname )select a.spid,a.hw,a.pihao,case when c.yyj <3 and b.shl<b.jlgg then 0 else floor(a.shl/b.jlgg) end as baozhshl , --当零货时不计算包装数量case when c.yyj <3 and b.shl<b.jlgg then a.shl else a.shl % b.jlgg end as lingsshl, ----当零货时库存数量为零散数量a.shl,a.sxrq,a.baozhiqi ,b.jlgg,c.yyj,a.gebjj,c.huowname --货位优先顺序from #tmp_kxshl a,#t_dd b ,huoweizl cwhere a.spid=b.spid and a.hw=c.hw--删除临时表drop table #tmp_kc,#tmp_kpwck ,#tmp_cgwck , #tmp_kpzzkp , #tmp_dbzzkp , #tmp_xszzkp,#tmp_kxshl-- =============================================--整零分开insert #t_alldd(spid,shl,jlgg,biaoshi)select spid,baozhshl * jlgg as shl,jlgg,1 as biaoshi--into #t_allddfrom #t_dd where baozhshl <> 0union allselect spid,lingsshl as shl,jlgg,0 as biaoshi from #t_dd where lingsshl <> 0--分摊表insert #t_allkc(spid,hw,pihao,shl,sxrq,baozhiqi,jlgg,biaoshi,is_mz,yyj,gebjj,huowname )select a.spid,a.hw,a.pihao,(a.baozhshl * a.jlgg) as shl,a.sxrq,a.baozhiqi,a.jlgg,1 as biaoshi,1 as is_mz, a.yyj,a.gebjj,a.huownamefrom #t_kc a left join #t_dd b on a.spid = b.spidwhere a.baozhshl <> 0union allselect a.spid,a.hw,a.pihao,a.lingsshl as shl,a.sxrq,a.baozhiqi,a.jlgg,0 as biaoshi,0 as is_mz,a.yyj,a.gebjj,a.huownamefrom #t_kc a join #t_dd b on a.spid = b.spidwhere a.lingsshl <> 0--整件分摊insert #t_ft_zj(spid,hw,pihao,shl,kcshl,ftshl,biaoshi,is_mz,sxrq,baozhiqi,gebjj,huowname)select a.spid,b.hw,b.pihao,a.shl,b.shl as kcshl,0 as ftshl,b.biaoshi,b.is_mz,b.sxrq,b.baozhiqi,b.gebjj,b.huownamefrom #t_alldd ajoin #t_allkc b on a.spid = b.spid and a.biaoshi = b.biaoshiwhere a.biaoshi = 1order by b.spid,b.biaoshi,b.baozhiqi, b.yyj desc ,b.shl --按baozhiqi,yyj排序,整件货位出库优先declare@spid1 char(11),@xsshl decimal(14,2),@tmp_ftshl decimal(14,2)set @spid1 = '!@#'update #t_ft_zjset @tmp_ftshl = ftshl = case when @spid1 = spid thencase when @xsshl >= kcshl then kcshl else @xsshl endelsecase when shl >= kcshl then kcshl else shl endend,@xsshl = case when @spid1 = spid thencase when @xsshl >= kcshl then @xsshl - kcshl else 0 endelsecase when shl >= kcshl then shl - kcshl else 0 endend,@spid1 = spid-- 未分摊完成的整件数量insert #t_wft_zj(spid, shl, ftshl, wftshl)select a.spid, a.shl, sum(isnull(b.ftshl,0)) as ftshl, a.shl - sum(isnull(b.ftshl,0)) as wftshlfrom #t_alldd aleft join #t_ft_zj b on a.spid = b.spidwhere a.biaoshi = 1group by a.spid, a.shlhaving a.shl - sum(isnull(b.ftshl,0)) > 0-- 未分摊完成的数量+ 零散数量insert into #t_lsdd(spid,shl)select a.spid,sum(shl) as shlfrom (select spid,wftshl as shl from #t_wft_zjunion allselect spid,shl from #t_alldd where biaoshi = 0) agroup by a.spid-- 重新判断是否满足库存update a set is_mz = case when a.shl - isnull(c.ftshl,0) >= isnull(b.shl,0) then 0 else 1 endfrom #t_allkc aleft join #t_lsdd b on a.spid = b.spidleft join #t_ft_zj c on a.spid = c.spid and a.hw = c.hw and a.pihao = c.pihao and a.biaoshi = c.biaoshi-- 零散分摊insert #t_ft_ls(spid,hw,pihao,shl,kcshl,ftshl,biaoshi,is_mz,sxrq,baozhiqi,gebjj,huowname)select a.spid,b.hw,b.pihao,a.shl,b.shl - isnull(c.ftshl,0) as kcshl,0 as ftshl,b.biaoshi,b.is_mz,b.sxrq,b.baozhiqi,b.gebjj,b.huownamefrom #t_lsdd ajoin #t_allkc b on a.spid = b.spidleft join #t_ft_zj c on b.spid = c.spid and b.hw = c.hw and b.pihao = c.pihao and b.biaoshi=c.biaoshiorder by b.spid,b.yyj ,b.biaoshi,b.is_mz,b.baozhiqi,b.shl - isnull(c.ftshl,0)set @spid1 = '!@#'update #t_ft_lsset @tmp_ftshl = ftshl = case when @spid1 = spid thencase when @xsshl >= kcshl then kcshl else @xsshl endelsecase when shl >= kcshl then kcshlelse shl endend,@xsshl = case when @spid1 = spid thencase when @xsshl >= kcshl then @xsshl - kcshl else 0 endelsecase when shl >= kcshl then shl - kcshl else 0 endend,@spid1 = spidinsert #result(spid,hw,pihao,shl,gebjj,huowname,sxrq,baozhiqi)select spid,hw,pihao,ftshl as shl,gebjj,huowname,sxrq,baozhiqifrom #t_ft_zj where ftshl <> 0union allselect spid,hw,pihao,ftshl as shl,gebjj,huowname,sxrq,baozhiqifrom #t_ft_ls where ftshl <> 0order by spid,hw,pihao--汇总数据,保证同一批号,货位是一条记录select spid,hw,pihao,sum(shl) as shl,gebjj,baozhiqi,sxrq,huownameinto #result1from #result a (nolock)group by spid,hw,pihao,gebjj,baozhiqi,sxrq,huowname-------------------------核算赠品-----------------------核算赠品数量select floor(e.shl/a.min_shl)*a.shl as jiansh ,c.zengpmch,c.zengpgg,c.zengpcd ,c.zengptzs ,a.cuxiao ,c.zengpbh,c.zengpid as yanshjl,b.zengpzkcshl,e.pihao,e.hw,e.shl,e.spidinto #zp1from zpzcspmx a (nolock),zpkfk c (nolock) ,zpkfjc b (nolock), #result1 ewhere a.zengpid=c.zengpid and a.zengpid=b.zengpid and a.spid=e.spid and b.zengpzkcshl>0 and a.min_shl <= e.shl and a.end_date >=GETDATE() -- and charindex(rtrim(@jyfsh),a.zpkzdwlx)>0 --限制促销单类型order by e.spid,e.hw,e.pihao--正在开票赠品数量select sum(b.jiansh) as kpzpshl1,b.yanshjlinto #zp3from tmp_dj_XSG212 a (nolock) ,#zp1 bwhere --a.spid=@spid anda.yanshjl=b.yanshjl --and (a.gzid<>@gzid or ( a.dj_sn<>@dj_sn and a.gzid=@gzid ))GROUP BY b.yanshjl--销售开票未出库赠品数量select sum(a.jiansh) as wckzpshl ,c.yanshjlinto #zp4from jzorder_mx a,(select shenhe,djbh from jzorder_hz where shenhe='否') b ,#zp1 cwhere a.djbh=b.djbh and a.yanshjl=c.yanshjl and a.djbh like 'XSG%'GROUP BY c.yanshjl--可赠数量:select (a.zengpzkcshl-isnull(b.kpzpshl1,0)-isnull(c.wckzpshl,0)) as zpkzshl,a.yanshjl,a.zengpzkcshlinto #zp6from #zp1 a left outer join #zp3 b on a.yanshjl=b.yanshjl left outer join #zp4 c on a.yanshjl=c.yanshjl--赠品表并去掉重复的select distinct a.jiansh ,b.zpkzshl,a.zengpmch,a.zengpgg,a.cuxiao as beizhu,a.zengpcd ,a.zengptzs ,a.zengpbh,a.yanshjl ,a.pihao,a.hw,a.shl,a.spid, 0 as biaoshi into #zp7from #zp1 a left outer join #zp6 b on a.yanshjl=b.yanshjlwhere b.zpkzshl>=a.jianshorder by a.spid,a.hw,a.pihao--去掉重复的declare@hw1 char(11),@biaoshi int ,@pihao1 char(20)set @spid1 = '!@#'set @hw1 = '!@#'set @pihao1 = '!@#'update #zp7set @biaoshi=biaoshi = case when @spid1 = spid and @hw1=hw and @pihao1=pihao then 1 else 0 end,@spid1 = spid,@hw1=hw,@pihao1=pihao--去掉重复并生成赠品表select a.jiansh ,a.zpkzshl,a.zengpmch,a.zengpgg,a.beizhu,a.zengpcd ,a.zengptzs ,a.zengpbh,a.yan shjl ,a.pihao,a.hw,a.shl,a.spid, a.biaoshiinto #zpp7from #zp7 a where a.biaoshi=0--删除临时表drop table #zp1,#zp3,#zp4,#zp6,#zp7--------------------------------------------------------- 返回结果selectc.spbh,c.tongym,c.spmch,c.shpgg,c.shpchd,d.kcshl,c.dw,a.huowname ,a.pihao ,a.sxrq,a.baozhiqi,a. shl,c.koul,c.shlv,c.jlgg,c.zgjjxz,c.zjm,c.jj,c.leibie,c.jixing,c.chuffl,c.wdyq,c.pizhwh,c.zaobaoj,c.pfpj,c.zgshl,c.zdshj,d.chbdj,c.zhdcbj,a.spid,c.is_cyhydz,c.is_jbyw,g.jiansh,g.zpkzshl,g.zengpmch,g.zengpgg,g.zengpcd,g.zeng ptzs,g.beizhu,g.yanshjl,a.hw ,a.gebjj,c.dj as hshj,c.dj ,'合格' as zhilqkfrom #result1 a (nolock)join spkfjc d (nolock) on a.spid=d.spidjoin #t_dd c (nolock) on a.spid=c.spidleft outer join #zpp7 g on a.spid=g.spid and a.hw=g.hw and a.shl=g.shl and a.pihao=g.pihao----删除临时表drop table #t_dd, #t_kc, #t_alldd, #t_allkc, #t_ft_zj, #t_ft_ls, #t_wft_zj, #t_lsdd, #result , #result1, #zpp7endif @djlx in ('888')begin/* select a.* from (select b.spid,a.rq,a.ywy,a.djbh,a.spbh,case --when b.spid is null then '新品!'when a.spbh=b.spbh and (a.spmch!= b.spmch or a.shpgg!=b.shpgg or a.jlgg!=b.jlgg) then '需核对商品资料!'else b.spmch end as spmch,a.shpgg,a.shpchd,a.jlgg,a.dw,a.zhdcbj,a.huiytj,a.hscbj as lshj,a.pfpj,a.zdshj,a.fuzr,a.djbh as xgdjbh,convert(char(10),getdate(),21) as zhixrq,convert(char(8),getdate(),8) as ontime,b.shlv,b.hscbj,c.chbdj,case when /*b.spid is null*/a.spbh=b.spbh and (a.spmch!= b.spmch or a.shpgg!=b.shpgg or a.jlgg!=b.jlgg) then 'clRed' else 'clBlack' end as __fcolor, 'default' as__bcolorfrom tmp_excel_jgtz a (nolock) left join spkfk b (nolock) on a.spbh=b.spbh and b.beactive='是' --and a.spmch = b.spmch and a.shpgg=b.shpgg and a.jlgg=b.jlggand ( a.zhdcbj<>b.zhdcbj or a.huiytj<>b.huiytj or a.pfpj<>b.pfpj or a.zdshj<>b.zdshj)l eft join spkfjc c (nolock) on b.spid=c.spidwhere a.gzid = @gzid and b.spid is not null) a--where a.spbh not in(select spbh from spkfk b(nolock)where a.spmch<>'新品!' and a.zhdcbj=b.zhdcbj and a.huiytj=b.huiytj and a.pfpj=b.pfpj and a.zdshj=b.zdshj )order by a.spid*/select a.spbh,a.tongym,a.spmch,a.shpgg,a.shpchd ,a.dw,isnull(b.hshj,0),isnull(b.dj,0),a.shlv, a.jlgg,a.zgjjxz,a.zjm,a.jj,a.ypbs,0 as shl ,'合格' as zhilqk ,a.leibie,a.jixing,a.chuffl,a.wdyq,a.pizhwh,a.zaobaoj,a.pfpj,a.zgshl,a.zdshj,c.chbdj,a.zhdcbj,a.spid,a .is_cyhydz,a.is_jbyw,'' as beizhu,0 as jiansh,'' as yanshjlfrom tmp_excel_dj b (nolock) , spkfk a (nolock) ,spkfjc c (nolock)where b.gzid = @gzid and a.spid = b.spid and a.beactive='是' and c.spid=b.spidorder by a.spbhendif @djlx in ('003')beginselect spbh as fangabh,kcsl from tmp_execl_spkc (nolock) where gzid=@gzidendendif @action = 1beginif @djlx in ('112', '120','212')begindelete from tmp_excel_dj where gzid = @gzidendif @djlx in ('888')begindelete from tmp_excel_jgtc where gzid = @gzidendif @djlx in ('003')begindelete from tmp_execl_spkc where gzid = @gzidendendeND导入的计划,需要以时空资料为本,也可以用spbh,上面赠品需要相应的功能支持.如果你的时空里没有tmp_excel_dj这张表,就新建一个吧.存储过程有点复杂,服务器要结实CS单据中读取Excel文件函数说明:配置:1、在单据中增加ReadExcel函数调用;2、配置程序目录下的DJExcel.ini文件,配置方法请参照文件中相关说明;3、以插入语句使用为例描述此函数的工作流程:3.1、ReadExcel函数首先调用“插入x”语句将Excel表中的数据读入SQLServer的tmp_excel_dj表中(tmp_excel_dj表的结构根据使用状况确定,可临时调整)此处通过ODBC 将Excel表数据直接插入到指定的SQLServer中,例如:插入1=insert into tmp_excel_dj(gzid,spbh,spmch,shpgg,jlgg,shpchd,dw,shl,je,pihao,sxrq,插入2=baozhiqi,glid,hescbj,itemlength,itemheight,itemwidth,weight,beizhu,jixing,tongym,pizhwh) IN [ODBC]插入3= [ODBC;Driver=SQL Server;UID=sa;PWD=:password;Server=:server;DataBase=:database]插入4= select :gzid, a.药品编号, a.药品名称, a.药品规格, a.包装数量, a.产地, a.包装单位,插入5= a.数量, a.金额, a.批号, a.有效期至, a.生产日期,a.集团商品编码,a.核算成本价, 插入6= a.单品长,a.单品高,a.单品宽,a.单品重量,a.备注,a.剂型,a.通用名,a.批准文号插入7= from [Sheet1$] a变量::gzid临时生成,用于区分本次插入到tmp_excel_dj表的数据内容;注意:ReadExcel函数执行时会提示读入的Excel文件,[Sheet1]是要读取的工作表,以'$'结尾;系统将第一行识别为字段名(请注意不要拼错字段名,关键字不能写错);之后的处理都是与我们熟悉的与SQLServer打交道了;3.2、插入完成后,系统会调用“查询x”语句,根据刚才插入的:GZID变参进行读取,例如:查询1= exec wms_read_excel @action = 0, @djlx = 112, @gzid = :gzid变量::gzid,是之前读取Excel表时生成的临时标识;注意:该语句执行完毕会调用wms_read_excel过程(需修改),到tmp_excel_dj表中读取刚才插入的数据内容,并在界面展现出来,此数据集作为单据的明细来源(wms_read_excel 过程的作用类似于单据提取中的明细数据组织,所以应在此将所有关键字段备齐,具体需要的字段可参照相关提取方案的明细数据组织部分)3.3、进行选择后,将选中的明细插入到单据明细中(同单据提取)3.4、插入完毕,系统调用“删除x”语句,根据刚才插入的:GZID,将tmp_excel_dj表中使用完毕的临时数据删除;例如:删除1=exec wms_read_excel @action = 1, @djlx = 112, @gzid = :gzid变量::gzid,是之前读取Excel表时生成的临时标识;删除完毕后此变量已不存在;3.5、总结:这里的:gzid变参和单据中的gzid不是一回事,他们之间没有关联,要区别理解;先插入临时表再读取是因为通过ODBC直接读取Excel时,其能够支持得函数非常有限,往往不能满足需要;Excel文件中要有能够和当前系统相关联的字段,否则导入单据后可能造成无法识别时空产品成本核算的一点感悟存货计价,是对存货购进、生产和销售的入账价、发出价及库存价的确定。

相关文档
最新文档