2017-04-06 135 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