用友T3软件记帐时提示:运行时错误2147217873,违反了PRIMAY_KEY约束gl_mpostcond1中插入重复键。
[全站通告] 想快速节省您的时间并可接受付费的朋友,可扫右边二维码加博主微信-非诚勿扰!
今儿碰到网上的客户,她说12月补做了结转本年利润的凭证后,记账后,再去查询余额表的数据,余额是错的。
我心想可能是客户记错了,一般记完账数据才是准确的,跟客户解释一通,客户很强硬是数据错了,后面我重新取消记账再记账。
就提示这个 运行时错误2147217873,违反了PRIMAY_KEY约束gl_mpostcond1中插入重复键。
解决方法:
1、这个一般是数据库出错,处理方法是清空 gl_mpostcond1,进入sql管理器里,执行sql代码:delete gl_mpostcond1
清除后可以记帐,但是在反记后在去记帐还是报这样的错误。如何彻底解决该问题,找到演示帐套的存储过程 GL_P_JZFA所有任务-生成SQL脚本。
然后在出现问题的帐套找到这个存储过程,然后删除.找到刚才生成的脚本在当前的帐套年度生成下就可以了。
如果这样还不行。就把存储过程中GL_P的中带JZ的都删除。从999中生成脚本然后在执行,这样绝对可以解决。
2、或者执行脚本处理
SET QUOTED_IDENTIFIER OFF go SET ANSI_NULLS ON go ALTER Proc [dbo].[GL_P_JZA](@iPer tinyint = 11, @ccash tinyint =1, @tcond varchar(5000)= ”) AS SET NOCOUNT On declare @ss varchar(8000) declare @Checkflag varchar(20) declare @trnd bigint set @trnd=(select convert(bigint,rand()*100000000000)) declare @temptable varchar(50) declare @temptable2 varchar(50) set @temptable=’GL_jztmp’+ convert(varchar(30),@trnd) set @temptable2=’gl_bookB’+ convert(varchar(30),@trnd) set @Checkflag = (SELECT cvalue FROM AccInformation WHERE cSysID=’GL’ AND cName=’bNotCheckJz’) Delete From GL_mpostcond1 if @ccash=0 begin if @Checkflag = ‘False’ set @ss=’SELECT iperiod,isignseq,ino_id From gl_accvouch where ibook=0 and iperiod= ‘+convert(char,@iPer,0) +(case when @tcond=” then ” else ‘ and (‘ + @tcond + ‘)’ end)+’ and (not (ccheck is null) and iflag is null or ccheck is null and iflag=1) GROUP BY iperiod,isignseq,ino_id’ else set @ss=’SELECT iperiod,isignseq,ino_id From gl_accvouch where ibook=0 and iperiod= ‘+convert(char,@iPer,0) +(case when @tcond=” then ” else ‘ and (‘ + @tcond + ‘)’ end)+’ and (iflag is null or ccheck is null and iflag=1) GROUP BY iperiod,isignseq,ino_id’ Insert GL_mpostcond1 exec (@ss) End Else begin if not object_id(‘tempdb..’+@temptable) is null exec(‘drop table tempdb..’+ @temptable) if @Checkflag = ‘False’ set @ss=’SELECT isignseq,ino_id,1 as zt into tempdb..’+@temptable+’ FROM gl_accvouch inner join code ON gl_accvouch.ccode = code.ccode where ibook=0 and iperiod= ‘+convert(char,@iPer,0)+(case when @tcond=” then ” else ‘ and (‘ + @tcond + ‘)’ end) +’ and ((code.bbank ^ code.bcash) =1) and ((not (ccheck is null)) and (ccashier is null)) GROUP BY isignseq,ino_id Union SELECT isignseq,ino_id,0 as zt From gl_accvouch where ibook=0 and iperiod= ‘+convert(char,@iPer,0) +(case when @tcond=” then ” else ‘ and (‘ + @tcond + ‘)’ end)+’ and (not (ccheck is null) and iflag is null or ccheck is null and iflag=1) GROUP BY isignseq,ino_id’ else set @ss=’SELECT isignseq,ino_id,1 as zt into tempdb..’+@temptable+’ FROM gl_accvouch inner join code ON gl_accvouch.ccode = code.ccode where ibook=0 and iperiod= ‘+convert(char,@iPer,0)+(case when @tcond=” then ” else ‘ and (‘ + @tcond + ‘)’ end) +’ and ((code.bbank ^ code.bcash) =1) and (ccashier is null) GROUP BY isignseq,ino_id Union SELECT isignseq,ino_id,0 as zt From gl_accvouch where ibook=0 and iperiod= ‘+convert(char,@iPer,0) +(case when @tcond=” then ” else ‘ and (‘ + @tcond + ‘)’ end)+’ and (iflag is null or ccheck is null and iflag=1) GROUP BY isignseq,ino_id’ exec (@ss) exec(‘SELECT isignseq,ino_id,sum(zt) as zt1 into tempdb..’ + @temptable2 + ‘ from tempdb..’+@temptable+’ group by isignseq,ino_id’) set @ss=’select ‘+convert(char,@iPer,0)+’ as iperiod,isignseq,ino_id from tempdb..’ + @temptable2 + ‘ Where zt1 = 0 ‘+(case when @tcond=” then ” else ‘ and (‘ + @tcond + ‘)’ end) insert GL_mpostcond1 exec (@ss) if not object_id(‘tempdb..’+@temptable2) is null exec(‘drop table tempdb..’+ @temptable2) End go
3、操作完上面步骤,但因为刚刚的报错,导致记账状态一直存在,再去记账就会 出现单据任务异常,需要使用工具【清除异常任务及锁定】 清除一下
付费下载说明:里面有【清除异常任务及锁定】工具下载
给客户解决了问题,给予一点辛苦费,得到客户的肯定!
使用软件中有疑问,可以添加博主微信详细沟通-右上方扫一扫加好友