top of page

工作中扮演的角色

起初進入公司實習的階段,我所扮演的角色為學習者,對於工作的環境、工具的使用一無所知,透過學習及練習所累積的經驗才漸漸的熟悉,現在我在DC2 Team中所扮演的角色除了學習者之外也成為了協助者,工作內容通常為協助正職處理網頁的修改及測試,像是改善與新增UI介面、撰寫網頁功能、處理程式非預期發生的狀況、改善SQL執行效能,修改完的項目會先自己測試後再請工程師驗證上線。

工作內容

1102學期完成進度

SYS133練習

查詢網頁

    SYS133報表是一個功能較為單純的報表,有查詢頁以及結果頁兩個頁面,主要是讓使用者從查詢頁面選擇每個欄位,然後結果頁面帶出報表來,使用者可以選擇結果頁面要顯示出哪幾個欄位,沒有選擇的則不顯示。程式碼主要修改的部分為查詢頁面的欄位內容、欄位名稱,結果頁面的欄位名稱、欄位格式(例如:標題群組)、SQL語法、資料呈現的樣式(例如:是否要有加總列、資料行的顏色)。

    SYS133的練習為選擇要顯示出來的欄位,並將QTY在最後一列加上總和、客戶欄位的顏色調成灰色。

SYS135練習

資料匯入資料庫網頁

    SYS135報表的功能是將使用者的excel檔案(資料)上傳至頁面上顯示出來,只有上傳頁一個頁面,並且匯入資料庫裡,案上傳按鈕後頁面會以表格的方式顯示出選擇的檔案裡面的內容,按下匯入資料庫後,會跳出提示視窗,顯示成功匯入幾筆資料,幾筆資料匯入失敗,如果失敗的話會顯示失敗的原因。程式碼主要修改的部分為SQL語法。

    SYS135的練習為選擇指定檔案並上傳,接著匯入指定的資料庫裡。

SYS136練習

資料CRUD網頁

    SYS136報表的功能是做資料庫的查詢、新增、編輯、刪除,有查詢頁以及結果頁兩個頁面,使用者可以在查詢頁面選擇欄位裡的資料以及要執行的動作,然後程式碼從資料庫依據使用者下達的參數撈資料,撈的資料會在結果頁面顯示出來,結果頁面上方有個工具列,可以改變要執行的動作。程式碼主要修改的部分為查詢頁面的欄位內容、欄位名稱;結果頁面的新增、修改表單。

    SYS136的練習接續著SYS135的練習,利用查詢框選擇自己的工號並進行資料的更新,還有新增資料的功能。

篩選測試的報表

報表測試前置

    這次從Visual Basic轉成C#程式語言的報表為SYS118以個叫做Standard_Rpt的底層程式,SYS118是一個較為複雜的報表,報表的功能是自動派送訂閱報表,使用者(客戶)透過新增頁面去新增設定,可以設定報表類型(WIP、Ship、良率…)、寄送頻率、收件方式(ftp、mail…) 、寄送時間…等等,然後可以利用查詢頁面選擇條件去查詢設定、派送的紀錄,查詢的結果將  在查詢結果頁面以表格的形式顯示。

    在做報表的測試之前,要先把測試的範圍縮小,以節省測試的時間,這個階段要透過資料庫去搭配使用,先找出還有在運作的報表以及它的報表ID,再去比對、分析報表跟報表之間使用者當初設定它們的屬性是否相似,如果相似的話就只要選一支報表做後續的測試就好了,篩選出有測試價值的報表,如此一來可以省去很多的測試數量。

​練習製作QlickView

​BI工具

    QlickView是一個將資料視覺化的BI(Business Intelligence)應用程式,可以將KPI(關鍵績效指標)以DashBoard的方式呈現,提供用讀者較容易懂的圖表,透過圖表幫助使用者分析資料的趨勢及走向、查看績效…等等,進而做出決策。

