概述
最近在开发Folder的Form,不知道为什么,在文件夹修改,再做保存之后,文件夹的包括查询的勾勾老是自动勾上。导致用户用对应的文件夹,第二次打开再做查询的时候,一笔记录都查询不到。
解决方法1:
将对应Block的Pre-query的代码:APP_FOLDER.EVENT('PRE-QUERY');注释掉即可。
但是注销掉之后,会有问题:当Top3位做排序的时候,会误将所有的数据都查询出来。
具体原因我觉得还是需要检查。
2013-8-26
最终的解决方案:
为什么会出现这种问题?
其实不算问题来的。因为我们默认启用了文件夹的包括查询的功能。所以,当你对文件夹做了保存之后,文件夹实际上会自动处理:抓取当次的查询的条件,然后将对应Folder的DEFAULT WHERE的值更新(为当此的查询条件),自动勾上"包括查询"。
这里还要说明一点:对于Oracle的这点自动处理要搞清楚逻辑。正常的开发逻辑应该是我要包括查询,才勾上包括查询的勾勾,WHERE条件才需要压上值才对。现在是反过来了,当执行查询之后,保存文件夹,文件夹处理过程会自动将查询条件填充到文件夹设定里面,然后再"自动"勾上包括查询。
还有一点,需要了解的是,文件夹的包括查询的勾勾并不是数据库栏位。它是和DEFAULTWHERE(FND_FOLDERS.WHERE_CLAUSE)的值有关的。只要DEFAULT WHERE有值,包括查询就会自动勾上。如果取消包括查询的勾,那对应Folder的WHERE条件会自动清空。
所以,得出问题的最终解决方案:
在定义Folder的时候,将对应的功能包括查询的功能直接Disable掉就可以了。
app_folder.define_folder_block(
'XYG_JBW_OPER_SCHEDULE_SOURCE_V',-- Data Block's Data Source Name
'MOVE_SOURCE', -- Folder Block
'MOVE_SOURCE_PROMPT', -- Prompt Block
'SOURCE_STACK', -- Stacked Canvas (Folder Canvas)
'MAIN',-- Window
'AUTOQUERY QUERY', ---所有的Form文件夹应该都要默认禁用掉的:"自动查询"和"包括查询"的功能
'MOVE_RECEIVE_TAB',
'SOURCE_STACK_FIEXD');
效果如下:
------------2013.10.17问题跟踪
发现虽然这个包括查询的勾虽然是失效了(灰色),但是,貌似在保存文件夹的时候,它还是会自动保存Form最后的查询的语句。
所以,这个问题还是没得到根本的解决。
最后用了一种不是很好的办法,就是直接修改标准的文件夹处理包:FND_APPFLDR
在塞数据的时候,将where_clause强制塞空值就行(需要修改新增和更新的处理过程)。
因为我一直觉得Oracle文件夹的这个功能真的是很废。。。没什么实用价值。
事实上也了解到,这个功能几乎不会被使用。反而会导致N多的问题。
最后
以上就是执着枕头为你收集整理的关于文件夹的Form[包括查询]自动勾上的问题的全部内容,希望文章能够帮你解决关于文件夹的Form[包括查询]自动勾上的问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复