iT邦幫忙

3

微軟報表產生器呼叫ORACLE 上的PROCEDURE 操作手冊

  • 分享至 

  • xImage
  •  

一 目的:

處理目前原有系統上的已經開發的Oracle Procedure可以重複使用,不會浪費原有程式降低程式開發複雜度。


二 安裝軟體

2.1 微軟報表產生器:
可以從微軟官方網站下載此軟體,安裝步驟這裡就不在重述。

2.2 Oracle Instant Client Downloads
可以從Oracle官方網站下載此軟體,必須注意x64及32-bit的版本區分,也就是若是有其它軟體要透過這一ODAC軟體連到Oracle資料庫,必需要安裝相對應的版本(也就是都安裝32-bit是最保險的方式)。

http://ithelp.ithome.com.tw/upload/images/20160614/20011825Yk5PLl3EsP.png

另外一篇 + 另一篇安裝問題排除。


三 建立自己資料及Procedure程式:

3.1 建立personnel table如下

CREATE TABLE personnel
(
   id           NUMBER (5) PRIMARY KEY,
   name         VARCHAR2 (20),
   birthday     DATE,
   hireday      DATE DEFAULT SYSDATE,
   department   VARCHAR2 (20)
)
TABLESPACE usr

塞入測試資料如下

INSERT INTO personnel (id,
                       name,
                       birthday,
                       hireday,
                       department)
     VALUES (05,
             '員工五',
             TO_DATE('19101201', 'YYYYMMDD'),
             TO_DATE('20111010', 'YYYYMMDD'),
             'Sales');

基本資料如下展示如下表所示
http://ithelp.ithome.com.tw/upload/images/20160614/200118256k68pJ23ac.png


3.2 建立Oracle 上的Procedure

CREATE OR REPLACE PROCEDURE ERP.sp_getemployees (
   e_recordset OUT SYS_REFCURSOR)
IS
BEGIN
   OPEN e_recordset FOR SELECT * FROM personnel;
END sp_getemployees;
/

其中 OUT SYS_REFCURSOR 是重點,在 Oracle 中讓你把資料集傳給前端,這樣就完成基本的procedure程式。


四 使用報表產生器

4.1 開啟微軟報表產生器
http://ithelp.ithome.com.tw/upload/images/20160614/20011825DidUNpM5H1.png


4.2 建立資料來源
資料來源中按下右鍵,點選入資料來源
http://ithelp.ithome.com.tw/upload/images/20160614/20011825lTaU6jPZCC.png


http://ithelp.ithome.com.tw/upload/images/20160614/20011825SUesl3CmMw.png

填入連接Oracle資料庫的名稱TNSname、帳號及密碼,若是沒有任何問題可按下測試連線。
若是出現測試連線成功,表示與資料庫聯繫沒有問題。
http://ithelp.ithome.com.tw/upload/images/20160614/20011825TN5H8R5T6L.png

http://ithelp.ithome.com.tw/upload/images/20160614/20011825c19zHkCTdE.png

4.3 建立資料集
於畫面中對著資料集按下右鍵,會出現加入資料集的提示視窗
http://ithelp.ithome.com.tw/upload/images/20160614/20011825mP3wpEKdd3.png

修改資料的相關屬性,按照畫面提示動做執行
②資料來源的DataSource1也就是在剛剛建立的資料來源名稱。
最後按下⑤的查詢設計工具
http://ithelp.ithome.com.tw/upload/images/20160614/20011825O6e7Houos3.png

接下來後會出現查詢設計工具的提視窗,請按下①,若是沒有其它錯誤會將資料呈現在②的視窗框中,若是確認無誤後請執行③確定按鈕,完成此部份動作。
http://ithelp.ithome.com.tw/upload/images/20160614/200118253f8c3bnwpc.png

接下來看到底下視窗,請按下確定按鈕
http://ithelp.ithome.com.tw/upload/images/20160614/20011825oAWM7GAWKa.png

4.4 資料的排版及呈現方式
上面資料來源及資料集都作業無誤後,於畫面中會出現①中的資料集,也就是Oracle 中建立的Table欄位,接下來要針對頁面排版的動作,在插入中選擇資料表-->插入資料表
http://ithelp.ithome.com.tw/upload/images/20160614/20011825usvaBC4GaC.png

