知识点:
如何增加查询条件:Country Name, p_START_DATE_from,p_START_DATE_to
1.手工创建新的数据块
2、重新命名块:QUERY,并设置子类信息为BLOCK
3.查询界面设计
①在块中新增所需的项(最好直接从原数据块COUNTRIES那里粘贴过来):
Country ID(用来作标识),Country Name ,START_DATE_FROM,START_DATE_TO
②设置项的属性:
名称、子类信息、数据类型、最大长度(类型和长度粘贴过来的就可以不用改)、数据库项(否)、画布、X\Y坐标
A.不需显示出来的
B.需显示出来的非日期类项
提示、提示文本对齐(开始)、提示附件边缘(开始)、提示对象对齐(居中)、提示附件偏移(0.05)
C.日期类型只在LOV处与B不同,其余基本一样:
值列表:ENABLE_LIST_LAMP,从列表中验证:否
③增加查询、清除两按钮:名称、子类属性、标签(查询(&Q))、默认按钮(可以不要)
界面设计完成图大致为:
6、给按钮增加when-button-pressed触发器
内容:
查询按钮--不会自动保留上次查询的条件
:parameter.g_query_find := 'TRUE';
app_find.find('COUNTRIES');
:parameter.g_query_find := 'FALSE';
--app_find.find('数据块名');
清除按钮
app_find.clear;
4.给查询块赋予查询条件
新增块级触发器PRE-QUERY
触发器内容:
IF :parameter.g_query_find = 'TRUE' THEN
:countries.country_id := :query.country_id;
app_find.query_date_range(:query.start_date_from,
:query.start_date_to,
'COUNTRIES.START_DATE');
END IF;
补充1:若要进行模糊查询(如电话号码)
:EMPLOYEES.PHONE_NUMBER := '# LIKE ''%'|| :QUERY.PHONE_NUMBER||'%''';
--关于
'# LIKE ''%'和'%''':因为实际SQL中like后的内容需要一对单引号('')引起来,而'为特殊字符,故需连写两次('')表示转义。
转换为SQL语句的where条件即为:
where :EMPLOYEES.PHONE_NUMBER LIKE '%:QUERY.PHONE_NUMBER%'
补充2:
对有使用值列表的项,需要增加触发器:WHEN-VALIDATE-ITEM
app_field.clear_dependent_fields('QUERY.COUNTRY_NAME',
'QUERY.COUNTRY_ID');