仓库管理系统系统结构图和ERP仓储系统的区别

为什么WMS仓储管理系统比ERP更胜一筹_身边科技
身边科技WMS是一套结合无线通信网络,数据库管理系统等物联网方式,为物流配送中心提供储位优化,出入库作业,库内作业及配送规划与调度等系统管理、实施在线监控、警示联动、调度指挥、决策分析支持等功能。实现对物流配送中心全方位、精确、智能化的作业流程管理,最大化减少人力资源接入,有效提高仓储的存储与作业效率,降低仓储作业的差错率!行业开发并实施了上百家的物流配送中心仓储管理系统,备受广大客户的一直好评。
身边科技WMS系统的基本架构
企业的物流发生在企业所处的整条供应链之内。WMS是企业的处理企业物流业务的体系结构先进一个子系统。它具有有充分的可扩展性,能够与现有系统的接口集成,和企业内其它系统协同运作。企业执行整条供应链的系统架构如下图所示,各个子系统共同协同帮助企业供应链高效运作。
了解WMS在企业的整个供应链中所扮演的角色,能够更好的设计架构仓储管理系统。WMS架构主要体现在物理架构和软件系统架构。一般来说,WMS同时结合企业SCM模块,可以和贸易伙伴、贸易联盟轻松交流合作,创造更多的商机。
WMS系统集成了信息技术、无线射频技术、条码技术、电子标签技术、WEB技术及计算机应用技术等将仓库管理、无线扫描、电子显示、WEB应用有机的组成一个完整的仓储管理系统,从而提高作业效益,实现信息资源充分利用,加快网络化进程。其中的关键技术主要有无线射频技术(RF),电子标签,数据接口技术。
WMS如果缺少了RF系统的有力支持,仓储水平未必能有大幅度的提高,完善的WMS是离不开RF系统支持的。因为WMS的高效率运作,是以快速、准确、动态地获取货物处理数据作为其系统运行的基础。而RF通讯系统使得WMS实时数据处理成为可能,从而大大简化了传统的工作流程。如把原来的移动码就有50余种简化为一两个操作。实践证明,以RF技术为基础的WMS,无论是在确保企业实时采集动态的数据方面,还是在提高企业效率与投资回报率方面都具有很大的优势。RF无线射频识别是一种非接触式的自动识别技术,它通过射频信号自动识别目标对象并获取相关数据。识别工作无须人工干预,可以工作于各种恶劣环境。
电子标签即射频卡,又称为感应卡,是一种通过无线电波读取卡内信息的新型科技IC卡,它成功地解决了无源和免接触这一难题。在实际应用中,电子标签附着在待识别物体的表面。阅读器可以无接触地读取并识别电子标签中保存地电子数据,从而达到自动识别地目的。通常阅读器和电脑相连,所读取地标签信息被传送到电脑上进行下一步处理。
WMS能否与企业的资源管理系统ERP等系统实现无缝连接,这成为评价其功能的重要因素,也是企业尤其是制造企业在实施供应链管理或物流一体化管理的重要基础。若无此基础,企业是不能有效实施快速响应战略QR或有效客户响应ECR战略的。而这个基础是通过接口技术来实现的。
语音拣选技术应用,是最新的无线拣选技术,特别是当语音拣选代替了传统的纸质拣选单、或从无线终端拣选过渡到语音技术时,实现了实时、准确、交互、及时确认等功能,提升了拣选效率,大大降低了差错率。
身边科技WMS应用功能
传统的仓库管理已经不能适应日益复杂的仓库管理业务,给仓库在日常工作中带来了管理,监控的难度,如何追踪到成品使用到的原材料批次,如何准确快捷的进行仓库盘点,更加科学的管理仓库成了迫在眉急需要解决的问题,身边科技公司根据行业内多年的实施经验,提出了WMS仓库管理的整体解决方案,借助条码的管理手段更加科学的对仓库进行管理。
WMS仓库管理系统功能模块:
原材料管理,成品管理
(一)原材料仓库管理:原材料入库,原材料发料,原材料盘点。
1.原材料入库
仓库管理人员检验原材料合格后,按照原材料名称,规格,批号进行入库,利用PDA扫描原材料条码和库位条码,输入原材料数量.完成原材料入库,修改原材料库存.
2.原材料发料
原材料需要领用时,仓库管理人员利用PDA扫描出库的原材料条码和库位条码,输入发料数量,完成出库,同时修改原材料库存
3.原材料盘点
原材料盘点时,仓库管理人员利用PDA到仓库现场扫描原材料条码和库位条码.输入实际盘点的原材料数量,扫描结束后,PDA将根据帐面的库存数量和实际的库存数量生成一份盘点差异报表.现场提供盘点结果给操作人员,保证数据差异及时处理.
(二)成品仓库管理:生产投料,生成成品标签,成品入库,成品出库,成品盘点
(1)生产投料
下载生产工艺单到采集终端,在生产现场采集生产成品的批次和投料的原料批次,系统将自动核对原料投放是否正确,同时记录成品批次和原料批次,提供以后追溯成品原料批次使用。需要拆包投料的原料,拆包后生成新的原料标签贴到剩余原料上。
(2)生成成品标签
成品生产下线后,条码系统根据成品的编号,规格生成单一的成品条码编号,打印出成品的标签后,根据实际的成品将标签贴到成品上,做为成品的单一标识.
成品标签样式:
(3)成品入库
生产下线检验合格后,仓库管理人员,利用PDA扫描入库的成品标签条码,库位条码,条码系统更新对应成品的库存信息.
(4)成品出库
利用PDA扫描需要发货的成品标签条码,发货库位条码,条码系统更新对应成品的库存信息.同时更新销售订单的状态为发货.
(5)成品盘点
仓库人员利用PDA到仓库现场进行盘点,扫描库位和成品包装号条码,在扫描条码的同时,系统自动和账面库存情况进行核对,提示是否符合账面库存,如果不符合将提示,账面库存和实际库存的差异情况。扫描完所有成品条码后,WMS系统将自动生产盘点差异表。
中国的应用
身边科技仓储管理系统(WMS)是仓储管理信息化的具体形式,它在我国的应用还处于起步阶段。在我国市场上呈现出二元结构:以跨国公司或国内少数先进企业为代表的高端市场,其应用WMS的比例较高,系统也比较集中在国外基本成熟的主流品牌;以国内企业为代表的中低端市场,主要应用国内开发的WMS产品。下面主要结合中国物流与物流信息化优秀案例,从应用角度对国内企业的WMS概况做一个分析。
第一类是基于典型的配送中心业务的应用系统,在销售物流中如连锁超市的配送中心,在供应物流中如生产企业的零配件配送中心,都能见到这样的案例。现代物流中心就是这样的一个典型。该系统的目标,一是落实国家有关物流的管理和控制标准GSP等,二是优化流程,提高效率。系统功能包括进货管理、库存管理、订单管理、拣选、复核、配送、RF终端管理、商品与货位基本信息管理等功能模块;通过网络化和数字化方式,提高库内作业控制水平和任务编排。该系统把配送时间缩短了50%,订单处理能力提高了一倍以上,还取得了显著的社会效益,成为物流的一个样板。此类系统多用于制造业或分销业的供应链管理中,也是WMS中最常见的一类。
第二类是以仓储作业技术的整合为主要目标的系统,解决各种自动化设备的信息系统之间整合与优化的问题。生产物流信息系统即属于此类,该系统主要解决原材料库、半成品库与成品库之间的协调运行问题,否则将不能保持连续作业,不仅放空生产力,还会浪费能源。该系统的难点在于物流系统与各自动化设备系统要无缝连接,使库存成为流水线的一个流动环节,也使流水线成为库存操作的一个组成部分。各种专用设备均有自己的信息系统,WMS不仅要整合设备系统,也要整合工艺流程系统,还要融入更大范围的企业整体信息化系统中去。此类系统涉及的流程相对规范、专业化,多出现在大型ERP系统之中,成为一个重要组成部分。
第三类是以仓储业的经营决策为重点的应用系统,其鲜明的特点是具有非常灵活的计费系统、准确及时的核算系统和功能完善的客户管理系统,为仓储业经营提供决策支持信息。仓库管理系统就是这样的一个案例。此类系统多用于一些提供公仓仓储服务的企业中,其流程管理、仓储作业的技术共性多、特性少,所以要求不高,适合对多数客户提供通用的服务。公司采用了一套适合自身特点的WMS以后,减少了人工成本,提高了仓库利用率,明显增加了经济效益。
第四类是以电商B2C仓管理为目的的应用系统,这套系统侧重于仓库管理和配送管理的一体化,也就是我们通常所说的WMS+TMS,这类系统大部分采用随机存储策略。国外知名厂商国内实施多为第三方,由于研发主要在国外实施起来尤其有客户定制部分会比较困难,而且大部分没有将TMS与WMS真正衔接起来。通过仓配一体化的系统,真正将电商的仓储管理、物流配送的管理、客服的管理、供应链的可视化得以具体的实现。
身边科技仓储管理系统WMS关注的核心理念是高效的任务执行和流程规划策略,是建立在成熟的物流理念的基础之上的,高性能的WMS,高效的管理流程,先进的设备共同铸造成功的仓储管理。WMS通过不同的功能模块支持企业仓储配送的执行并适应不断变化着的商务策略、电子商务、客户需求、现代化设备、订单的大小和结构环境,提高作业效率与资源利用率来降低物流成本和增强客户服务水平,实现对一个大型仓库或配送中心的所有执行过程的有效管理,从而使仓储管理策略长期处于领先地位,帮助企业打造物流管理的核心竞争力,诠释现代化物流管理理念。
身边科技WMS系统目标
1)数据无缝集成
WMS(仓库管理系统)数据与ERP实现实时无缝对接,ERP单据由仓库管理系统调用ERP接口在实际的仓库业务操作时自动生成,避免了ERP重录单据入又提高了数据的及时性。
2)库位管理
WMS(仓库管理系统)对仓库按库位划分进行系统管理,方便物料分类存放管理、方便物料上架下架、方便仓库盘点、方便查询物料存放位置及分布、方便查询库位存放物料品种及数量等。
3)实现物料的先进先出
物料在出库下架时,根据其入库批次时间控制较早入库的物料应该优先发出,以减少仓库的呆料、废料。
4)提高数据的实时性,准确性
目前库存数据更新主要靠手工输入单据到ERP,一是单据录入系统经常滞后,造成统库存更新不及时;二是人工录入数据容易出错,造成库存数据不正确。实施本WMS|仓库管理系统后实时的数据采集可保证库存数据的及时更新、可防止人工误差,提高了库存数据的准确性,使得企业的财务帐与货物帐对应一致,保证了企业的生产供应和客户需求。
5)出入库防错、防漏
利用出入库指示单据(可能来自ERP,例如采购订单、销售出货指示单)验证出入库物料、数量是否正确,并在错漏发生时及时警告或拒绝操作。
身边科技WMS系统实施效果
经过4个多月的开发实施,系统成功正式上线。WMS(仓库管理系统),公司实现了精细化的仓库管理,全面提升了仓库管理水平:
身边科技实现了和ERP系统无缝的对接,提升了ERP运用效能;实现精细的库位管理,规范了仓位管理,提升了仓库利用率;实现物料的批次、单品条码管理,使得库存更精细、更可控;实现库存先进先出控制,减少库存的呆废料,减低库存成本;确保业务、库存等数据的准备、及时,为及决策提供可靠的数据依据。
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
保税仓储物流管理系统为企业做到真正的智能化仓储管理! 让物料资产使用率降低人工
业务流程,已对接主流物流公司系统和进口清关口岸
具备日处理10万单能力,稳定高效
今日搜狐热点ERP、进销存、仓储管理系统三者傻傻分不清?
查了很多资料、听了很多介绍,看到ERP、进销存、仓储管理系统这三个词是不是依然一脸懵B?
今天,选软件网就来给大家说说他们仨之间的区别与联系。
一、懵圈源头:共同的模块功能
这三大管理软件为什么会让大家产生混淆,究其根本,是因为ERP、进销存、仓储管理系统都包含仓库管理模块,这是这三大软件的最大共性。
仓储管理(包括原料、半成品、成品管理)是多数企业内部管理中最重要的部分:采购、生产、销售都是以库存管理为连接点,库存也是生产企业的最重要的成本。
所以,如果你要解决的是企业管理业务是仓储管理这一块,这三大软件都能满足你的需求。
二、因为不同,所以更专业
三大软件都有企业管理最重要的模块功能,到底什么情况下选择哪种管理软件更为合适?那么,首先得摸清ERP、进销存、仓储管理系统三大软件的具体区别:
(1)支持财务会计的精细化管理。通常起源于财务系统,所以对财务会计有精细化的支持,很多ERP中的财务模块都经过了国家财务部门的认证。
(2)产品结构管理(BOM)。ERP参与销售计划、采购计划、生产计划的管理,BOM就成为物料需求计划的基础。
(3)物料需求计划(MRP)。由成品销售计划,生成原材料的采购计划和半成品、成品的生产计划。除了BOM的计算外,还涉及到采购在途、半成品库存、成品库存、生产在途、外协在途等所谓“8大量”复杂参与计算。
2、进销存软件:可以理解为减少了BOM和MRP功能的ERP。
BOM和MRP是ERP的精髓,但是在国内多数企业中,物料需求因为企业内部、外部的诸多原因,不能“计算”出来(比如原材料的采购计划,和供应商的供应周期很大关系,也涉及到企业对外部市场的分析,例如:加大紧俏物质的采购量等),所以BOM和MRP成为“看上去很美”的功能,在很多企业的ERP项目实施中,其实都没有使用到这个功能,实际上只是一个进销存系统而已。
3、仓储管理系统:和进销存软件比较,专业的仓储管理系统有以下功能变化:
(1)加入了更多的作业策略管理和精细化作业
具体的说,进销存软件是对企业的业务数据进行“事后记录”,有货品出入库时,在进销存软件中进行登记和单据打印。而WMS需要在业务实际发生前做出操作指引,比如说上架建议、拣货策略等等,根据软件设定的规则做智能化的分析,形成仓管员的最优化的操作指引。软件的操作记录,也更能反应实际情况,比如进销存软件往往不能支持一种物料入库时摆放到多个仓储位的情形,只简单给一个仓储位(WMS是在物料入库前,就自动分析出需要摆放多个仓储位和具体的、最优化的推荐仓储位)。
(2)弱化了价格和财务管理功能
专业的仓储管理系统往往应用在第三方物流企业,所以物料进仓时不必关注采购价格,而是关注仓租费等物流费用的计算,所以WMS弱化了价格和财务管理。当然wms也会应用到制造企业。因为价格和财务管理在很多制造企业中是独立运作的,加上财务管理本身的规范性和财务软件的标准化,所以很多中型的制造企业采用的是“仓库管理软件+财务管理软件“的模式进行管理。
(3)增加了“计费引擎”模块
仓储管理系统增加了独有的“计费引擎”模块,为物流计费提供支持。物流行业的计费规则往往非常复杂,比如仓储企业的仓租费用就包括:包仓、重量、托盘数、体积、物料属性、入库时间、期间天数等多个条件的排列组合,同时在加打折、分级价格等等因素,计费引擎的技术含量不亚于ERP系统的MRP计算。在制造企业中,计费引擎也可以帮助企业进行成本分析,计算仓库的使用成本。
看完上述内容,如果你还是分不清这三大软件的区别与联系,在选购企业管理软件时依然无从下手,可以通过,提交软件需求,选软件网选型专家5分钟内闪电响应,帮你快速找到适合你需求的管理软件产品及供应商,或者可以直接拨打选型服务热线400-832-7808寻求选型支持。
选软件网,目前中国最大最专业的企业管理软件产品选型平台,专为买软件的人而生,平均每天有20000+人通过选软件网进行软件选型:
1、选软件网平台聚集了各行各业所需的主流企业管理软件及全国各地软件供应商,软件产品及供应商可筛选范围大,强大的资源库,找几款适合你需求的软件,敲几下键盘就搞定;
2、可以免费在线试用各类管理软件,无需下载无需安装,轻松在线试用;软件好不好用、适不适合自己的企业,亲自验过才有效;
3、设有专业的选型顾问提供在线免费咨询,针对具体软件需求、费用预算、所在地域推荐最适合的软件及其供应商,一对一服务,不是VIP胜似VIP。
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
今日搜狐热点需求分析:
  1.设计库房表,至少包括两个字段,库房名称,库房所属公司的ID(在客户资质审批表中找到对应公司的ID)
