调拨单无法选择仓库原因一析cc133engineer2010/07/18问题描述890,帐套主管新增调拨单,参照出库仓库时无法过滤到任何仓库信息,手工录入后被自动清空:排查基础档案疑点首先确认是否存在档案信息,发现已经存在,说明基础档案正常:排查环境疑点另外确认下环境,用户处刚打完补丁,也升级过脚本,检查下服务器仍存在此情况,用户处刚打完补丁是不是之前的升级不够完整,再次使用补丁工具做下升级看看:升级后续确认升级成功后,排除脚本执行错误,再次进入调拨单界面操作,发现仍然无法参照到,会是什么原因呢?后台直接检查出错记录参照涉及到直接过滤基础档案并显示的实现,是不是在过滤条件或者显示视图或者显示栏目缺失导致不能正常显示?我们从后台的过滤执行语句来进行分析确认下。数据跟踪确认显示结果EXECsp_executesqlN'SELECTTOP100cast(0asbit)asbRefSelectColumn,[WarehouseEntity_Warehouse].[cWhCode]ascWhCode,[WarehouseEntity_Warehouse].[cWhName]ascWhName,[WarehouseEntity_Warehouse].[cDepCode]ascDepCode,[WarehouseEntity_Department].[cDepName]ascDepName,[WarehouseEntity_Warehouse].[cWhMemo]ascWhMemoFROM[Warehouse]AS[WarehouseEntity_Warehouse]LEFTJOIN[Department]AS[WarehouseEntity_Department]ON[WarehouseEntity_Department].[cDepCode]=[WarehouseEntity_Warehouse].[cDepCode]WHERE1=1and([WarehouseEntity_Warehouse].[cWhMemo]=N''11'')OrderbycWhCodeASC,cWhMemoASC',N'@daesyslogintimenvarchar(4000),@daesysloginlanguagenvarchar(4000),@daesysloginernvarchar(4000)',@daesyslogintime=N'2009-11-2000:00:00',@daesysloginlanguage=N'zh-CN',@daesysloginer=N'demo‘执行该后台过滤过程也是无法出现任何过滤结果。分析报错检查报错的核心是:WHERE1=1and([WarehouseEntity_Warehouse].[cWhMemo]=N''11'')分析该条件,确认where的判断条件字段信息:Warehouse..cWhMemo(U861)备注,该字段为仓库备注,我们并没有在参照时设置条件,该条件是怎么来的?结合前台继续分析该条件在前台是否做过设置,仔细来检查下,正常参照的条件里与“过滤”“选项”的设置有关。检查过滤里正常,但是选项里被预置了条件:([备注]=N‘11’)。疑点排查解决根据选项的预置条件和后台的过滤判断条件比较,二处条件相同,去掉选项里该条件后确认下,正常!检查下后台的判断条件,不再出现之前的where判断条件,原因确定,问题解决!!问题总结1.涉及到基础档案的错误的先从基础信息设置排查,避免出现档案不完整情况。2.参照显示问题环境会有一定影响,补丁及帐套注意关注。3.思路暂时没有突破的情况下建议在后台进行跟踪确认,可以更快捷的定位到问题点,辨析出问题的难易度,提高处理效率。4.参照里设置的过滤条件是按帐套保存,与客户端及用户无关,在客户端设置后即可生效,影响过滤结果。5.遇到此类问题不需直接定位数据方面错误,可以从本案例的错误点进行排查,避免延误处理时间。希望对大家遇到此类问题时能拓展下思路。