页面加载事件上的 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 Code
,PL/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;
该程序的主要目的是检索记录的某些字段并处理并将其显示在顶点 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 Code
,PL/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;