​    QlickView對於剛接觸的人可能會不知道如何上手,所以需要練習才會知道它的功能以及要如何繪製圖表,我照著教學的PPT一步一步的動手練習,練習之後比較能了解它的操作,也做出了幾張練習的圖表,有長條圖、折線圖、馬賽克圖、方塊圖、格線圖、雷達圖、量測計圖、漏斗圖、樞紐分析圖、連續表、組合圖。

暑假期間完成進度

SYS118報表測試

報表測試

    前面有提到因為SYS118自動派送訂閱報表的底層程式碼要從以前的Visual Basic轉成C#程式語言,所以我篩選了SYS118要測試的報表,接下來就是要去做測試,首先要把測試的環境設定好,設定測試環境分三個部分:

  1. 將要測試報表的bat檔只留下Standard_Rpt.exe的部分,剩下的功能註解掉。

  2. 到資料庫將連線設定在正式區,如果有用到PreSQL要讓它變成空包彈,避免Update到正式區的資料。

  3. 設定QAS與PRD相同的執行時間。

    設定好上述的測試環境後,再來就是等待資料產生後比對並記錄兩邊(QAS及PRD)的資料是否一致,如果遇到不一致則記錄下來回報給主管,後續將由工程師進行程式的修正,工程師將程式修改過後會放到QAS測試區,然而我將反覆測試之前有問題的報表,直到一切都正常才能將程式上線到PRD正式區,期間我總共從1200多支報表篩選並測試將近300支報表進行比對,也找出了一些資料內容的錯誤,是一件不容易需要持續力和細心的重要工作,因為攸關上線之後所呈現給客戶的報表是否正確,所以要驗證報表不能出錯。​

BQL翻寫

優化SQL效能

    在SYS118執行產生報表最為重要的要素絕對是SQL的部分,影響到了報表的內容、執行的速度……等,所以公司內部推行了一個叫做BQL的Project,BQL顧名思義是Beautiful SQL的意思,BQL的特點在於可讀性較高、較好維護、效能較好,是將原本那些效能不好、占用過多資源的SQL在查詢結果不變的條件下改寫它。

改寫SQL的方法是利用With… As…的結構來做撰寫,變成是用暫存的記憶體來儲存資料表,詳細步驟為:

(1)設定測試環境,避免影響到PRD執行。

(2)從PRD複製SQL到SQL Develop依照SA文件做修改,修改過程中都要先按F10確定效能後才可執行。

(3)將修改完的BQL放到QAS做測試比對資料。

(4)測試沒問題後撰寫上線需要的UTR文件以及REMARK文件註記BQL內各Table之間的資料類型與關係。

    暑假期間我完成了2個BQL的改寫,其中一個改寫的過程從效能花費近70萬的SQL改到8萬左右,但是結果還是沒有達到預期,後來改到1萬左右,主管說還可以更好,最後完成的效能我改到了200多,執行的時間從原本的3分鐘變成不到1秒的時間就可以撈取相同的資料;而另一個SQL的效能花費從原本的將近1萬,修改過後只剩下30。

VB翻寫成CommonTool

​底層程式現代化

    SYS118上大多數的報表都是利用呼叫工具的執行檔帶入資料庫的參數去產生報表,而有一些較早期的報表不是用上述的方式,依然是用VB的執行檔產生,經過主管的評估過後覺得可以用Common Tool做到一樣的事情,就請我熟悉Common Tool後去做翻寫,Common Tool是功能工具的統稱,包括許多功能工具像是寄送電子郵件的Emai.exe、產生多樣化報表的ReportGenetor.exe、控制Bat檔執行迴圈的BatchController……等,他們的共通點都是利用資料庫的參數讀取來達到想要的功能。

    暑假期間我完成了2個VB轉CommonTool的翻寫,過程主要是思考VB有的功能如何對應到CommonTool來實現,產生出來的報表要與VB產生出來的一致,其中一個翻寫是較單純的txt檔,用到了ReportGenetor和BatchController來實作;而另一個是寄送HTML到收件人信箱,一開始是用ReportGenetor搭配BatchController產生HTML寫在txt的檔案,信件的Body再以HTML的形式呈現,但有一個工具叫做Standard_HTML是專門用來產生HTML的,後來就改用Standard_HTML搭配BatchController的寫法來完成翻寫,完成測試後一樣要寫上線需要的UTR文件。

