【现象】: 在财务期末结账时提示: 错误代码:3631(E2FH) Source :Microsoft OLE DB Provider for SQL Server Detail :违反了 PRIMARY KEY 约束 'pk_Balance'。 不能在对象 't_Balance' 中插入重复键。 能继续反结帐到以前期间,反结后也能继续结帐到本期,但从本期向下一期结账时系统仍然报以上的错误。
【分析】: 1、从提示的Detail可以看出,这是因为账套中存在错误的数据,从而导致如果结账的话将在数据库中产生重复的记录。 2、这种情况基本上都发生在余额表中保存了当前期间以后的数据。造成产生这样的数据的可能原因是曾经进行过期末结账,但是在结账过程中遇到意外错误造成程序无法将数据还原。 3、账套结账的原理:根据当期期末数据,形成下期的期初数据。那么在进行期末结账之前,在余额表中不应该存在当前期间以后的数据。 【处理】: 这种情况下的错误,一般需要使用SQL语句来处理。建议在备份账套的情况下,在查询分析器中选择正确的账套数据库实体后,执行以下SQL再结账。 go declare @Fyear int,@Fperiod int select @Fyear=fvalue from t_systemprofile where fkey='currentyear' and fcategory='gl' select @Fperiod=fvalue from t_systemprofile where fkey='currentperiod' and fcategory='gl' delete from t_balance where fyear*100+fperiod>@Fyear*100+@Fperiod delete from t_profitandloss where fyear*100+fperiod>@Fyear*100+@Fperiod delete from t_quantitybalance where fyear*100+fperiod>@Fyear*100+@Fperiod go 注:这种错误的处理,同样适用于KIS商贸版、K/3账套。
|