post-text-item无法接受提交

时间:2017-04-25 14:30:43

标签: oracle oracle11g oracle-sqldeveloper oracleforms

任何人都可以建议我在文本框中使用的好触发器。我打算在文本框中使用的操作是当用户更改文本框中的值时,我调用一个过程,该过程使用提交更新数据库表中的该值。但是,所以当用户更改值并按下输入时,它应转到下一个项目,然后更新数据库。它在KEY-NEXT-ITEM触发器中工作正常。但是,一个问题是用户更改fld中的值,但不按Tab键或输入,而是直接F10提交。我在文本框中的触发器(即KEY-NEXT-ITEM)不会触发。我尝试了一个POST-TEXT-ITEM,但它不允许我使用,COMMIT或NEXT_ITEM构建的ins。我希望触发器在用户退出项目时触发,并且它应该转到表单中的下一个项目

1 个答案:

答案 0 :(得分:1)

使用WHEN-VALIDATE-ITEM触发器。此触发器主要用于验证用户输入的值。每当表单决定,用户完成字段值 - 用户离开字段,用户按提交时等等时,它都会触发。

不幸的是,您无法在此触发器中使用COMMIT_FORM。表单建议仅在事务触发器中进行直接数据库更改。要使用commit实现数据库更改,请使数据库过程在自治事务中运行:

CREATE OR REPLACE PROCEDURE do_somethning (some_id NUMBER, some_value VARCHAR2) AS
  PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
  UPDATE some_table SET some_column = some_value
    WHERE table_id = some_id;
  COMMIT;
END do_somethning;

Yout WHEN-VALIDATE-ITEM触发器可以像这样

BEGIN
   -- probably do some validations
   ...
   -- call your procedure
   do_something(:some_block.id, :some_block.your_field);
END;