将值插入数据库并将 return 它们插入交互式网格 (APEX 5.1)

Insert values into database and return them into interactive grid (APEX 5.1)

我有一个 表格Select 列表 项目 P2_PERSON(它的类型是 Shared component 并且它显示 PERSON 中的人员姓名 table 在数据库中),两个 日期选择器 P2_DATEFROMP2_DATETO 和一个标记为 GO 快捷按钮 。下面,在同一页面上(见图 1)是 Interactive Grid(apex 5.1 中的一个新区域,看起来是一个新鲜而强大的功能)。我需要做的,但在任何地方都找不到答案的是:在 Select 列表 中选择了标记为 Osoba 的人之后, 在第一张图片中可以看到,从两个 Date pickers 中选择两个日期,单击 GO 按钮 5 行插入 table CONTROL_TT 并呈现在 Interactive grid 在页面上。日期之间的差异不得超过 7 天,以避免在 table 中插入过多内容。

Each day in the range of dates entered represents one new inserted row in CONTROL_TT table and that date is stored in date column of every row.

Also, person_id collected (or passed) from P2_PERSON Select list Item is stored in person_id column of CONTROL_TT table. Columns of CONTROL_TT table are

(control_id, person_id, date, time_from, time_to, hours_total, project_id, status, desc, person_id_accept_req)

Id column is populated trough sequence seq_evidencija

time_from, time_to, hours_totaldesc 是 inserted/tiped (输入)由用户在 interactive Grid 填充数据时手动输入的。 project_id 将是 Select 列表(来自 table 项目 in db) Interactive gridstatusproject_id 使用 Status table 作为数据参考。发送


Web page in browser look

Look from apex

  1. 您的 GO 按钮必须具有 操作:提交页面
  2. 创建验证类型:PL/SQL表达式具有以下代码:

    to_date(:P2_DATETO, 'dd-mon-yyyy')-to_date(:P2_DATEFROM, 'dd-mon-yyyy') <=7

(注意,如果需要,请修改日期格式)条件为 When Button Press: GO 和您要显示的一些消息。 3. 创建一个在 When Button Press: GO 条件下运行的进程,此 PL/SQL 代码:

BEGIN 
    FOR i IN 1..(To_date(:P2_DATETO, 'dd-mon-yyyy')-To_date(:P2_DATEFROM, 'dd-mon-yyyy')) 
    LOOP 
        INSERT INTO control_tt (person_id, DATE) 
        VALUES (:P2_PERSON, To_date(:P2_DATETO, 'dd-mon-yyyy') + i - 1); 
    END LOOP; 
END;