金蝶名称或代码在系统中已经被使用

更新时间:2022-11-09 07:58:52 阅读: 评论:0


2022年11月9日发
(作者:人文风光)



1、凭证过账时系统提示:名称或代码在系统中已经被使用

错误代码:3604(E14H)

Source :Microsoft OLE DB Provider for SQL Server

Detail :在结果列的列表中多次出现列名 'F8'

执行语句校正即可

update d t lcount=

from t_ItemDetail d,

(lect fdetailid,count(*) fcount from t_ItemDetailv where fitemid=-1 group by fdetailid ) v

where lid=lid

不同的账套,可能会提示不同的列名,如F1等,请变通执行

错误原因:核算项目横表t_itemdetail的核算项目类别数目和科目挂的核算项目数目不一致



2、在查询科目余额表并选择包括核算项目时,系统提示:

名称或代码在系统中已被使用

错误代码:3604(E14H)

Fdetail:列名'F3001'无效

补回此列,如果有数据发生还要补回数据

If Not Exists(Select from syscolumns c,sysobjects o

where = and ='F3001' and ='t_ItemDetail')

Begin

Alter Table t_ItemDetail Add F3001 int not null default(0)

Create Index ix_ItemDetail_3001 On t_ItemDetail(F3001)

END

如果还存在其他列名无效,参照修改上述SQL中的列名后,进行添加。

错误原因:在t_itemdetail表中缺少列F3001



3、录入凭证时提示错误代码:3604(E14H), Source :Microsoft OLE DB Provider for SQL Server Detail :分布式事务已完成。请将此会话登记到新事务或 NULL 事务中

此问题是由凭证最大内码号超过2147483647造成的,请参考以下SQL处理

lect distinct(fvoucherid) AS Foldid,IDENTITY(int,1,1) as fnewid into #tmpa from t_voucher----建立新旧凭证内码对应关系

update a t erid= from t_voucher a , #tmpa b where erid=-----用新内码替换旧内码

update a t erid= from t_voucherentry a , #tmpa b where erid=

update t_identity t fnext=(lect max(fvoucherid) from t_voucher)+1 where fname='t_voucher'





凭证无法过账、账薄报表无法查询、无法结转损益结转损益之后无法过帐或仍有余额,提示:在结果列中多次出现F1,名称或代码已存在等

一般是fdetailcount数目不对或者相同的核算项目组合出现重复,对于错误fdetailcount,首先要执行如下语句进行更新:

exec sp_cleanitemdetailv--横表生成纵表的存储结构

update a t lcount= from t_itemdetail a join (lect Fdetailid,count(Fitemid) Fcount from t_itemdetailv where fitemid<>0 group by Fdetailid) b on lid=lid--更新fdetailcount

exec sp_cleanitemdetailv--重新生成纵表 作了以上更新后发现表中还存在相同组合的重复记录,这是不允许的:

而我们只需要保留一个fdetailid即可,此时我们取最小的fdetailid,

执行如下语句更新科目表:

update t_account t

Fdetailid =(lect min(fdetailid) from t_itemdetail where fdetailid in (lect Fdetailid from t_i

temdetailv where fitemid=-1) and Fdetailcount=1 and F2=-1 ) where Fdetailid in (lect (fdetailid) from t_itemdetail where fdetailid in (lect Fdetailid from t_itemdetailv where fitemid=-1) and Fdetailcount=1 and F2=-1 )

同时我们还要删除核算项目横表中的多余记录,执行如下语句:

delete from t_itemdetail where Fdetailid in(lect (fdetailid) from t_itemdetail where fdetailid in (lect Fdetailid from t_itemdetailv where fitemid=-1) and Fdetailcount=1 and F2=-1 ) and Fdetailid <>(lect min(fdetailid) from t_itemdetail where fdetailid in (lect Fdetailid from t_itemdetailv where fitemid=-1)and Fdetailcount=1 and F2=-1 ) exec sp_cleanitemdetailv--重新生成纵表

另外还要查看各余额表中有没有非法的fdetailid,即不在核算项目横纵表中的,有的话则需要删除:

--查找科目余额表中有没有非法的fdetailid

lect * from t_balance where fdetailid not in (lect fdetailid from t_itemdetail)

--删除科目余额表中非法的fdetailid delete from t_balance where fdetailid not in (lect fdetailid from t_itemdetail)

同理进行以下操作 查找数量余额表中有没有非法的fdetailid

lect * from t_quantitybalance where fdetailid not in (lect fdetailid from t_itemdetail)

删除数量余额表中非法的fdetailid

delete from t_quantitybalance where fdetailid not in (lect fdetailid from t_itemdetail)

查找损益类科目实际发生额表中有没有非法的fdetailid

lect * from t_profitandloss where fdetailid not in (lect fdetailid from t_itemdetail)

删除损益类科目实际发生额表中有没有非法的fdetailid

delete from t_profitandloss where fdetailid not in (lect fdetailid from t_itemdetail)



根据F列进行变通,可以通过下面的语句查查

lect * from t_itemdetail where fdetailid in (lect fdetailid from t_itemdetailv where fitemid=-1)








本文发布于:2022-11-09 07:58:52,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/82/457740.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:detail
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图