ERP基础档案管理模块中实现多级分类档案ID号自动编码技术(V1.0)
2008-04-27 16:25
986 查看
ERP基础档案管理模块中实现多级分类档案ID号自动编码技术(V1.0)
本存储过程实现了多级分类档案ID号自动编码技术,本版本(V1.0)现在只实现每级3位的编码,
本版本的特点是:
n 可以根据不同的表产生不同的编码,达到通用化
n 调用时通过指定iIsSubNode要产生的节点编码是否是子结点还是兄弟节点来生成对应编码
进行调用本存储过程时需要注意的是需要传递节点的层次(或是叫节点的深度)
另外下一个版本(V2.0)将根据用户自定义每级长度来实现更灵活的自动编码技术。
CREATEprocedureprcIDAutoGen
@vSourceIDvarchar(30),
@IDepthint,
@iIsSubNodeint,
@Tablevarchar(20),
@vIncrementvarchar(30)output
as
begin
declare@iLenint
declare@vTempIDvarchar(30)
declare@SQLStringnvarchar(500)
if@iIsSubNode=1
begin
set@IDepth=@IDepth+1
set@iLen=@IDepth*3
set@SQLString=N'selectvIDfrom'+@Table+'wherevID='''+ltrim(rtrim(@vSourceID))+''''
exec(@SQLString)
if@@rowcount>0
begin
select@vSourceIDasvIDinto#t
set@SQLString=N'insert#tselectvIDfrom'+@Table+'wherevParentIDin(selectvIDfrom#t) andvIDnotin(selectvIDfrom#t)andIDepth=@IDepth'
execsp_executesql@SQLString,N'@IDepthint',@IDepth
if@@rowcount>0
begin
set@SQLString=N'select @vTempID=isnull(max(vID),''0'')from#t'
execsp_executesql@SQLString,N'@vTempIDvarchar(30)output',@vTempID output
set@SQLString='select@vIncrement=right(''000''+cast((cast(substring(@vTempID,1,@iLen)asdecimal(30,0))+1)asvarchar),@iLen)'
execsp_executesql@SQLString,N'@vIncrementvarchar(30)output,@vTempIDvarchar(30),@iLenint',@vIncrementout,@vTempID,@iLen
end
else
begin
select @vIncrement=ltrim(rtrim(@vSourceID))+'001'
end
end
else
begin
select@vIncrement='001'
end
end
else
begin
set@iLen=len(ltrim(rtrim(@vSourceID)))
set@SQLString=N'selectvIDfrom'+@Table+'wherevID='''+ltrim(rtrim(@vSourceID))+''''
exec(@SQLString)
if@@rowcount>0
begin
set@SQLString=N'select @vTempID=isnull(max(vID),''0'')from'+@Table+'wherevIDin(selectvIDfrom'+@Table+'whereIDepth=@IDepth)'
execsp_executesql@SQLString,N'@vTempIDvarchar(30)output,@IDepthint',@vTempID output,@IDepth
set@SQLString='select@vIncrement=right(''000''+cast((cast(substring(@vTempID,1,@iLen)asdecimal(30,0))+1)asvarchar),@iLen)'
execsp_executesql@SQLString,N'@vIncrementvarchar(30)output,@vTempIDvarchar(30),@iLenint',@vIncrementout,@vTempID,@iLen
end
else
begin
select@vIncrement='001'
end
end
end
用户创建基础档案时可以按以下类似表格式创建:
createtableCustomerClass(
vID varchar(30)constraintpkCustomerClassprimarykey,1
本存储过程实现了多级分类档案ID号自动编码技术,本版本(V1.0)现在只实现每级3位的编码,
本版本的特点是:
n 可以根据不同的表产生不同的编码,达到通用化
n 调用时通过指定iIsSubNode要产生的节点编码是否是子结点还是兄弟节点来生成对应编码
进行调用本存储过程时需要注意的是需要传递节点的层次(或是叫节点的深度)
另外下一个版本(V2.0)将根据用户自定义每级长度来实现更灵活的自动编码技术。
CREATEprocedureprcIDAutoGen
@vSourceIDvarchar(30),
@IDepthint,
@iIsSubNodeint,
@Tablevarchar(20),
@vIncrementvarchar(30)output
as
begin
declare@iLenint
declare@vTempIDvarchar(30)
declare@SQLStringnvarchar(500)
if@iIsSubNode=1
begin
set@IDepth=@IDepth+1
set@iLen=@IDepth*3
set@SQLString=N'selectvIDfrom'+@Table+'wherevID='''+ltrim(rtrim(@vSourceID))+''''
exec(@SQLString)
if@@rowcount>0
begin
select@vSourceIDasvIDinto#t
set@SQLString=N'insert#tselectvIDfrom'+@Table+'wherevParentIDin(selectvIDfrom#t) andvIDnotin(selectvIDfrom#t)andIDepth=@IDepth'
execsp_executesql@SQLString,N'@IDepthint',@IDepth
if@@rowcount>0
begin
set@SQLString=N'select @vTempID=isnull(max(vID),''0'')from#t'
execsp_executesql@SQLString,N'@vTempIDvarchar(30)output',@vTempID output
set@SQLString='select@vIncrement=right(''000''+cast((cast(substring(@vTempID,1,@iLen)asdecimal(30,0))+1)asvarchar),@iLen)'
execsp_executesql@SQLString,N'@vIncrementvarchar(30)output,@vTempIDvarchar(30),@iLenint',@vIncrementout,@vTempID,@iLen
end
else
begin
select @vIncrement=ltrim(rtrim(@vSourceID))+'001'
end
end
else
begin
select@vIncrement='001'
end
end
else
begin
set@iLen=len(ltrim(rtrim(@vSourceID)))
set@SQLString=N'selectvIDfrom'+@Table+'wherevID='''+ltrim(rtrim(@vSourceID))+''''
exec(@SQLString)
if@@rowcount>0
begin
set@SQLString=N'select @vTempID=isnull(max(vID),''0'')from'+@Table+'wherevIDin(selectvIDfrom'+@Table+'whereIDepth=@IDepth)'
execsp_executesql@SQLString,N'@vTempIDvarchar(30)output,@IDepthint',@vTempID output,@IDepth
set@SQLString='select@vIncrement=right(''000''+cast((cast(substring(@vTempID,1,@iLen)asdecimal(30,0))+1)asvarchar),@iLen)'
execsp_executesql@SQLString,N'@vIncrementvarchar(30)output,@vTempIDvarchar(30),@iLenint',@vIncrementout,@vTempID,@iLen
end
else
begin
select@vIncrement='001'
end
end
end
用户创建基础档案时可以按以下类似表格式创建:
createtableCustomerClass(
vID varchar(30)constraintpkCustomerClassprimarykey,1
相关文章推荐
- ERP基础档案管理模块中实现多级分类档案ID号自动编码技术(V1.0)
- ERP基础档案管理模块中实现多级分类档案级联删除技术
- 实现文本自动分类的基础-Term频率计算方法
- ecshop导航栏自动显示三级或多级子栏目,多级频道分类,并实现css高亮显示
- ecshop导航栏自动显示三级或多级子栏目,多级频道分类,并实现css高亮显示
- SSH实现进销存(ERP)项目之订单管理模块解析(附源码地址)
- swoole教程:1进程管理模块,2基础的通讯实现
- 自己动手做博客之日志管理-3.3 编码实现其他模块
- 12、ERP设计之 系统基础管理(BS)- 模块与菜单的关联
- 实现文本自动分类的基础----Term频率计算方法
- SAE 平台代码实现数据库定时备份以及同步到本地 2014/09/11 09:39:01 分类: 技术随笔 1人评论 次浏览 SAE 只允许用户通过phpMyAdmin管理远程数据库,
- 网上图书商城项目学习笔记-025分类管理模块分析及查询所有分类实现
- 实现文本自动分类的基础----Term频率计算方法
- javaWeb实战教程9-商品分类模块的编码实现
- 实现文本自动分类的基础--Term频率计算方法
- Python之Fabric模块 Fabric是基于Python实现的SSH命令行工具,简化了SSH的应用程序部署及系统管理任务,它提供了系统基础的操作组件,可以实现本地或远程shell命令,包括:
- JAVA_WEB项目(结合Servlet+jsp+ckEditor编辑器+jquery easyui技术)实现新闻发布管理系统第四篇:前台首页,新闻分类(体育新闻,科技新闻等),新闻列表分页的实现
- SPORE,一个很好的实现JS命名空间的管理,模块的定义,与自动加载依赖模块的脚本文件
- ecshop导航栏自动显示三级或多级子栏目,多级频道分类,并实现css高亮显示
- 基于MVC4+EF5+EasyUI技术实现通用权限管理系统(EpPlus、HignCharts、Reportviewer报表)