近来比较忙,没有多少时间照看版块,都感觉有点对不住大家,今天稍微空闲了,于是静下心来与大家分享一下软件日常运用上遇见的问题!闲话少说了,我就用今天碰到的一起软件运行故障来与大家分享. 系统环境:Windows 2003 +SP2 SQL 2000 +SP4 U6 3.2 Plus1+最新补丁 用友部署:U6一体化应用 故障现象描述:库存管理中填制调拨单时出现错误提示:调拨单加载出错,稍后再试.初始化出现错误:无法获取单据模板号.如下图: 从报错提示上看,我们的首先反应是调拨单显示模板有问题了!先开库查看下模板库! 没有问题,模板库很正常!既然模板库正常,那只能说明问题出在其他地方了,跟踪一下吧,打开事件探查器,运行并跟踪,如下图: 筛选出与调拨单有关的语句,放到查询分析器中执行下. ! w6 d) ~2 Q' | 现在大家看出问题来了吧! Select max (ID) From TransM 过滤出最大调拨单ID号 19 Select *,'' as editprop From TransM Where ID= '19' Select *,'' as editprop From TransD Where ID = 19 这两句过滤出 Id=19 的调拨单明细 注意看:Vt_id=0 Select VT_TemplateMode From VoucherTemplates Where VT_ID='0' 过滤模板库中并没有Vt_id=0的模板! SELECT DISTINCT VT_ID,VT_Name FROM VoucherTemplates WHERE (VT_CardNumber = '0304') AND (VT_TemplateMode = 0) 正常的模板Id应该是89 哈哈,马上开库TransM(为什么开这个库?没有看见上面第一条语句......),看里面数据! 看见了吧,ID=19的单据里面,模板ID为0,显然是错误的了,改为正常的89(就是语句SELECT DISTINCT VT_ID,VT_Name FROM VoucherTemplates WHERE (VT_CardNumber = '0304') AND (VT_TemplateMode = 0) 过滤出来的数据). 回到操作界面,再点击调拨单,正常了,也能增加调拨单了! OK,问题这这样解决了,是不是很简单呀!在日常维护过程中,其实我们只要做到多观察,大胆推测,小心求证,充分利用SQL本身提供的事件探查器和查询分析器,大多数运行故障都能做到迎刃而解的! 抛砖引玉,希望更多的爱好者做出更多更好的案例! |