问题现象:
至此基本可以判断是这个表出了问题,我们来验证下:
T3 标准版10.8Plus2,部分单据记账时提示单据记账失败,如下图:
![T3单据记账失败 - 似水无痕 - 用友软件 T3单据记账失败 - 似水无痕 - 用友软件](http://img0.ph.126.net/rEDWXllg37SC8-UDXpY87A==/6619541585304642009.png)
单据列表中有此单据,但是双击到单据界面,却是一片空白:
![T3单据记账失败 - 似水无痕 - 用友软件 T3单据记账失败 - 似水无痕 - 用友软件](http://img2.ph.126.net/i3tRAgCklmkZXq7CodPBVg==/6608450811515627804.png)
解决过程:
后台数据库看下这张单据:
记录与正常单据对比,没有发现异常情况:select * from rdrecord where ccode='0000000969'
select * from rdrecords where id in(select id from rdrecord where ccode='0000000969')
![T3单据记账失败 - 似水无痕 - 用友软件 T3单据记账失败 - 似水无痕 - 用友软件](http://img1.ph.126.net/5IM3KeJT4CnS5X6DE7NgKw==/6619124870397715999.png)
这个时候只好请出SQL事件探查器(SQL Profiler),我们来跟踪下单据记账的后台操作:
将跟踪到的语句逐一 运行验证,直到验证到以下语句(注意下图选定的语句):
![T3单据记账失败 - 似水无痕 - 用友软件 T3单据记账失败 - 似水无痕 - 用友软件](http://img1.ph.126.net/89y_D8d0sg1Iy_1ZbYwpFg==/6619141363072132513.png)
就是
select * from rdrecord where ID=15122 这一句
,在SQL查询分析器中运行后,却没有得到任何结果
我们来看如下两个语句:
如上两个语句,查询结果应该是一样的,但是奇怪的是第二行语句(也就是跟踪出来的语句)却没查到任何记录select * from rdrecord where ccode='0000000969'
select * from rdrecord where ID=15122
![T3单据记账失败 - 似水无痕 - 用友软件 T3单据记账失败 - 似水无痕 - 用友软件](http://img0.ph.126.net/dSbWObsVmES_ib9VCH7HVg==/6619289797141882314.png)
结果如下:此表有很多索引错误,我高亮选中的那个ID=15122正是刚才查询不到的IDdbcc checktable(rdrecord)
![T3单据记账失败 - 似水无痕 - 用友软件 T3单据记账失败 - 似水无痕 - 用友软件](http://img1.ph.126.net/--LQDyq43YVF98ikuEDHRg==/6608683907980714756.png)
对RdRecord表执行重建索引命令:
DBCC DBREINDEX(rdrecord,'')
再次执行
dbcc checktable(rdrecord)发现没有错误了,进入软件再对单据执行记账,OK!