问题现象: |
数量*单价 有些材料的金额是负数,有些材料则是金额比实际金额数减少。 打补丁后述:数量*单价 负数已经改正为正数,但大多数材料金额依然少于实际金额。 用SQL事件探查器跟踪,但因为没有具体表,所以无法修改数据库。如何解决? |
问题原因: |
材料出库单列表是从视图中读取数据的,查询语句如下: select ...『查询项』... From RecordOutList Where cVouchType='11' order by ...,但视图中不物理存放数据,其数据来源于收发记录主子表rdrecord/s,查询语句如下: select ...『查询项』... from rdrecord a join rdrecords b on a.id=b.id where a.cvouchtype='11' order by ...。 目前问题是在材料出库单上部分记录【金额 <> 数量×单价】,即数据表rdrecords中【iprice<>iquantity×iunitcost】,即数据性错误,补丁无法调整的,需人为手工调整数据。 |
解决方案: |
解决办法参考如下:
1、首先备份数据;
2、查看是否存在错误记录,查询语句如下:
select a.id,abs(b.iprice-b.iquantity*b.iunitcost) as 金额与数量单价积之间差异
from rdrecord a join rdrecords b on a.id=b.id
where a.cvouchtype='11'
and abs(b.iprice-b.iquantity*b.iunitcost)>0.001
(注:条件中的0.001可根据需要改变,代表数据精度,越小表示对数据检查越严格、精确)
3、如果通过步骤2检查存在错误数据记录,可通过如下语句调平数据关系:
update rdrecords
set iprice=iquantitiy*iunitcost
(注:此语句对整个rdrecords数据关系进行调平处理,也可根据实际需要添加where范围条件) |
相关补丁: |
|
版本: |
其他 |
模块: |
存货核算 |
产品: |
U8存货核算 |
问题名称: |
材料出庫单列表上金额不等于数量乘以单价 |
最后更新: |
2005-06-28 00:00:00 |