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

时间:2017-07-31 12:39:54

标签: sql plsql oracle-apex-5

该程序基本上旨在检索记录的某些字段并处理并在顶点5中的静态内容区域的文本框中显示该字段

我的数据库:LCD_MONItOR表

enter image description here

界面:

enter image description here

应该在页面加载事件上执行的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:我已将值返回到属性中“受影响的元素”部分的文本框中。

enter image description here

但是当加载页面时,文本框中不会出现任何值。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

我没有直接将计算值分配给textfields项目,而是先将它们分配给变量,然后将变量分配给项目,即

   :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;