FORM开发入门4——查找窗口实现

时间:2022-06-01 23:15:24
知识点:
如何增加查询条件: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');