首先,透過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檔案。
Related Topics