&&&&& 2.设计增、删、改、查一套程序,其中的删除要做限制,只要有库存数据存在则不允许删除对应库房的记录。
&&&&& 3.库房管理权限为高级权限,程序开发开始后,到配一个新的权限值。
新增的原理:
仓库管理员的新增和修改:
ALTER PROCEDURE [dbo].[BioErpStockUsers_ADD]
@StockID int,
@UserID int
INSERT INTO [BioErpStockUsers](
[StockID],[UserID]
@StockID,@UserID
ALTER PROCEDURE [dbo].[BioErpStockUsers_Update]
@StockID int,
@UserID int
UPDATE [BioErpStockUsers] SET
[StockID] = @StockID,[UserID] = @UserID
WHERE ID=@ID
仓库信息的新增和修改存储过程:
--修改:删除了LeaderUserID字段,新增加@ID输出参数
------------------------------------
ALTER PROCEDURE [dbo].[BioErpStockTable_ADD]
--输出的参数
@ID int output,
@StockName nvarchar(80),
@FarhterCompany int,
@StockAddress nvarchar(100),
@IsDel bit
INSERT INTO [BioErpStockTable](
[StockName],[FarhterCompany],[StockAddress],[IsDel]
@StockName,@FarhterCompany,@StockAddress,@IsDel
@@为全局变量
获取当前表的最大表示列(与下面的是等效的)
SET @ID=@@IDENTITY
-- SELECT @ID=MAX(ID) FROM BioErpStockTable
&修改的存储过程:
ALTER PROCEDURE [dbo].[BioErpStockTable_Update]
@StockName nvarchar(80),
@FarhterCompany int,
@StockAddress nvarchar(100),
@IsDel bit
UPDATE [BioErpStockTable] SET
[StockName] = @StockName,[FarhterCompany] = @FarhterCompany,[StockAddress] = @StockAddress,[IsDel] = @IsDel
WHERE ID=@ID
实现的效果图:
前台界面:
&%@ Page Language="C#" AutoEventWireup="true" CodeBehind="StockAdd.aspx.cs" Inherits="BioErpWeb.StockSystem.StockAdd" %&
&%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="cc1" %&
&!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&
&html xmlns="http://www.w3.org/1999/xhtml"&
&head runat="server"&
&title&&/title&
&link href="../Styles/ERPBaseStyle.css" rel="stylesheet" type="text/css" /&
&link href="../Styles/CalenderStyle.css" rel="stylesheet" type="text/css" /&
&style type="text/css"&
width: 100
&script src="../JS/CheckUserNames.js" type="text/javascript"&&/script&
&script src="../Scripts/jquery-1.4.1.min.js" type="text/javascript"&&/script&
&script type="text/javascript"&
$(document).ready(function () {
var i = 0;
$("#btnaddRow").click(function () {
var tr = '&tr id="tr' + i + '"&&td&&input type="text" name="UserId"
id="txtUserName"/&&/td&&td class="style1"&&input type="button" value="选择员工"
style=" width:100" onclick="showDialog()"/&&/td&&/tr&';
$("#caption").before(tr);
$("#btnDeleteRow").click(function () {
var lasttr = $("#tr" + i);
lasttr.remove();
$("#btnSubmit").click(function () {
var stockname = $("#txtStockName");
if (stockname.val() == '') {
alert("请填写仓库名称");
var stockaddress = $("#txtAddress");
if (stockaddress.val() == '') {
alert("请填写仓库地址");
//日9:54:56 完善下拉列表验证
var selectcompany = $("#ddlCompany");
var selectCaption = selectcompany.select();
if (selectCaption.val() == 0) {
alert("请选择所属公司");
var userids = document.getElementsByName("UserId");
for (var j = 0; j & userids. j++) {
if (userids[j].value == '')
alert("请选择第"+(j+1)+"行用户编号");
&form id="form1" runat="server"&
&table class="maintable"&
&td class="titlebar"
colspan="2"&
&span&仓库信息管理系统&/span&
库房名称:
&asp:TextBox ID="txtStockName" Width="200px" runat="server"&&/asp:TextBox&
库房地址:
&asp:TextBox ID="txtAddress" Width="200px" runat="server"&&/asp:TextBox&
&asp:DropDownList ID="ddlCompany" Width="200px" runat="server"&
&/asp:DropDownList&
仓库管理员
&tr&&td&&input type="text" name="UserId"
id="txtUserName"/&&/td&&td class="style1"&&input type="button" value="选择员工"
style=" width:100" onclick="showDialog()"/&&/td&&/tr&
&tr id="caption"&&td colspan="2" style=" text-align:"&&input type="button" id="btnaddRow" value="添加一行"
style=" width:100"/& &input type="button" value="删除一行" id="btnDeleteRow"
style=" width:100"/&&/td&&/tr&
&td class="bottomtd" colspan="2"&
&asp:Button ID="btnSubmit" runat="server" Text="仓库信息登记" CssClass="submitbutton" OnClick="btnSubmit_Click" /&
&选择员工的界面:
&%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PersonList.aspx.cs" Inherits="BioErpWeb.PersonList.PersonList" %&
&!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&
&html xmlns="http://www.w3.org/1999/xhtml"&
&head runat="server"&
&title&&/title&
&script type="text/javascript"&
function search() {
if (document.getElementById("txtSearchName").value == "") {
alert("请输入员工姓名");
document.getElementById("PersonIframeList").src = "PersonListSelect.aspx?username=" + encodeURIComponent(document.getElementById("txtSearchName").value);
function choose() {
window.returnValue = PersonIframeList.document.getElementById("sltUserList").
window.close();
&style type="text/css"&
width: 157
&form id="form1" runat="server"&
&table style=" width:310 "&
&td class="style1"&员工姓名
&input id="txtSearchName" name="txtSearchName" type="text" size="10"
maxlength="10"/& &input type="button" value="查询" onclick="search()" /&
&td class="style1"&
&iframe width="120px" id="PersonIframeList" frameborder=0 src="PersonListSelect.aspx" height="310px" &
&td style=" vertical-align: padding-bottom:20"&
&input type="button"
value="选择" onclick="choose()"/&
&选择不同的员工显示不同的编号:
//人员选择对话框
function showDialog() {
var re = showModalDialog("../PersonList/PersonList.aspx", "", "dialogWidth=320dialogHeight=350px");
//找到点击的事件
var obj = window.event.srcE
var tr = obj.parentNode.parentN
var rowIndex = tr.rowI
var txts = tr.getElementsByTagName('input');
if (re == null || re == "")
if (txts[0].value == "" || txts[0].value == null) {
txts[0].value = "请选择";
txts[0].value =
&查询公司列表的BLL:
class CompanyTableBll
/// &summary&
/// 查询公司列表
/// &/summary&
/// &returns&DataTable&/returns&
public DataTable GetCompanyList()
SqlComm.GetDataByTableNameValue("dbo.BioErpCompanyTable", "*").Tables[0];
添加和修改仓库管理员数据:
class BioErpStockUsersBLL
/// &summary&
/// 添加管理员数据
/// &/summary&
/// &param name="stockuser"&&/param&
/// &returns&&/returns&
public int StockUserAdd(BioErpStockUsers stockuser)
SqlParameter[] parameters = {
new SqlParameter("@StockID", SqlDbType.Int,4),
new SqlParameter("@UserID", SqlDbType.Int,4)};
parameters[0].Value = stockuser.StockID;
parameters[1].Value = stockuser.UserID;
return DataBaseHelper.ExcuteSqlReturnInt("BioErpStockUsers_ADD", CommandType.StoredProcedure, parameters);
/// &summary&
/// 根据ID修改仓库管理员信息
/// &/summary&
/// &param name="stockuser"&&/param&
/// &returns&&/returns&
public int StockUserUpdeat(BioErpStockUsers stockuser)
SqlParameter[] parameters = {
new SqlParameter("@ID",SqlDbType.Int,4),
new SqlParameter("@StockID", SqlDbType.Int,4),
new SqlParameter("@UserID", SqlDbType.Int,4)};
parameters[0].Value = stockuser.ID;
parameters[1].Value = stockuser.StockID;
parameters[2].Value = stockuser.UserID;
return DataBaseHelper.ExcuteSqlReturnInt("BioErpStockUsers_Update", CommandType.StoredProcedure, parameters);
&添加UI层后台的代码:
public partial class StockAdd : System.Web.UI.Page
CompanyTableBll companybll = new CompanyTableBll();
protected void Page_Load(object sender, EventArgs e)
if (!IsPostBack)
CompanyListBind();
private void CompanyListBind()
this.ddlCompany.DataSource = companybll.GetCompanyList();
this.ddlCompany.DataTextField = "CompanyName";
this.ddlCompany.DataValueField = "ID";
this.ddlCompany.DataBind();
this.ddlCompany.Items.Add(new ListItem("--请选择--","0"));
this.ddlCompany.SelectedValue = "0";
protected void btnSubmit_Click(object sender, EventArgs e)
StockTable stock = new StockTable();
stock.StockName = this.txtStockName.T
stock.StockAddress = this.txtAddress.T
stock.FarhterCompany = int.Parse(this.ddlCompany.SelectedValue.ToString());
stock.IsDel =
BioErpStockTableBLL stocktablebll = new BioErpStockTableBLL();
int stockid= stocktablebll.StockTableAdd(stock);
BioErpStockUsers stockusers = new BioErpStockUsers();
BioErpStockUsersBLL stockusersbll = new BioErpStockUsersBLL();
stockusers.StockID =
string userids= Request["UserId"].ToString();
string[] userarrayList = userids.Split(',');
for (int i = 0; i & userarrayList.L i++)
stockusers.UserID = int.Parse(userarrayList[i].ToString());
stockusersbll.StockUserAdd(stockusers);
Server.Transfer("StockTableList.aspx");
&游标的介绍:
Transact_SQL 游标是由DECLARE CURSOR 语法定义、主要用在Transact_SQL 脚本、和中。Transact_SQL 游标主要用在服务器上,由从发送给服务器的Transact_SQL 语句或是、存储过程、触发器中的Transact_SQL 进行管理。
查询实现的需求:
1.联合2个表查询,将返回结果绑定给GridView控件。
2.将员工编号对应的姓名组装成姓名字符串,显示在列表中。
游标的定义方式:
-- Description: &通过userid'2,331,332,333'等查询对应的用户名&
-- =============================================
--select dbo.[BioErpTbFN_GetUserNameListByID](',2,331,332,333,')
ALTER FUNCTION [dbo].[BioErpTbFN_GetUserNameListByID]
(@userID NVARCHAR(200))
NVARCHAR(1000)
declare cur cursor for select UserID,UserName from UserManager
where CHARINDEX(','+convert(NVARCHAR(10) ,id)+',',(','+@userID+','))&0
declare @id int
declare @name NVARCHAR(50)
declare @nn NVARCHAR(3000)
set @nn=''
fetch next from cur into @id, @name
while @@fetch_status = 0
set @nn=@nn+@name+';'
if len(@nn)&50
set @nn=SUBSTRING(@nn,0,50)
set @nn=@nn+'&&'
fetch next from cur into @id, @name
DEALLOCATE cur
RETURN @nn
游标的具体使用:
-- Description: 根据仓库编号返回员工姓名字符串
-- =============================================
ALTER FUNCTION [dbo].[GetUserListByStockID]
--传递的参数
@StockID int
--返回的类型
nvarchar(200)
--定义游标
declare cur cursor for
SELECT userName FROM UserManager WHERE UserManager.UserId IN ( SELECT
UserID FROM BioErpStockUsers WHERE StockID=@StockID)
--打开游标
--定义姓名的参数
DECLARE @name nvarchar(20)
--姓名组装后的字符串的参数
DECLARE @names nvarchar(1000)
--给变量设置值
SET @names=''
--从游标中取出数据下个数据放到变量中去
FETCH next FROM cur INTO @name
--取到了一行数据
WHILE @@FETCH_STATUS =0
--取到数据之后组装字符串
SET @names=@names+@name+','
--在去下一条
FETCH next FROM cur INTO @name
--关闭游标
--回收游标
DEALLOCATE cur
--返回变量
RETURN @names
select [dbo].[GetUserListByStockID](1)
&结合实例的具体使用:
仓库信息列表的显示列:
&%@ Page Language="C#" AutoEventWireup="true" CodeBehind="StockTableList.aspx.cs" Inherits="BioErpWeb.StockSystem.StockTableList" %&
&%@ Register assembly="AspNetPager" namespace="Wuqi.Webdiyer" tagprefix="webdiyer" %&
&!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&
&html xmlns="http://www.w3.org/1999/xhtml"&
&head runat="server"&
&title&&/title&
&link href="../Styles/ERPBaseStyle.css" rel="stylesheet" type="text/css" /&
&form id="form1" runat="server"&
&table class="maintable"&
&td class="titlebar"&
&span&仓库信息管理系统&/span&
&asp:GridView ID="GridView1"
AutoGenerateColumns="False" Width="800px"
runat="server"&
&asp:TemplateField HeaderText="编号"&
&ItemTemplate&
&asp:Label ID="Label1" runat="server" Text='&%# Eval("ID") %&'&&/asp:Label&
&/ItemTemplate&
&/asp:TemplateField&
&asp:TemplateField HeaderText="仓库名"&
&ItemTemplate&
&asp:Label ID="Label2" runat="server" Text='&%# Eval("StockName") %&'&&/asp:Label&
&/ItemTemplate&
&/asp:TemplateField&
&asp:TemplateField HeaderText="地址"&
&ItemTemplate&
&asp:Label ID="Label3" runat="server" Text='&%# Eval("StockAddress") %&'&&/asp:Label&
&/ItemTemplate&
&/asp:TemplateField&
&asp:TemplateField HeaderText="所属公司"&
&ItemTemplate&
&asp:Label ID="Label4" runat="server" Text='&%# Eval("FarhterCompany") %&'&&/asp:Label&
&/ItemTemplate&
&/asp:TemplateField&
&asp:TemplateField HeaderText="管理员"&
&ItemTemplate&
&asp:Label ID="Label5" runat="server" Text='&%# Eval("UserNames") %&'&&/asp:Label&
&/ItemTemplate&
&/asp:TemplateField&
&asp:TemplateField HeaderText="操作"&
&ItemTemplate&
&asp:ImageButton ID="imgEditBtn" Width="50" Height="20" CommandName="imgEdit" CommandArgument='&%#Eval("ID") %&' CausesValidation="false" ImageUrl="~/Web/images/Edit.gif" runat="server" /&
&asp:ImageButton ID="imgDeleteBtn" Width="50" Height="20" CommandName="imgDelete"
OnClientClick="return confirm('是否确定删除?');" CommandArgument='&%#Eval("ID") %&' ImageUrl="~/Web/images/Delete.gif" runat="server" /&
&/ItemTemplate&
&ItemStyle HorizontalAlign="Center"
Width="120px"/&
&/asp:TemplateField&
&/Columns&
&/asp:GridView&
&webdiyer:AspNetPager ID="AspNetPager1" runat="server"&
&/webdiyer:AspNetPager&
&把查询的数据放入视图中:
create View [View_StockList]
[FarhterCompany]=[dbo].[getCompanyNameByCompanyID](FarhterCompany),
[StockAddress],
'UserNames'=[dbo].[GetUserListByStockID](ID)
[dbo].[BioErpStockTable]
对应的公司名称(标量函数):
-- Description: 根据公司编号返回公司名称
-- =============================================
ALTER FUNCTION [dbo].[getCompanyNameByCompanyID]
--返回的值
RETURNS nvarchar(100)
-- Declare the return variable here
DECLARE @companyname nvarchar(100)
-- Add the T-SQL statements to compute the return value here
SELECT @companyname=CompanyName FROM BioErpCompanyTable WHERE ID=@ID
-- 返回变量
RETURN @companyname
&显示的代码:
public partial class StockTableList : System.Web.UI.Page
static string Condition = "";
static int pageindex=0;
static int pagesize = 8;
protected void Page_Load(object sender, EventArgs e)
if (!IsPostBack)
getStockList();
/// &summary&
/// 获取仓库信息列表
/// &/summary&
private void getStockList()
this.GridView1.DataSource=
SqlComm.getDataByPageIndex("View_StockList", "ID,StockName,FarhterCompany,StockAddress,IsDel,UserNames", "ID",Condition, pageindex, pagesize);
this.GridView1.DataBind();
阅读(...) 评论()
Powered By:

我要回帖

更多关于 智能仓库管理系统 的文章

 

随机推荐