首页 > 解决方案 > 从 APEX 数据上传向导的下拉列表中填充列

问题描述

我在 APEX 数据加载向导的数据加载源页面上添加了一个下拉字段 P1_TABLE_NAME,用户可以在其中选择一个值。该值应填充到数据库中的 TABLE_NAME 列中。TABLE_NAME 也被定义为 Oracle Apex 中的查找值。在粘贴区域,用户将输入有关表格的各种信息。所以顺序应该如下:

  1. 用户在 P1_TABLE_NAME 下拉菜单中选择值。

  2. 粘贴一些东西到粘贴区域。

  3. 点击下一步。

  4. Data/Table Mapping 页面中显示了两列,第一列包含粘贴到粘贴区域的信息。

  5. 第二列包含在 P1_TABLE_NAME 下拉菜单中选择的值。

理想情况下,第二列包含该表的查找值,例如用户输入 Blah 和数据/表映射的第二列中的值。也许如果 APEX 可以配置为在与“SPREADSHEET_CONTENT”中的其他值相同的选择中提取额外值

我使用了以下教程:http ://www.jrweth.com/oracle-apex-data-loader-part-1-adding-custom-columns/

创建了额外的项目 P1_TABLE_NAME 但数据/表映射上的表单仅显示输入粘贴区域的值。

我使用的代码:

FOR UPLOAD_ROW IN (SELECT SEQ_ID FROM APEX_COLLECTIONS WHERE COLLECTION_NAME = 'SPREADSHEET_CONTENT') 循环

 APEX_COLLECTION.UPDATE_MEMBER_ATTRIBUTE (
    p_collection_name   => 'SPREADSHEET_CONTENT',
    p_seq                     => UPLOAD_ROW.SEQ_ID,
    p_attr_number    => '2',
    p_attr_value        => : P1_TABLE_NAME);

结束循环;

我还尝试过使用 APEX 数据验证 SQL 查询。希望也许我可以更新查询以包含其他字段,然后这些字段将包含在随后的数据/表映射页面上显示的列列表中。

选择 n001 作为 row_num,wwv_flow_lang.system_message('DATA_LOAD.' || c049) 作为操作,c001,c002,c003,c004,c005,c006,c007,c008,c009,c010,c011,c012,c013,c014,c015, c016,c017,c018,c019,c020,c021,c022,c023,c024,c025,c026,c027,c028,c029,c030,c031,c032,c033,c034,c035,c036,c037,c038,c040,c041, c042,c043,c044,c045,:P1_TABLE_NAME

从 apex_collections where collection_name = 'LOAD_CONTENT' and c049 in ('INSERT','UPDATE', 'FAILED') order by seq_id

标签: oracle-apex

解决方案


APEX 数据加载器只能加载到单个目标表中。数据/表映射页面上显示的列列表来自数据加载定义,该定义为单个表定义一次。

我克服此限制的一种方法是创建一个包含所有表中所有列的临时表,然后在加载数据后编写自定义 PL/SQL 以将其移动到用户选择的目标表。


推荐阅读