SMM033程式調整

修復程式

    SMM033是物料庫存管理的報表,暑假期間我總共調整了3個SMM033的項目,並再測試後撰寫上線需要的UTR文件

  1. 將錯誤訊息顯示在Alert視窗內。

  2. 在特定的情況下會導致資料匯入資料庫失敗。

  3. Session參數與其它張報表產生干擾導致報錯。

優化SYS118功能

系統優化

    SYS118內有一個叫做SplitFileSize的欄位,功能是將寄送郵件中的檔案大小做分割,我優化的部分在於將這個欄位的預設值設定成13MB(原本預設是沒帶值的),並且將會與SplitFileSize衝突的FileToBody欄位做卡控,避免造成寄出的信件內容為空白;另一部分優化了SQL欄位的字數上限從原本的3000個字元提高到32000個字元。

1111學期完成進度

SYS118功能調整

修復程式

    SYS118的功能強大,也意味著頁面很多、程式碼篇幅很大較不易維護,所以偶爾會有一些例外狀況發生,這時程式碼就必須去做調整,四下期間我調整的項目有:

  1. 當ISSUEFLAG這個參數等於V時,bat檔無法產生路徑,且ReportSQL會套用與預期不相符的內容,進而產生錯誤內容。

  2. HIGHLIGHT參數是報表在一定的時間內沒有執行會將HIGHLIGHT等級標註為A,並且OnCall及發Email給報表負責的工程師,通常是在報表狀況從關閉到被開啟時才會記錄在ErrorLog裡,提醒工程師A級的報表被開啟了,這次遇到的問題為當修改報表內容也會塞報表被開啟的ErrorLog。

  3. 當客製化報表的副檔名選擇xls檔時,SPLIT_FLAG參數會與xls檔衝突,使得報表產生錯誤的內容。

以上的錯誤問題都已經得到解決並且通過測試,等待後續工程師的驗證及上線。​

SYS118 UI及功能新增

​功能優化

    除了上述的功能調整外,我還將SYS118新增了許多功能,來提升系統操作的流暢度又或是紀錄更多相關的資訊,四下期間我新增的項目有:

  1. 新增資料庫UDT欄位功能,當使用者在SYS118的UI上操作更改報表的參數內容時,後台資料庫的UDT欄位將紀錄更改當下的系統時間,新增報表時也會記錄下當下的系統時間。為了實現這個功能,程式碼必須做大幅度的修改,必須熟透原本的程式邏輯才能進行,老實說做起來不太容易,但也很有成就感。

  2. 新增LINKMAIL的UI及功能,LINKMAIL是一個工具軟體,使用者在資料庫設定好參數後,透過bat檔呼叫執行來達成所需的功能,LINKMAIL的功能是寄送Email的內容改為網址,收件者可以透過網址下載所需的檔案(一般所寄送的Email為報表的檔案,例如.xls、.txt、.csv等)。LINKMAIL的使用者介面,並且將使用者輸入的參數儲存到資料庫。

  3. 我目前正在進行的項目是優化新增參數的介面,SYS118有一個頁面是專門做新增參數到資料庫的功能,使用者在UI上輸入想要新增的Attribute並按下送出資料庫就會新增使用者所輸入的參數。現行的頁面由於不夠直覺,對使用者不友善,所以大多數人會選擇直接到資料庫新增想要的參數,我改動的目標是要將使用者常用的Attribute預設帶入到頁面上,並加上刪除按鈕,如果沒有要用到該Attribute可以將該列刪除,這個項目對我來說也會是一個挑戰,必須熟悉GridView的用法後才能想辦法撰寫達成目標。

常用工具

Visual Studio

SQL Developer

Notepad ++

WinMerge

程式語言

HTML

C#

VB

Oracle SQL

bottom of page