Form中Block的重新查询
2011-09-05 08:59
190 查看
Form中某些按钮可能调用了Package对表中某些字段进行更新,但是数据库中字段的修改不会马上反映到form的界面上,所以要进行重新查询,但是用户可能使用了查询窗口进行查询之后然后再点击按钮动作,如果简单的使用execute_query进行查询的话那么就会把原来的查询条件冲掉。所以这里写了一个公用的包进行查询:
--重新execute_query的数据块为:
程序首先保存当前的block,record以及Item使得在执行完之后光标依然停留在原位置而不会跳来挑去。之后判断当前所在的Block是否和参数传进来的P_Block一致,如果不一致,那么就go到P_Block上,然后获取该Block的Last_Query,由于可能查询带有Order By,所以需要判断是否带有Order By来决定截取的最终位置。取得了where条件之后,通过使用set_block_property(p_block_name,default_where,l_where_clause)以及execute_query对block进行查询,在这之前需要先保存原来的default
where,在查询之后将default_where设置为默认的。最后讲光标定位到原位置。
调用的时候输入Block Name,便可以截取到Block的查询条件查询该Block。
程序首先保存当前的block,record以及Item使得在执行完之后光标依然停留在原位置而不会跳来挑去。之后判断当前所在的Block是否和参数传进来的P_Block一致,如果不一致,那么就go到P_Block上,然后获取该Block的Last_Query,由于可能查询带有Order By,所以需要判断是否带有Order By来决定截取的最终位置。取得了where条件之后,通过使用set_block_property(p_block_name,default_where,l_where_clause)以及execute_query对block进行查询,在这之前需要先保存原来的default
where,在查询之后将default_where设置为默认的。最后讲光标定位到原位置。
调用的时候输入Block Name,便可以截取到Block的查询条件查询该Block。
程序首先保存当前的block,record以及Item使得在执行完之后光标依然停留在原位置而不会跳来挑去。之后判断当前所在的Block是否和参数传进来的P_Block一致,如果不一致,那么就go到P_Block上,然后获取该Block的Last_Query,由于可能查询带有Order By,所以需要判断是否带有Order By来决定截取的最终位置。取得了where条件之后,通过使用set_block_property(p_block_name,default_where,l_where_clause)以及execute_query对block进行查询,在这之前需要先保存原来的default
where,在查询之后将default_where设置为默认的。最后讲光标定位到原位置。
调用的时候输入Block Name,便可以截取到Block的查询条件查询该Block。
程序首先保存当前的block,record以及Item使得在执行完之后光标依然停留在原位置而不会跳来挑去。之后判断当前所在的Block是否和参数传进来的P_Block一致,如果不一致,那么就go到P_Block上,然后获取该Block的Last_Query,由于可能查询带有Order By,所以需要判断是否带有Order By来决定截取的最终位置。取得了where条件之后,通过使用set_block_property(p_block_name,default_where,l_where_clause)以及execute_query对block进行查询,在这之前需要先保存原来的default
where,在查询之后将default_where设置为默认的。最后讲光标定位到原位置。
调用的时候输入Block Name,便可以截取到Block的查询条件查询该Block。
--重新execute_query的数据块为:
PROCEDURE query_block(p_block_name varchar2) is l_cursor_block varchar2(50); l_cursor_record NUMBER; l_cursor_item VARCHAR2(50); l_trigger_record NUMBER; l_default_where VARCHAR2(1000); l_last_query VARCHAR2(2000); l_where_anchor NUMBER; l_order_anchor NUMBER; l_where_clause VARCHAR2(1000); l_message_level NUMBER; BEGIN l_cursor_item := name_in('SYSTEM.CURSOR_ITEM'); l_cursor_record := name_in('SYSTEM.CURSOR_RECORD'); l_cursor_block := name_in('SYSTEM.CURSOR_BLOCK'); l_trigger_record := l_cursor_record; l_message_level := :system.message_level; --如果光标不在目标块。则go_block到目标块 IF l_cursor_block <> p_block_name THEN --光标定位 l_trigger_record := get_block_property(p_block_name, CURRENT_RECORD); go_block(p_block_name); IF name_in('SYSTEM.CURSOR_BLOCK') <> p_block_name THEN fnd_message.debug('DEVELOPER ERROR :To SELECT records ' || 'in another block, you must be able to navigate'); RAISE FORM_TRIGGER_FAILURE; END IF; --IF name_in('SYSTEM.CURSOR_BLOCK') <> p_block_name THEN END IF;--IF l_cursor_block <> p_block_name THEN l_default_where := get_block_property(p_block_name, DEFAULT_WHERE);--数据块的默认查询条件 l_last_query := get_block_property(p_block_name, LAST_QUERY);--最后查询语句 -- 检查是否有Order By语句 IF instr(upper(l_last_query), 'ORDER BY') = 0 THEN l_order_anchor := length(l_last_query); ELSE l_order_anchor := instr(upper(l_last_query), 'ORDER BY')-1; END IF; --IF instr(upper(l_last_query), 'ORDER BY') = 0 THEN IF instr(upper(l_last_query), 'WHERE') = 0 THEN l_where_anchor := l_order_anchor - 5; ELSE l_where_anchor := instr(upper(l_last_query), 'WHERE') + 1; END IF; --IF instr(upper(l_last_query), 'WHERE') = 0 THEN --得到上一次的查询条件 l_where_clause := substr(l_last_query, l_where_anchor + 6, l_order_anchor - l_where_anchor - 5); --设置数据块得查询条件 set_block_property(p_block_name, default_where, l_where_clause); --设置消息级别 :system.message_level := 25; --执行查询 execute_query; :system.message_level := l_message_level; set_block_property(p_block_name, default_where, l_default_where); go_block(p_block_name); go_record(l_trigger_record); fnd_message.debug('p_block_name'||p_block_name); fnd_message.debug('l_trigger_record'||l_trigger_record); fnd_message.debug('l_cursor_block'||l_cursor_block); fnd_message.debug('l_cursor_record'||l_cursor_record); fnd_message.debug('l_cursor_item'||l_cursor_item); go_block(l_cursor_block); go_record(l_cursor_record); go_item(l_cursor_item); END query_block;
程序首先保存当前的block,record以及Item使得在执行完之后光标依然停留在原位置而不会跳来挑去。之后判断当前所在的Block是否和参数传进来的P_Block一致,如果不一致,那么就go到P_Block上,然后获取该Block的Last_Query,由于可能查询带有Order By,所以需要判断是否带有Order By来决定截取的最终位置。取得了where条件之后,通过使用set_block_property(p_block_name,default_where,l_where_clause)以及execute_query对block进行查询,在这之前需要先保存原来的default
where,在查询之后将default_where设置为默认的。最后讲光标定位到原位置。
调用的时候输入Block Name,便可以截取到Block的查询条件查询该Block。
程序首先保存当前的block,record以及Item使得在执行完之后光标依然停留在原位置而不会跳来挑去。之后判断当前所在的Block是否和参数传进来的P_Block一致,如果不一致,那么就go到P_Block上,然后获取该Block的Last_Query,由于可能查询带有Order By,所以需要判断是否带有Order By来决定截取的最终位置。取得了where条件之后,通过使用set_block_property(p_block_name,default_where,l_where_clause)以及execute_query对block进行查询,在这之前需要先保存原来的default
where,在查询之后将default_where设置为默认的。最后讲光标定位到原位置。
调用的时候输入Block Name,便可以截取到Block的查询条件查询该Block。
程序首先保存当前的block,record以及Item使得在执行完之后光标依然停留在原位置而不会跳来挑去。之后判断当前所在的Block是否和参数传进来的P_Block一致,如果不一致,那么就go到P_Block上,然后获取该Block的Last_Query,由于可能查询带有Order By,所以需要判断是否带有Order By来决定截取的最终位置。取得了where条件之后,通过使用set_block_property(p_block_name,default_where,l_where_clause)以及execute_query对block进行查询,在这之前需要先保存原来的default
where,在查询之后将default_where设置为默认的。最后讲光标定位到原位置。
调用的时候输入Block Name,便可以截取到Block的查询条件查询该Block。
程序首先保存当前的block,record以及Item使得在执行完之后光标依然停留在原位置而不会跳来挑去。之后判断当前所在的Block是否和参数传进来的P_Block一致,如果不一致,那么就go到P_Block上,然后获取该Block的Last_Query,由于可能查询带有Order By,所以需要判断是否带有Order By来决定截取的最终位置。取得了where条件之后,通过使用set_block_property(p_block_name,default_where,l_where_clause)以及execute_query对block进行查询,在这之前需要先保存原来的default
where,在查询之后将default_where设置为默认的。最后讲光标定位到原位置。
调用的时候输入Block Name,便可以截取到Block的查询条件查询该Block。
相关文章推荐
- Form中Block的重新查询
- Form中Block的重新查询
- Form中Block的重新查询
- Form中Block的重新查询
- 根据form查询条件,重新加载datagrid
- 使用DataView与Form Web Part实现列表的关键字查询
- GL-关于FRM-40654:已更新记录。重新查询块,已查看更改!的错误
- springmvc 带查询条件的分页,form的控制范围,怎么包裹条件提交给后台
- “多负载识别监控平台(上位机)”技术细节 之Unit3-Form3用户负载类型查询界面
- [转][SharePoint Designer技巧-1]使用DataView与Form Web Part实现列表的关键字查询
- 学习并项目应用到EBS FORM查询开发
- [SharePoint Designer技巧-1]使用DataView与Form Web Part实现列表的关键字查询
- oracle查询表数据并重新插入到本表
- Struts中处理刷新Form重新提交问题
- struts中使用form保持查询条件不变
- 在开发Form表单中的三种查询方法
- iOS开发 编译工程师 遇到once.h beng'kuispatch_once(predicate,block)重新拉取代码后解决
- EasyUI实战篇之datagrid:如何重新设置datagrid所配置的属性(options)并重新查询列表(relaod)
- Scripts:查询db_block_buffer使用率的脚本perf_db_block_buffer_usage.sql
- 重新想象 Windows 8 Store Apps (1) - 控件之文本控件: TextBlock, TextBox, PasswordBox, RichEditBox, RichTextBlock, RichTextBlockOverflow