知识点:
 
 
如何增加查询条件: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;
  
 
 
补充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');









