首先,透過PROC來實作一個簡單的Sample,就以抓取有成交的報價單(有效報價清單)為例,如下:
Step1>EEPCloud設計頁面中,在 [PROC] 右鍵,選擇【新增】,並輸入PROC的名稱。
Step2>設計頁面出現如下的畫面,中間為設計器,會自動出現 [開始] 與 [結束] 兩個固定的活動,設計設計頁面的左邊為 [活動工具箱],用來拖拉活動放入設計器中,右邊為活動的屬性編輯器,用來設定個活動的屬性。
Step3>點選[開始]這個活動,設定Items屬性,此用來設定傳入的變數或此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