請拖拉畫面涵蓋整個右側工作區
http://ithelp.ithome.com.tw/upload/images/20160614/20011825Ax7zS6fdRU.png

按右鍵新增兩列資料行,因為我們的資料集中有五個資料表
http://ithelp.ithome.com.tw/upload/images/20160614/20011825Wy2EPfo9Xr.png

將資料集中的欄位,往右拖拉到適當的位置中,完成後如下列圖示,並且將排版位置調整適中。
http://ithelp.ithome.com.tw/upload/images/20160614/200118253eham8rghE.png

最後,按下執行按鈕完成這一次報表的預覽動作。

http://ithelp.ithome.com.tw/upload/images/20160614/20011825R70w0bUlbY.png

報表預覽呈現
http://ithelp.ithome.com.tw/upload/images/20160614/20011825VcU3QsJfli.png

文章同步於
文章參考一
文章參考二


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
小財神
站方管理人員 ‧ 2016-06-14 12:03:14

因為追蹤了「sql」這個Tag,系統通知有新的文章,才沒尼克這篇認真的好文,超讚!

尼克 iT邦大師 1 級 ‧ 2016-06-14 13:10:50 檢舉

才沒尼克這篇認真的好文
這文法好怪,不過我知道你的意思。/images/emoticon/emoticon01.gif

小財神 站方管理人員 ‧ 2016-06-14 15:29:07 檢舉

才沒"錯過"尼克這篇認真的好文
/images/emoticon/emoticon25.gif

0
海綿寶寶
iT邦大神 1 級 ‧ 2016-06-14 15:54:50

拿微軟的報表產生器去接 Oracle...
我只能給你 100 分

順帶請教一下
最終的產出(報表)是什麼型式?
大概要如何使用?
/images/emoticon/emoticon41.gif

看更多先前的回應...收起先前的回應...
尼克 iT邦大師 1 級 ‧ 2016-06-15 09:05:20 檢舉
  1. 其實,是利用原有Procedure在加上OUT SYS_REFCURSOR 這 一段語法,原本程式可以再加以利用,不然重拉一次報表,我看沒人會去做這傻事。
  2. 產出形式,就一般的可以轉成excel或是樞紐分析,其實他的功能跟一般reporting server 功能差不多,只是這一工具應該是IT人把資料兜好,讓一般使用者去組自己的組資料。其實還有很多group by 等等功能,這裡沒有介紹到都不難。
尼克 iT邦大師 1 級 ‧ 2016-06-15 09:06:48 檢舉

抱歉,注音打進去選字很困難,所以打的內容我自己讀都不是很通順。

賽門 iT邦超人 1 級 ‧ 2016-06-15 09:27:46 檢舉

最終產出是Web界面,可以轉成純HTML或Excel、PDF等等。

那個Web界面是由Reporting Service提供的,像這樣...

http://ithelp.ithome.com.tw/upload/images/20160615/20017649RRLoDWgOQr.png

尼克 iT邦大師 1 級 ‧ 2016-06-15 10:29:14 檢舉

感謝Simon說明。

謝謝兩位說明

我原本是想請教「如何與程式結合」
以最終產出是 Web 為例
是否可以在既有網站中
加個頁面
依據使用者輸入參數去產生報表頁面?

還是只適合「獨立使用」
不適合與其他程式結合?

/images/emoticon/emoticon41.gif

尼克 iT邦大師 1 級 ‧ 2016-06-17 16:30:04 檢舉

根據你的問題回覆:

  1. 若是用以上提供的工具,是可以使用參數,主要是是在Procedure 中在加入INPUT 條件,此工具就會出現輸入查詢條件。
  2. 若是要要與程式結合,一樣可使用Visual Studio開發工具,利用reportviewer 來做開發即可。

感謝回答
今天又多學到一點知識了
雖然沒什麼用到的機會
/images/emoticon/emoticon07.gif

尼克 iT邦大師 1 級 ‧ 2016-06-20 09:14:33 檢舉

/images/emoticon/emoticon01.gif

我要留言

立即登入留言