oracle表单如何在execute_query之后保持复选框被选中
Posted
技术标签:
【中文标题】oracle表单如何在execute_query之后保持复选框被选中【英文标题】:oracle forms how to keep checkbox checked after execute_query 【发布时间】:2019-03-06 06:32:38 【问题描述】:具有多记录数据块的表单,通过调用 PL/SQL 来更新表以检查已检查的行。需要能够在 execute_query 之后保留复选框选中状态和位置。
WHEN-BUTTON-PRESSED 上的代码处理所有选定的行。
DECLARE
l_cur_record NUMBER;
v_error VARCHAR2 (1);
BEGIN
l_top_record := GET_BLOCK_PROPERTY ('LOAD_DETAILS_LOG', TOP_RECORD);
GO_BLOCK ('LOAD_DETAILS_LOG');
FIRST_RECORD;
LOOP
IF :LOAD_DETAILS_LOG.select_chk = 'Y'
THEN
l_cur_record := :SYSTEM.CURSOR_RECORD;
PK_LOAD_CHE.P_CHECK_FILES ( :LOAD_DETAILS_LOG.file_id,
:LOAD_DETAILS_LOG.original_filename,
:LOAD_DETAILS_LOG.fsy_code,
:LOAD_DETAILS_LOG.received_date,
v_error);
END IF;
EXIT WHEN :SYSTEM.LAST_RECORD = 'TRUE';
NEXT_RECORD;
END LOOP;
IF v_error = 'Y'
THEN
msg_alert ('Errors found in selected files. Please check Error Log',
'I',
FALSE);
GO_BLOCK ('LOAD_DETAILS_ERRORS');
EXECUTE_QUERY;
ELSE
GO_BLOCK ('LOAD_DETAILS_LOG');
EXECUTE_QUERY (NO_VALIDATE);
END IF;
END;
【问题讨论】:
【参考方案1】:需要能够在执行查询后保留复选框选中状态和位置。
如果复选框“状态”表示它是否被选中,那么它必须是一个数据库项(即属于一个表)。如果它是一个不基于表值的项目,那么执行查询就无法知道哪些复选框被选中(哪些没有被选中)。
这也回答了问题的第二部分。
【讨论】:
是状态意味着 - 选中或未选中。能否举例说明如何使用复选框作为数据库项? 它必须是表格中的一列,然后 - 在表单中 - 您将更新其属性并将其设置为基于该列。【参考方案2】:就像 littlefoot 说的,您应该将复选框设置为基础项目。如果您不能这样做或不想这样做,那么您可以将查询之前检查的值保留在临时表或数组中。 查询后,您可以遍历每一行并检查数组或临时表,如果检查了值并再次检查。
【讨论】:
以上是关于oracle表单如何在execute_query之后保持复选框被选中的主要内容,如果未能解决你的问题,请参考以下文章
Oracle Forms Execute_Query Example To Fetch The Records From Database
如何在oracle表单12c中为Shift + A按键创建触发器
Obtaining Query Count Without executing a Query in Oracle D2k