第十四章 PROC處理程序實作第十四章 PROC處理程序實作\14-1 最簡單的Sample

14-1 最簡單的Sample

 

首先,透過PROC來實作一個簡單的Sample,就以抓取有成交的報價單(有效報價清單)為例,如下:

Step1> EEPCloud設計頁面中,在 [PROC] 右鍵,選擇【新增】,並輸入PROC的名稱。

 

 

Step2> 設計頁面出現如下的畫面,中間為設計器,會自動出現 [開始] [結束] 兩個固定的活動,設計設計頁面的左邊為 [活動工具箱],用來拖拉活動放入設計器中,右邊為活動的屬性編輯器,用來設定個活動的屬性。

Step3> 點選 [開始] 這個活動,設定Fields屬性,此用來設定傳入的變數或此PROC的某些變數的初值。如下,我們設定了一個傳入"YYYYMM"變數,內容代表 "西元年+月份",設定完畢後,[開始] 會顯示所有的變數在上面(可以自行將活動拉寬一點)

 

Step4> 從工具箱中點選 [Sql查詢] 拖拉到 [開始] [結束] 活動之間(滑鼠拖拉時必須在""的位置變成紅色時,即可放開)

接著設定 [Sql查詢]的屬性:

Title: 設定為"取得報價單",用來顯示在活動上。

CommandText: 查詢的SQL語法,如下:

SELECT 報價單號,報價日期,客戶編號,名稱,合計未稅,報價人 FROM 報價單 WHERE LEFT(CONVERT(varchar,報價日期,112),6)=@YYYYMM AND 報價單號 IN (SELECT 報價單號 FROM 出貨單 WHERE 出貨單.報價單號=報價單.報價單號 )

語法的意思是查詢有出現在出貨單的報價單號與其內容,其中@YYYYMM代表SQL中有使用到YYYYYMM這個變數,變數內容設定在Parameters屬性中。

Var: SQL查詢結果的存放變數,這裡設定"報價單"代表存到這個變數上(內有多筆資料)

Parameters: 設定SQL查詢語句裡的 '@'參數,如下:

按下【新增】一個參數成員,Name下拉可以選到SQL裡的'@'參數名稱,Var則代表要傳入的變數或內容,點選Var內容會出現以下的[Expression Editor]編輯器:

 

此編輯器的Vars會列出所有目前的變數,包括傳進來的,這裡我們選擇YYYYMM這個傳入的變數,按下【確定】即可傳回該變數。(下方的SysVars代表固定的系統變數)

 

設定完畢,如下圖: (SQL活動可以拉寬一點)

 

Step5> [取有效報價] [結束] 活動中間,拖入一個 [文件輸出] 活動,設定屬性如下:

OutputVar: 要輸出的變數內容,下拉選擇"報價單"這個變數。

OutputType: 要輸出的文件類型,可以選Excel/Word/Txt/ExcelPlate(Excel套表)/WordPlate(Word套表)/WordPlatePDF(Word套表)。這裡我們用Excel

FileNameVar: 指定輸出的文件名稱,可以用運算式來指定檔名,這裡我們設定一個新的fileName的變數,這樣代表會隨機產生一個檔名並傳回給這個fileName的變數中。

 

Step6> [結束] 這個活動中,我們選擇傳回前端這個檔案名稱,設定ReturnVar選擇剛剛的FileName變數即可。如下:

整個PROC設計完成,成果如下:

 

Step7> 接著在前端,我們在 [報價單] 表單的ToolItmes中,增加一個【有效報價單清單】按鈕,並執行以下的JS程式:

function effecQuot()

{

    $.prompt("請輸入報價單年月(YYYYMM):","",function(yyyymm) { // 輸入yyyymm變數

        $.callProc('有效報價清單',{YYYYMM:yyyymm},function(result){ //非同步呼叫PROC

            var url = '../file?q=' + result + '&n=報價清單'; // 設定下載檔案路徑

            window.open(url); //下載檔案

        });

    });

}

然後【預覽】這個 [報價單] 並執行 【有效報價單清單】按鈕,如下:

前端執行 $.prompt() 可以用來輸入一個參數,然後透過 $.callProc() 來執行後端的PROC模組,幾秒鐘後,就會透過 windows.open() 來下載這個 報價清單的Excel檔案。


 

Top of Page