文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

金蝶K3新增物料

2023-01-31 05:31

关注
导帐过程,超复杂的SQL+详细的讲解,对了解K3的基础资料的数据结构有帮助

考虑到基础资料都有一定的共性,比如:都必须在t_Item表中有记录,ID都来源与t_Identity,上下级关系等等,为了减轻工作量,编写了如下的存储过程.

IF EXISTS (SELECT name 
FROM sysobjects 
WHERE name = N'CreateItem' 
AND type = 'P')
DROP PROCEDURE CreateItem
GO

CREATE PROCEDURE CreateItem 
@ItemClassID int, 
@Number varchar(50),
@Name varchar(50),
@ISDetail bit,
@SysLinkID int=null
AS
--检查核算项目类别ID的合法性,并获取核算项目的类别
if @ItemClassID<=0 or @ItemClassID is null
begin
RAISERROR ('核算项目类别ID不能为空', 16, 1)
return
end

Declare @SQLTable varchar(50),@ClassID int
Set @SQLTable=null
Set @ClassID=null

Select @SQLTable==FItemClassID
From t_ItemClass where FItemClassID=@ItemClassID

if @ClassID is null
begin
RAISERROR ('核算项目类别不存在', 16, 1)
return
end

--检查编码的合法性,并获取上级编码ID
If Exists(Select *From t_Item where FItemClassID=@ItemClassID and FNumber=@Number)
begin
RAISERROR ('编码重复,可能该核算项目已经存在', 16, 1)
return
end

Declare @ParentID varchar(20)
Declare @LastPointPos int
Set @LastPointPos=len(@Number)

while @LastPointPos>0 and substring(@)<>'.'
Set @LastPointPos=@LastPointPos-1

if @LastPointPos>0 Print 'ParentNumber:'+Substring(@)
if @LastPointPos>0
begin
Select @ParentID=null
Select @ParentID==FLevel From t_Item
where FNumber=Substring(@)
and FItemClassID=@ItemClassID
and FDetail=0
if @ParentID is null
begin
RAISERROR ('上级核算项目不存在或者不为明细', 16, 1)
return
end
Set @ShortNumber=substring(@(@Number)-@LastPointPos)
if @ShortNumber is null or len(@ShortNumber)=0
begin
RAISERROR ('编码不合规则,最后一级编码不存在', 16, 1)
return
end
end
else
Select @ParentID===@Number

--插入数据
begin transaction

Declare @ItemID int
Select @ItemID=FNext From t_Identity where FName='t_Item'
Update t_Identity Set FNext=@ItemID+1 where FName='t_Item'

Insert Into t_Item(FItemID,FItemClassID,FNumber,FParentID,FLevel,FDetail,Fname,FFullNumber,FShortNumber,FsysLinkID)
Values(@@@@@)

if @SQLTable is not null and @ISDetail=1
begin
Declare @SQL varchar(5000)
Set @SQL='Insert into '+@SQLTable
+'(FItemID,FNumber,FName,FShortNumber,FParentID) '
+'Select FItemID,FNumber,FName,FShortNumber,FParentID From t_Item where FitemClassID='
+str(@ItemClassID)
+' and FItemID='+str(@ItemID)
print @SQL
exec (@SQL)
end
commit
GO
--exec CreateItem 1,'0001.01.03','abcdef',1


这个存储过程完全把新增核算项目过程封装了,比如新增一个物料直接调用这个方法就可以建立这个物料资料,然后要添加辅助属性直接去更新t_ICItem这个表(视图)就OK了

 

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