【问题标题】:how to make the output from checkbox to select statment?如何使复选框的输出到选择语句?
【发布时间】:2019-12-28 02:29:59
【问题描述】:

我目前使用的是 apex 19.1。我有这个问题,我不能(或不知道如何)从复选框中选择某些列,这意味着我有这个复选框

这使我能够从复选框中检查我想使用该输出 (:P3_COLUMN) 的列名称来选择表中的特定列。我的解决方案是:

select :P3_COLUMN
 from INPUT_TABLE$

我也试过了:

select case :P3_COLUMN when 'currency' then currency when 'nationality'       then nationality end as test from input_table  

这给了我这个输出

DECLARE
str varchar2(100);
BEGIN
str := 'select ' || replace(:P3_COLUMN, ':', ',') || ' from input_table';
execute immediate str;
END;

这给了我这个错误

我不知道该怎么做,任何帮助将不胜感激。

【问题讨论】:

  • 您可能应该有一个选项,当没有选中任何框时,:P3_COLUMN 将为 NULL。这看起来像是您的第二张和第三张图片的问题。 Apex 会话状态很棘手,:P3_COLUMN 可能会在您的 SQL 查询运行之后 被分配一个值。调试工具可以帮助解决这些问题。

标签: oracle oracle-sqldeveloper oracle-apex


【解决方案1】:

第一个选项在列上使用服务器端条件。

第二个选项使用动态sql>创建函数返回sql语句>调用你所在区域源中的函数。

【讨论】:

    【解决方案2】:

    这是一个演练(我的页面是 #51)。假设我们要显示 Scott 的 DEPT 表中的某些列。

    • 创建类型为经典报表的区域
    • 创建一个页面项(我们称之为P51_COLS,它是一个选择列表项;它的源是一个查询,如下所示:

      select column_name d,
             column_name r
      from user_Tab_columns
      where table_name = 'DEPT'
      

      选择页面的操作应该是“提交页面”

    • region 的源应该是一个返回 SQL 查询的 PL/SQL 函数体,如下所示:

      return 'select case when :P51_COLS = ''DEPTNO'' then to_char(deptno )
                          when :P51_COLS = ''DNAME''  then dname
                          when :P51_COLS = ''LOC''    then loc
                     end as result 
              from dept';
      

      它的“要提交的页面项目”应该设置为P51_COLS

    就是这样……运行页面;从选择列表项中选择任何列,结果应该会显示出来。

    是的,我知道 - 查询本身看起来愚蠢,因为您必须命名所有案例。出于某种原因,Apex 确实需要 return 'select ...' 声明。连接,替换功能,......不起作用。也许有人知道为什么,或者——甚至更好——可以演示如何解决它。同时,试试上面写的。

    【讨论】:

      猜你喜欢
      • 2021-07-18
      • 2017-12-02
      • 2017-12-02
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-08
      • 1970-01-01
      相关资源
      最近更新 更多