oracle窗体如何在execute_query之后保持复选框处于选中状态

时间:2019-03-06 06:32:38

标签: oracle oracleforms

具有多记录数据块的表单,该表单通过调用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;

2 个答案:

答案 0 :(得分:0)

  

在execute_query之后需要能够保留复选框选中状态和位置。

如果复选框“状态”表示是否选中,则它必须是数据库项目(即属于一个表)。如果它不是基于表值的项,则执行查询将无法知道已选中(未选中)哪些复选框。

那也回答了问题的第二部分。

答案 1 :(得分:0)

就像小脚丫说的那样,您应该将复选框设置为基表项。如果您不能执行此操作或不想执行此操作,则可以将查询前检查的值保留在临时表或数组中。 查询后,您可以遍历每一行,并检查数组或临时表中的值是否已选中,然后再次检查。