目录
[1. 建表&投入测试数据](#1. 建表&投入测试数据)
[2. 经典报表做成](#2. 经典报表做成)
[2-1. 画面布局如下编辑](#2-1. 画面布局如下编辑)
[2-2. 报表使用的SQL](#2-2. 报表使用的SQL)
[2-3. RS列的Heading设定](#2-3. RS列的Heading设定)
[2-4. Function and Global Variable Declaration](#2-4. Function and Global Variable Declaration)
[2-5. Execute when Page Loads](#2-5. Execute when Page Loads)
[2-6. Process](#2-6. Process)
[3. 运行效果编辑](#3. 运行效果编辑)
1. 建表&投入测试数据
sql
CREATE TABLE CONTRACT_YEAR_SETTING (
BU_CODE VARCHAR2(2 CHAR)
, BU_NAME VARCHAR2(500 CHAR)
, YEAR NUMBER(4)
, STATUS VARCHAR2(30)
, START_DATE DATE
, END_DATE DATE
);
/
INSERT INTO CONTRACT_YEAR_SETTING VALUES('02', '医学部_01',2024,'O',TO_DATE('2024-01-01 12:34:56','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2024-12-01 12:34:56','YYYY-MM-DD HH24:MI:SS'));
INSERT INTO CONTRACT_YEAR_SETTING VALUES('03', '医学部_02',2024,'O',TO_DATE('2024-01-01 12:34:56','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2024-12-01 12:34:56','YYYY-MM-DD HH24:MI:SS'));
INSERT INTO CONTRACT_YEAR_SETTING VALUES('10', '医学部_10',2024,'O',TO_DATE('2024-01-01 12:34:56','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2024-12-01 12:34:56','YYYY-MM-DD HH24:MI:SS'));
INSERT INTO CONTRACT_YEAR_SETTING VALUES('02', '医学部_01',2025,'O',TO_DATE('2025-01-01 12:34:56','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2025-12-01 12:34:56','YYYY-MM-DD HH24:MI:SS'));
INSERT INTO CONTRACT_YEAR_SETTING VALUES('03', '医学部_02',2025,'O',TO_DATE('2025-01-01 12:34:56','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2025-12-01 12:34:56','YYYY-MM-DD HH24:MI:SS'));
INSERT INTO CONTRACT_YEAR_SETTING VALUES('10', '医学部_10',2025,'O',TO_DATE('2025-01-01 12:34:56','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2025-12-01 12:34:56','YYYY-MM-DD HH24:MI:SS'));
COMMIT;
2. 经典报表做成
2-1. 画面布局如下

2-2. 报表使用的SQL
sql
select APEX_ITEM.CHECKBOX2(1,ROWID,'class="row-checkbox"') as RS,
BU_CODE,
BU_NAME,
YEAR,
DECODE(STATUS,'O','オーペン','C','クロース','') AS STATUS,
START_DATE,
END_DATE
from CONTRACT_YEAR_SETTING cys
where (:P3003_YEAR IS NULL OR cys.YEAR = :P3003_YEAR)
order by cys.BU_CODE, cys.YEAR
2-3. RS列的Heading设定
javascript
<input type="checkbox" id="selectAll" onclick="toggleSelectAll(this)">
2-4. Function and Global Variable Declaration
javascript
function toggleSelectAll(checkbox) {
$('.row-checkbox').prop('checked', checkbox.checked);
}
function initCheckboxSync() {
$('#selectAll').click(function() {
var isChecked = $(this).prop('checked');
$('.row-checkbox').prop('checked', isChecked).trigger('change');
});
$('.row-checkbox').change(function() {
updateHeaderState();
updateSelectedItems();
});
updateHeaderState();
}
function updateHeaderState() {
var total = $('.row-checkbox').length;
var checked = $('.row-checkbox:checked').length;
$('#selectAll')
.prop('checked', checked === total)
.prop('indeterminate', false);
}
2-5. Execute when Page Loads
javascript
initCheckboxSync();
2-6. Process
sql
DECLARE
lt_selected_ids apex_application_global.vc_arr2;
lv_status CONTRACT_YEAR_SETTING.STATUS%type;
BEGIN
lt_selected_ids := apex_application.g_f01;
if lt_selected_ids.COUNT = 0 then
apex_error.add_error (
p_message => 'No rows are selected or updated.',
p_display_location => apex_error.c_inline_in_notification );
return;
end if;
FOR i IN 1..lt_selected_ids.COUNT LOOP
SELECT STATUS
INTO lv_status
FROM CONTRACT_YEAR_SETTING
WHERE ROWID = lt_selected_ids(i);
IF lv_status = 'C' THEN
UPDATE CONTRACT_YEAR_SETTING
SET STATUS = 'O'
WHERE ROWID = lt_selected_ids(i);
ELSE
UPDATE CONTRACT_YEAR_SETTING
SET STATUS = 'C'
WHERE ROWID = lt_selected_ids(i);
END IF;
END LOOP;
COMMIT;
END;
3. 运行效果
