页面加载事件上的 Oracle APEX 5 动态操作不起作用。我究竟做错了什么?

Oracle APEX 5 Dynamic Action upon page load event does not work. What am i doing wrong?

该程序的主要目的是检索记录的某些字段并处理并将其显示在顶点 5 中静态内容区域的文本框中

我的数据库:LCD_MONItOR table

接口:

应该在页面加载事件上执行的 PLSQL 代码。

   Declare 

   lcd_id   LCD_Monitor.LCD__NO%TYPE;
   tag        LCD_Monitor.ASSET_TAG%TYPE;
   pp      LCD_Monitor.PURCHASE_PRICE%TYPE;
   sal      LCD_Monitor.SALVAGE%TYPE;
   ls       LCD_Monitor.LIFE_SPAN%TYPE;
   accm  LCD_Monitor.ACCUMULATED_DEP%TYPE;
   netbook Number;
   currDep Number;
   Begin
   select LCD__NO, ASSET_TAG, PURCHASE_PRICE,SALVAGE, LIFE_SPAN,
   ACCUMULATED_DEP into lcd_id, tag, pp, sal, ls, accm from LCD_MONITOR 
   where LCD__No='40';

   :LCD_NO:=lcd_id;
   :CURR_DEP:= (pp-sal)*(1/ls);
   :TOT_DEP:= (pp-sal)*(1/ls)+accm;
   :NBV:=pp-(pp-sal)*(1/ls)+accm;

   End;

PS:我已将值返回到属性 'Affected Elements' 部分中的文本框。

但是当页面加载时,文本框中没有显示任何值。任何帮助将不胜感激。

我不确定我是否理解正确你到底在做什么。如果您只需要用数据填充项目,请在 header 之前创建一个流程(在 Page Designer 模式下,它位于 Pre-rendering -> Before Header。在那里编写代码,应该足够了。

如果您想在动态动作中执行此操作(我不推荐这种方式),您需要使用 Event - Page Load 创建一个动态动作,其中将包含一个真实动作具有属性:Action - Execute PL/SQL CodePL/SQL Code - 你的代码和 Items to Return - LCD_NO,CURR_DEP,TOT_DEP,NBV
但是请确保您的项目确实具有这样的名称,因为默认情况下 APEX 创建名称类似于 P10_LCD_NO 的项目,其中 10(例如)是页面的编号。

我没有直接将计算值分配给文本字段项目,而是先将它们分配给一个变量,然后再将变量分配给这些项目,即

之前

   :CURR_DEP:= (pp-sal)*(1/ls);
   :TOT_DEP:= (pp-sal)*(1/ls)+accm;
   :NBV:=pp-(pp-sal)*(1/ls)+accm;

更正

    currDep:= (pp-sal)*(1/ls);
    :CURR_DEP:= currDep;
    tot:= (pp-sal)*(1/ls)+accm;
    :TOT_DEP:=tot;
    netbook:=pp-((pp-sal)*(1/ls)+accm);
    :NBV:=netbook;