Oracle apex APEX 4.1-基于穿梭机右侧面板填充DB
APEX版本:4.1.1.00.23 我在页面上有一个穿梭程序,当我将项目从左侧移动到右侧面板时,我想用选择列表中的内容更新数据库中的表 在本例中,当我从下拉列表中选择“Analyst_1”时,它将基于javascript填充右侧Oracle apex APEX 4.1-基于穿梭机右侧面板填充DB,oracle-apex,Oracle Apex,APEX版本:4.1.1.00.23 我在页面上有一个穿梭程序,当我将项目从左侧移动到右侧面板时,我想用选择列表中的内容更新数据库中的表 在本例中,当我从下拉列表中选择“Analyst_1”时,它将基于javascript填充右侧 DB table (before clicking button): Field Analyst Co-Borrower Credit Score Analyst_1 Appraised Value
DB table (before clicking button):
Field Analyst
Co-Borrower Credit Score Analyst_1
Appraised Value (null)
Appraisal Identifier (null)
然后,在我将一些项目从左面板移动到右面板并单击“应用更改”后,我希望将“Analyst_1”放在DB上的Analyst字段中,用于右面板上的每个字段名称
DB table (after clicking button):
Field Analyst
Co-Borrower Credit Score Analyst_1
Appraised Value Analyst_1
Appraisal Identifier Analyst_1
这是我点击“应用更改”按钮时的代码
更新数据表
设置分析师名称=:P51\u分析师
其中字段=:P51_右 穿梭值以冒号分隔的字符串提交到会话状态。例如“VALUE1:VALUE2:VALUE4:VALUE7”。显然,这是行不通的。 当然,你可以用几种方法来处理这个问题。一种是在in子句中使用字符串,并将其拆分为几个元素
UPDATE data_table
SET analyst_name = :P51_ANALYST
WHERE field IN (SELECT a_field
FROM
xmltable('/root/e/text()' passing xmltype('<root><e>'
|| REPLACE(:P51_SHUTTLE_RIGHT,':','</e><e>')
|| '</e></root>') columns a_field VARCHAR2(50) path '/');
我使用以下代码让DB仅基于右面板中的项目来更新Analyst选择列表 注意:这只更新了基于右面板的数据库。如果将某个内容从右面板移动到左面板,则在提交页面后,它仍将显示在右面板上 提交后创建页面进程PL/SQL匿名块:
declare
tab apex_application_global.vc_arr2;
l_count number;
begin
tab := apex_util.string_to_table (:P51_SHUTTLE);
for i in 1..tab.count
loop
select count(*) into l_count from DQ_MANUAL_EDIT WHERE DQ_ATTRIBUTE = tab(i);
if l_count > 0 then
UPDATE DQ_MANUAL_EDIT
SET DQ_ANALYST = :P51_DQ_ANALYST
WHERE DQ_ATTRIBUTE = tab(i);
end if;
end loop;
end;
declare
tab apex_application_global.vc_arr2;
l_count number;
begin
tab := apex_util.string_to_table (:P51_SHUTTLE);
for i in 1..tab.count
loop
select count(*) into l_count from DQ_MANUAL_EDIT WHERE DQ_ATTRIBUTE = tab(i);
if l_count > 0 then
UPDATE DQ_MANUAL_EDIT
SET DQ_ANALYST = :P51_DQ_ANALYST
WHERE DQ_ATTRIBUTE = tab(i);
end if;
end loop;
end;