ERP基础档案管理模块中实现多级分类档案ID号自动编码技术(V1.0)

erp|编码

   

ERP基础档案管理模块中实现多级分类档案ID号自动编码技术(V1.0)

 

    本存储过程实现了多级分类档案ID号自动编码技术,本版本(V1.0)现在只实现每级3位的编码,

本版本的特点是:

n          可以根据不同的数据库表产生不同的编码,达到通用化

n          调用时通过指定iIsSubNode要产生的节点编码是否是子结点还是兄弟节点来生成对应编码

进行调用本存储过程时需要注意的是需要传递节点的层次(或是叫节点的深度)

另外下一个版本(V2.0)将根据用户自定义每级长度来实现更灵活的自动编码技术。

 

CREATE procedure prcIDAutoGen

@vSourceID varchar(30),

@iDepth int,

@iIsSubNode int,

@Table varchar(20),

@vIncrement varchar(30) output

as

begin

declare @iLen int

declare @vTempID varchar(30)

declare @SQLString nvarchar(500)

if @iIsSubNode =1

begin

 set @iDepth=@iDepth+1

 set @iLen=@iDepth*3

 set @SQLString=N'select vID from '+@Table +' where vID = '''+ltrim(rtrim(@vSourceID))+''''

 exec(@SQLString)

 if @@rowcount > 0

 begin

  select @vSourceID as vID into #t

  set @SQLString=N'insert #t select vID from '+@Table +' where vParentID in (select vID from #t)  and vID not in (select vID from #t) and iDepth=@iDepth'

  exec sp_executesql @SQLString,N'@iDepth int',@iDepth

  if @@rowcount > 0

  begin

   set @SQLString=N'select    @vTempID =isnull(max(vID),''0'') from #t'

   exec sp_executesql @SQLString,N'@vTempID varchar(30) output',@vTempID  output      

   set @SQLString='select @vIncrement=right(''000''+cast((cast(substring(@vTempID,1,@iLen) as decimal(30,0))+1)as varchar),@iLen)'

   exec sp_executesql @SQLString,N'@vIncrement varchar(30) output,@vTempID varchar(30),@iLen int',@vIncrement out,@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'select vID from '+@Table +' where vID = '''+ltrim(rtrim(@vSourceID))+''''

 exec(@SQLString)

 if @@rowcount > 0

 begin

   set @SQLString=N'select  @vTempID =isnull(max(vID),''0'') from '+@Table+' where vID in (select vID from '+@Table+' where iDepth=@iDepth)'

   exec sp_executesql @SQLString,N'@vTempID varchar(30) output,@iDepth int',@vTempID  output,@iDepth    

   set @SQLString='select @vIncrement=right(''000''+cast((cast(substring(@vTempID,1,@iLen) as decimal(30,0))+1)as varchar),@iLen)'

   exec sp_executesql @SQLString,N'@vIncrement varchar(30) output,@vTempID varchar(30),@iLen int',@vIncrement out,@vTempID,@iLen

 end

 else

 begin

   select @vIncrement='001'

 end

end

end

 

用户创建基础档案时可以按以下类似表格式创建:

create table CustomerClass(

vID    varchar(30) constraint pkCustomerClass primary key ,

vCustomerClassName varchar(40) NOT NULL,

vRemarks         varchar(80) NULL,

vParentID varchar(30) NULL,

iDepth       Int NOT NULL

)

 

另外用户如果要在SQL查询分析器进行测试时可用如下方法进行测试:

declare @value varchar(30)

exec prcIDAutoGen '',0,1,'CustomerClass',@vIncrement=@value output

select @value

 

insert customerclass values('001','a','a',null,1)

 

declare @value varchar(30)

exec prcIDAutoGen '001',1,1,'CustomerClass',@vIncrement=@value output

select @value

 

insert customerclass values('001001','b','b','001',2)

 

declare @value varchar(30)

exec prcIDAutoGen '001',1,1,'CustomerClass',@vIncrement=@value output

select @value

 

declare @value varchar(30)

exec prcIDAutoGen '001001',2,0,'CustomerClass',@vIncrement=@value output

select @value

 

依次类推,在此不举(注意执行时三个语句一起执行)

 

(完)

时间: 2024-09-12 17:36:48

ERP基础档案管理模块中实现多级分类档案ID号自动编码技术(V1.0)的相关文章

ERP基础档案管理模块中实现多级分类档案级联删除技术

erp ERP基础档案管理模块中实现多级分类档案级联删除技术   本存储过程实现了多级分类档案级联删除技术 本存储过程的特点是: n          可以在不同的数据库表上应用此存储过程,以达到通用化 n          同时用户也可以根据不同的表结构,选择相应版本的的存储过程,在这里共有三个版本可供用户选择,分别对应表结构中有无节点的深度字段等情况 进行调用本存储过程时只需要传递节点号及表名即可,但是用户选择相应版本进行应用时,需要针对实际情况作出选择 版本一 CREATE procedu

在附件管理模块中增加对FTP 上传和预览的支持

在之前介绍的附件管理模块里面<Winform开发框架之通用附件管理模块>以及<Winform开发框架之附件管理应用>,介绍了附件的管理功能,通过对数据库记录的处理和文件的管理,实现了附件文件和记录的整合管理,可以运用在单机版的WInform框架,也可以使用在分布式的混合式开发框架中,随着一些开发场景的丰富,我们需要以FTP方式上传文件,因此对这个附件管理模块进行扩展,以便适合更多的实际项目需求. 1.FTP上传.HTTP文件预览实现思路 我们设想的附件管理,底层都是需要在Winfo

进销存 库存-正在做进销存管理,库存管理模块中,货架信息除了增删改查之外还需要什么方法?

问题描述 正在做进销存管理,库存管理模块中,货架信息除了增删改查之外还需要什么方法? 正在做进销存管理,库存管理模块中,货架信息除了增删改查之外还需要什么方法? 解决方案 库存盘点,对库存进行人工审计之后与系统中的数量进行比对,可以发现是否存在不一致,或者发现库存中有货品损坏则,应该进行一个损益,进行金额的损益计算.同时将数据库中的库存数量进行更新.大概就这些吧,我自己之前也做过.如果还想做得更加详细的话,需要到超市进行实际的需求采集 解决方案二: 增删改查 这就已经包扩了所有,任何项目的模块也

Dedecms中获取登录用户名与ID号实例

获取当前登录用户名 1.include/arc.archives.class.php在第9行下面加入下面这段代码:  代码如下 复制代码 require_once("../member/config.php"); 2.模板文件,就可以用下面的代码,来获取到当前用户了:  代码如下 复制代码 {dede:php} if($cfg_ml->IsLogin()){ echo $cfg_ml->M_UserName; }{/dede:php} {dede:php}if($cfg_m

Winform开发框架中的内容及文档管理模块功能介绍

在开发项目的时候,我们有一些场景需要编辑一些HTML文档,作为内容发布系统的一部分,有时候也需要对一些文档如WORD文档进行编辑管理,这样需要我们对这些内容及文档进行合适的管理.本文主要介绍在WInform项目中利用ZetaHtmlEditControl进行HTML内容管理,以及利用TX TextControl控件进行WORD文档管理,这两方面都是我们一般进行内容和文档管理所必须的. 1.内容及文档管理模块功能介绍 整个模块,支持WInform框架和混合式开发框架两种模式,都是基于WInform

档案管理遭遇云计算和大数据

档案管理遭遇云计算和大数据 梁启敏 刘晖 刘怡君 应用云计算和大数据的思想方法,对档案管理带来的历史性变革进行分析,档案云的建设与大数据的结合,催生的爆炸性数据.阐述在伴随云计算和大数据的思想大潮中,给档案管理带来的影响以及挑战,档案管理在大背景下会发生的蜕变. 档案管理遭遇云计算和大数据

php-遍历数组,根据mark值的不同,使数据显示在不同的模块中

问题描述 遍历数组,根据mark值的不同,使数据显示在不同的模块中 有这样一个数组$jobArr $jobArr=array( 1 => array( 0 => array( 'name' => '产品经理1', 'desc' => '广州' , 'mark' => 'group:1' ), 1 => array ( 'name' => '产品经理1', 'desc' => '广州' , 'mark' => 'group:1'), 2 => ar

用C#获取无限多级分类的实现

所做的小项目中需要多级分类, 试着学习实现多级分类.由于对存储过程本身并不大熟悉,也不想借助于treeview,于是递归逻辑采用C#实现,配合数数据库完成了多级分类的获取方法.增加分类节点应该说是比较简单的,此文暂略. 数据库表:CategoryInfo 字段名           类型 ciID                  int                        //记录序号,自增量 ciName         nvarchar(20)       //分类名 ciPar

WordPress中获取指定分类及其子分类下的文章数目_php实例

获取特定分类文章数  有时候我们想获取某个分类(category)下的文章数目,以便在博客的某个地方显示出来.下面就提供几个获取特定分类的文章数的方法,你可以根据个人喜好选择: 方法一:      将以下PHP代码放置在主题目录下的functions.php中: function wt_get_category_count($input = '') { global $wpdb; if($input == '') { $category = get_the_category(); return