解决方案: |
分析过程: 经过查看您的数据,发现此数据本身存在很多异常记录,主要表现在,在以前年度的销售发票,在销售发票主表中存在异常,即没有制单人,审核人和复核人。经过电话确认,怀疑是由于没有正常年度结转造成的。可以用如下语句进行查询: select * from salebillvouch where cchecker is null and bfirst=1 另外,经过查看ap_detail表发现,存在异常数据,表现在,可以用如下语句查询出这些在ap_detail中的异常数据: select * from ap_detail where dvouchdate<='2001-12-31'or cvouchid=null 例如: 158115 6 1899-12-30 00:00:00.000 2005-06-16 00:00:00.000 158116 6 1899-12-30 00:00:00.000 2005-06-16 00:00:00.000 158119 6 1899-12-30 00:00:00.000 2005-06-16 00:00:00.000 其中,cvouchtype,cvoustype,cvouchid都是空值。这是很不正常的。 解决办法: 问题1,没有发现所描述的错误。请您将用户处出现此错误的详细操作步骤,进行描述; 问题2,通过如下语句更新后,解决。是由于以前年度的销售发票,在销售发票主表中存在异常,即没有制单人,审核人和复核人。经过电话确认,怀疑是由于没有正常年度结转造成的。 update salebillvouch set cchecker='demo',cverifier='demo',cmaker='demo' where cchecker is null and bfirst=1 问题3,也没有发现此问题。 问题4,无法处理成0,主要是由于在预收款中的收款单200,红字付款单200,是同一个方向的,都是客户给我们的,所以不能处理成零。 问题5,经过反复验证,不能确定,这种异常数据是怎样产生的。只能通过如下的判断, --由于 select cCancelNo,sum(idamount),sum(icamount),sum(idamount)-sum(icamount) from ap_detail where cProcStyle in ('9k') group by cCancelNo having sum(idamount)-sum(icamount)<>0 --所以 delete from ap_detail where dvouchdate<='2001-12-31'or cvouchid=null or cvouchid='' 综上所述,对此数据通过如下两个脚本进行调整: update salebillvouch set cchecker='demo',cverifier='demo',cmaker='demo' where cchecker is null and bfirst=1 delete from ap_detail where dvouchdate<='2001-12-31'or cvouchid=null or cvouchid='' |