Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle APEX交互式报告条件列链接显示_Oracle_Oracle Apex - Fatal编程技术网

Oracle APEX交互式报告条件列链接显示

Oracle APEX交互式报告条件列链接显示,oracle,oracle-apex,Oracle,Oracle Apex,我有一个交互式报告,显示articles表中的所有记录。对于登录的作者,我希望显示所有记录,但编辑应该只显示该作者撰写的文章。在articles表中,我有一个列CREATED\u BY,其中包含作者用户名 我添加了一个条件,将列作为表达式1=表达式2中的项/列的值链接为表达式1=。创建人&Expression2=:APP\u USER 但这是行不通的。这是我第一次采用这种方法根据条件显示编辑链接 当我在表达式1中添加条件项/列的值不为空时,并设置Expression1=#由#创建时,它仍然没有显

我有一个交互式报告,显示articles表中的所有记录。对于登录的作者,我希望显示所有记录,但编辑应该只显示该作者撰写的文章。在articles表中,我有一个列
CREATED\u BY
,其中包含作者用户名

我添加了一个条件,将列作为表达式1=表达式2中的项/列的值链接为表达式1=
创建人&Expression2=
:APP\u USER

但这是行不通的。这是我第一次采用这种方法根据条件显示编辑链接

当我在表达式1中添加条件
项/列的值不为空时,并设置Expression1=
#由#
创建时,它仍然没有显示编辑链接。因此,我认为由#
创建的
#正在返回null。但表中的记录有一个值&我也在报告列中看到它


有人能帮忙吗?我不知道我错在哪里

您使用的条件是针对列,而不是针对每一行,因此您将无法这样做

我认为实现这一点的最佳方法是在查询中创建一个虚拟列,将其用作编辑链接:

SELECT
     CASE
      WHEN CREATED_BY = :APP_USER THEN
        '<a href="' || APEX_UTIL.PREPARE_URL( p_url => 'f?p=' || &APP_ID. || ':<YOUR EDIT PAGE>:'||&SESSION.||'::NO::<PAGE ITEM>:'||COLUMN ID, p_checksum_type => 'SESSION') || '"><img src="/i/menu/pencil2_16x16.gif"></a>'
      ELSE ''
    END edit_link,

 ...THE REST OF YOUR QUERY...
选择
案例
创建用户时=:APP\u USER然后
''
否则“
结束编辑链接,
…剩下的问题。。。
您还必须将列定义下的列的显示更改为

标准报告栏

您还可以选择删除下面的选项

允许用户: 因此用户无法隐藏/排序/。。。专栏


希望这能帮助你。任何疑问或进一步解释,请提问。

这是一个类似于hmarques的解决方案,但不需要手动构建整个链接

我将在报告查询中包含一个伪列,该列包含null,或者如果当前用户名与创建者匹配,则包含指向“编辑”按钮图像的指针:

select decode(CREATED_BY
            ,:APP_USER
            ,'<img src="#IMAGE_PREFIX#edit.gif" alt="">' 
                -- or your preferred image/hyperlink text
            ) EDITLINK
       --, your columns
from ARTICLES
--etc
选择解码(由
,:应用程序用户
,'' 
--或您喜欢的图像/超链接文本
)编辑链接
--,你的专栏
从文章
--等

使用标准列链接功能将参数传递到编辑页面,但使用
#EDITLINK#
作为列的链接文本。不要忘记将列的显示类型设置为“标准报告列”。就我个人而言,我也会去掉列标题——这是一个必填字段,但您可以将其设置为单个空格

我能够在APEX 5中找到解决方案,但同样的方法也适用于APEX 4.2。您可以很容易地使用内置的APEX列链接和一个案例语句来实现这一点,正如hmarques所建议的那样

按如下方式构造查询:

SELECT CASE
           WHEN CREATED_BY = :APP_USER THEN
               'Edit'
           ELSE
               NULL
       END EDIT,
       ...rest of query
然后,转到:报告属性>您的编辑列>,并滚动到页面的列链接部分。选择链接文本文本框旁边的箭头,然后选择#编辑#作为列链接文本

另外,使用以下html代码设置链接属性:

class="t-Button t-Button--simple t-Button--hot t-Button--stretch"
这将使列看起来像一个按钮,并且不会显示传统的铅笔图标(,这是此方法的唯一缺点)

别忘了将编辑列设为标准报告列,祝你好运

约翰