2017-04-06 134 views
1

我有一个APEX 5.0 App将用于生成员工的名片。 我已创建一个页面并且SELECT LIST页面项目名称为(P1_EMPLOYEE)。它执行此数据库查询来填充选择列表。查询未返回预期结果我缺少什么

select 
    EMPLOYEE.LASTNAME||', '||EMPLOYEE.FIRSTNAME as FULLNAME, 
    EMPLOYEE.SECTION AS SECTION 
from 
    EMPLOYEE EMPLOYEE 
ORDER BY 
    EMPLOYEE.LASTNAME asc; 

,并在页面加载时就输入设置在选择列表中的约900名员工的名字(如.. DOE,约翰,能源部,简,等...)。

此外,我创建了一个名为(创建)的按钮,其动态操作设置为执行Javascript(例如window.open('f?p=&APP_ID.:0:&SESSION.:PRINT_REPORT=CreateBizCards');)。

CreateBizCards以上是报表查询,我已经进入了

select 
    EMPLOYEE.FIRSTNAME as "FIRST NAME", 
    EMPLOYEE.LASTNAME as "LAST NAME", 
    EMPLOYEE.TITLE as TITLE, 
    EMPLOYEE.SECTION as SECTION, 
    EMPLOYEE.OFFICE_PHONE as "OFFICE PHONE", 
    EMPLOYEE.EMAIL as "E-MAIL" 
from 
    EMPLOYEE EMPLOYEE 
where 
    EMPLOYEE.LASTNAME = :P1_EMPLOYEE; 

SQL语法当(创建)按钮被触发时,它是假设基于SELECT LIST选择的员工姓名创建报告。


有两件事情是不希望发生的结果。

首先,当创建按钮被触发时,它将生成一个报告,其中具有相同姓氏的不同用户。其次,如果我在触发按钮时更改报表查询上的SQL查询,它将生成一个仅包含列名称且不包含数据的PDF。

我应该如何为CreateBizCards报表查询编写一个查询,以便它将从页面项目上的SELECT LIST(例如:P1_EMPLOYEE)中找到所选员工,然后仅返回特定于该员工的数据?


注意:我无法共享APEX URL,因为这是一个内部应用程序服务器。

+0

如果它不是一个内部应用程序服务器,你会?首先是坏主意。 – xQbert

+0

是的,我当然会有一些限制。 – CookeK

回答

1

选择列表,其中包括LOV期望1列或2列的项目。列1是显示值,列2是返回值。

这是“帮助”说,关于使用SQL查询的列表的值(直接从顶点5的帮助下复制)

输入SQL查询定义来填充值列表。 一般值的查询列表的形式为:

select [displayValue], 
     [returnValue] 
    from ... 
where ... 
order by ... 

选择必须具有唯一的名称或别名每一列。 Oracle 建议在任何包含SQL 表达式的列上使用别名。基于SQL查询与相同的显示和返回值

select ename d, 
     ename r 
    from emp 
order by 1 

注值的

select ename as d, 
     empno as r 
    from emp 
order by 1 

表值的

实例

表:当选择这两个显示同一列放置并返回 值使用列别名。


你的选择列表项(P1_EMPLOYEE)正在显示的拼接员工的LASTNAMEFIRSTNAME。该项目正在返回(=其参考其会话状态时的值)员工的SECTION,我假设这不是员工的姓氏或是唯一的密钥。

这意味着你的报表查询中有WHERE子句基本上等于在说“返回记录,其中一个LASTNAME等于SECTIONP1_EMPLOYEE

我建议您设置P1_ITEM的东西,如:。

Select e.lastname||', '||e.firstname as fullname, 
[SOME UNIQUE ID] --replace with primary key 
from employee e 
order by e.lastname, e.firstname; 

对于报表查询你想改变你的where子句来是这样的:

where e.[SOME UNIQUE ID] = :P1_EMPLOYEE; 
+0

我给你的答案增加了一些信息。这已经很不错了,在另一个答案中传达完全相同的信息是没有意义的,因为我不得不补充一些关于基础知识的基本信息。 – Tom

+0

感谢这非常有帮助。 – CookeK

+0

@Tom看起来不错。谢谢! – hisnameismyname2