【库存云巡检】-【检测项名称为】:检查最近一次关账的库存余额是否正确。巡检结果是:出错结果详情如下:System.Data.SqlTypes.SqlTypeException: SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间
堆栈信息如下:
2024-04-08 15:15:31,083 [338] ERROR - HS - SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。
System.Data.SqlTypes.SqlTypeException: SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。
在 System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
在 System.Data.Common.DbDataAdapter.UpdatedRowStatus(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
在 System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
在 System.Data.Common.DbDataAdapter.UpdateFromDataTable(DataTable dataTable, DataTableMapping tableMapping)
在 System.Data.Common.DbDataAdapter.Update(DataTable dataTable)
在 Kingdee.BOS.App.Data.Sql.SqlDatabase.InsertWihtMultiRowsNoTrans(DataTable table, SqlCommand cmd)
在 Kingdee.BOS.App.Data.Sql.SqlDatabase.CopyDataToDestinationNoTrans(DbCommand cmd, DataTable table)
在 Kingdee.BOS.App.Data.Sql.SqlDatabase.BulkInsertsNoTrans(DbCommand cmd, DataTable dt)
在 Kingdee.BOS.App.Data.Sql.SqlDatabase.BulkCopyNoTransaction(DbCommand cmd, DataTable dt)
在 Kingdee.BOS.App.Data.DBUtils.BulkCopyNoTransaction(Context ctx, String CreateSql, DataTable dt)
在 Kingdee.BOS.App.Data.DBUtils.BulkCopyNoTransaction(Context ctx, DataTable dt)
在 Kingdee.K3.FIN.HS.PAT.App.Core.DAL.PatCheckResultEntity.BatchAdd(Context ctx, List`1 chkResulList)
在 Kingdee.K3.FIN.HS.PAT.App.Core.Patrol.MainFlow.BatchAdd(Context ctx, PatCheckResultDal resDal, PatCheckResultHead headDal, PatCheckResultEntity enDal, PatrolCommonResult item, PatCheckResult PatCheckResultModel)
处理方案:
报这种错误可能是 库存余额表存在重复库存维度数据导致,需要把重复记录合并,同时删除其他重复记录,保留一条。
查找重复记录:
select FCOMBINEID,FPRODUCEDATE,FEXPIRYDATE,FMTONO,FPROJECTNO,FBALDATE from T_STK_INVBAL group by FCOMBINEID,FPRODUCEDATE,FEXPIRYDATE,FMTONO,FPROJECTNO,FBALDATE having count(1)>1
合并重复记录的各项数量值,累加到一起:
select *,FBASEBEGQTY '期初数量(基本单位)',FBASERECEIVEQTY '收入数量(基本单位)',FBASESENDQTY '发出数量(基本单位)',FBASEENDQTY '期末数量(基本单位)', FSECBEGQTY '期初数量(辅单位)',FSECRECEIVEQTY '收入数量(辅单位)',FSECSENDQTY '发出数量(辅单位)',FSECENDQTY '期末数量(辅单位)' from T_STK_INVBAL where FCOMBINEID='' and FBALDATE=''
保留合并后的记录,其他重复记录删除:
delete from T_STK_INVBAL where FID in(XXXX)