2014-01-05 23:38:31
一、原因分析及解决办法
这种情况一般主要是由于单据表体自定义项的数据类型不匹配导致的,也有可能是数据库相关的表或视图缺少和损坏导致的。我这里总结了三种常见的情况以及对应的解决办法,以供大家参考学习。
1、使用的自定义项名称一定不要和系统中的字段名称有重复。如下图中的件数,开单数量和开单金额均会导致单据列表打不开。把“开单数量”改成“开单数量1”,把“开单金额”改成“开单金额1”,把件数改为件数1 等,然后再打开相应的单据列表即可正常
2、如果确认自定义项名称没有问题的话,我们使用SQL数据库中的事件探查器来确认下是之前分析的哪一种原因造成的单据列表打不开问题。
找到Select Distinct '' as 'zz' …这条SQL执行语句,以及Select * From VouchList… 复制到查询分析器中,执行第一条语句:
列名‘cInvCName’无效,从语句中定位到该字段属于视图‘zpurRkdList’,一般报列名无效是由于表或视图中缺少该字段引起,
我们参照演示账套999修改下这张视图;打开查询分析器,选择UFDATA_999_2008数据库,打开视图,找到视图‘zpurRkdList’,右键在新窗口中编写对象脚本—更改,主窗口出现修改视图的语句,复制后粘贴到新的窗口,选择数据库UFDATA_001_2011执行即可。执行后进入软件打开采购入库单列表发现已经可以正常打开了,问题解决了。这种情况就属于相关联的表和视图有问题导致的。
3、下面我们看下第三种情况,自定义项数据类型不匹配的情况。
如果第一条Select Distinct '' as 'zz' …这条SQL语句执行出来的结果如下图:
将varchar值 '397WZ-578-0001'转换为数据类型为int的列时发生语法错误。通过软件确认后,是“新力编号”这个自定义项有问题。
通过之前跟踪的第二条语句,Select * From VouchList Where cVouchCode='24' order by iColPos可以确认‘新力编号’在VouchList表中,单据类型为cVouchCode='24'。在查询分析器中执行以下语句:
select ifieldtype, * from vouchlist Where cVouchCode='24' and citemname='新力编号'
查询后确认数据类型(ifieldtype)是9,而不是int类型(int类型编号是5)
确认问题原因后,执行以下语句:
update vouchlist set ifieldtype = 5 Where cVouchCode='24' and citemname='新力编号'
执行后再进入采购入库单列表,发现问题解决了,采购入库单列表可以正常打开了。
二、总结
这三种情况是我们平常在软件使用过程中比较常遇到的现象,这边总结出来供大家分享,可能还有其他的原因和情况,这就需要大家依靠平时的积累不断完善了,谢谢!