top of page

PROJECTS

Project | 01
Project | 01  整理磁碟檔案目錄
 
        因為公司的檔案非常多,使用的人也比較繁雜,因此有時候會有一些檔案放在錯誤的資料夾,這時管理檔案擺放的位置是否正確,能夠讓使用者在使用時才能更有效率​。
 
Step1
在cmd裡抓取某資料夾的目錄,並將其儲存為一個txt檔
Step2
將每個資料夾內的目錄整理至excel內
Project | 02
Project | 02 整理機台資料並做數據分析

       為了適時地掌握機台的穩定,因此要分析每一個機台拋出的指令和使用者輸入指令時,中間傳送的訊息是否正常,同時也可以分析出過程中可能發生那些問題。

Step1

txt內的資料匯入到excel,並篩選出需要的資料

Step2

excel內簡單的函數,類似MID(A2,20,FIND(" TID",A2,1) -21)的方法在一個儲存格內的文字段落中取出特定的部分

 

Step3

Transaction Name的資料做樞紐分析,可以知道每項Transaction Name執行的次數,次數的多寡除了可以看出機台的操作是否正常以外,同時也可以知道在分析時要以那些為主。在做樞紐分析時要先將所有要分析的的儲存格選起來後,點選「插入」索引標籤裡的「樞紐分析表」,並選擇放置樞紐分析表的位置在「新工作表」,雖然也可以選擇放在現有的工作表中,但除非原本的資料內容很少,否則為了避免雜亂,推薦的做法還是把樞紐分析放在新工作表。接下來,把想分析的欄位一個一個放進去,若想要分析某欄位的每個項目,可以將該欄位名稱拖曳至「列」的區塊,若想要請excel統計匯總或算出平均,則可以將該欄位名稱拖曳至「值」的區塊,並選擇要計算的公式。(執行左圖後,會出現右圖)

Step4

將原始資料內特殊的事件或是執行的程式名稱用不同的顏色標注起來,此作法的用意在於讓其他使用者在分析問題時可以更加清楚問題可能發生在哪裡,另一方面,主管在看分析報告時,也能更快地掌握重點

Step5

整理出該機台拋出的指令和使用者輸入指令時,中間傳送的訊息過程,且每個Transaction都至少要分析一次

Project | 03
Project | 03 協助整理專案中的SQL語法

       由於之前的程式都是用VB來寫的,但是隨著其他程式語言的開發,導致比較舊的語言被淘汰掉,所以必須用較新的語言翻寫程式,在翻寫前,若可以先將該程式中所使用到的SQL語法和資料表整理出來,在翻寫時就能更加有效率。

Project | 04
Project | 04 依照想要找出的資料合併資料表

       每個站點都有許多不同的機台,因此在做分析時可以先找出不同站點、不同機台在什麼時間做了什麼動作(function)。在合併完資料表後,要注意需求中某些欄位內的資料格式跟原始資料不同,並適時的做調整。

Project | 05
Project | 05 在原有網頁中新增查詢的欄位

      每個網頁都會因為使用者未來的需要,進而增加更改網站內容的需求,因此在為網頁進行修改時,要想辦法做出使用者想要的查詢畫面及篩選的資料,以達到使用最優化的目的,同時,也要經由說明原有網頁的文件來理解這個網頁的使用方法和目的。

Project | 06
Project | 06 統計機台執行某程式失敗次數

       為了要知道是那些程式在執行時發生錯誤,導致執行失敗,因此要抓出該機台在處理Transaction時,會出現失敗的次數以及是由哪一支程式造成的,找到問題點後才能有效的解決問題。

Step1

excel內的「篩選」功能,將資料內所有為此Transaction相關的資料的找出來

Step2

Transaction、回傳成功訊息以及回傳錯誤訊息的部分,分別用不同的顏色做標示,此作法的用意在於讓其他使用者在分析問題時可以更加清楚問題可能發生在哪裡,另一方面,主管在看分析報告時,也能更快地掌握重點

Step3

將每一組動作執行的時間、執行的是哪支程式和執行時是否成功列成一個表格,方便之後做樞紐分析,樞紐分析可以讓其他人對分析結果一目了然

Step4

點選「插入」索引標籤裡的「樞紐分析表」來生成樞紐分析表:將要顯示出來的欄位放在列標籤,要計算的欄位放在欄標籤

Project | 07
Project | 07 抓取機台資料再進行數據分析

​       每個站點都有不同機種,而每個機種都有不同的機台,因此要先選定分析的是那些機台,確定之後再連結到該電腦擷取資料,確定資料完整後,就選取數據量最大的一天來做數據分析(如project 2)。

Step1
在cmd內輸入PING [Machine Name],這個指令表示確認電腦是否存在於公司內部網路


Step2
如果PING到該電腦後,再下NET USE來連線網路磁碟機,此階段若命令沒有完成,可能是該電腦沒有開機或是它沒有辦法用類似開一個後門的方法抓取資料,此時就要用其他方法來抓取資料


Step3
命令完成後,便可到該電腦的資料夾中抓取資料,並依據取得的數據,做數據分析


Step4
將機台Transaction中的動作擷取下來做樞紐分析,這樣可以分析哪些程式會在什麼機台中出現

Project | 08
Project | 08 Coding Standard教育訓練(1)

       在公司寫網頁時,因為通常會有許多工程師維護一個專案,因此在寫網頁時也必須要有一定的標準,也就是說,除了在網頁加上新增、刪除、修改或查詢的功能,同時也要符合一定的規範,另一方面,為了讓使用者有更好的回饋,在使用者操作有成功或錯誤的時候,要跳出訊息來提醒使用者。

Step1

更改網頁上的版面和功能,例: DropDownList內是否要顯示ALL選項、ListBox內是否要顯示ALL選項和可不可以多選、TestBox可輸入多行還是單行、Calendar的預設值要設成什麼形式或是CheckBoxList是否有預設勾選值等,優化使用介面的功能

 

 

 

 

 

 

 

Step2

SQL的語法,除了在DropDownList和ListBox中抓出某個資料表的欄位,讓使用者做選取之外,在按下Query之後,還要依據篩選的條件顯示資料表

 

Step3

篩選出來的表格要有正確的格式,包括數值在某個範圍時要變色,或是某些欄位要計算總數、個數的功能,並在其中一個欄位做超連結,讓使用者可以回到查詢資料表的頁面

 

Step4

在做更新、新增和刪除之前,要先設定可以更新、新增和刪除者的權限,為了要讓資料不被任意更改導致資料錯誤,設定權限是非常重要的

 

Step5

在新增或修改資料的時候,要先給使用者輸入資料的地方,同時為了要避免傳入的資料格式不正確或是空值,某一些欄位必須要做一些檢查驗證該資料是否符合格式,如果不符合的時候,就要跳出提示訊息,提醒使用者做修改

Step6

將更新、新增和刪除的SQL語法寫入程式碼中,並檢查是否正確修改到資料庫中

 

Step7
當資料確定更新、新增或刪除至資料庫中,同時也要在資料庫中更新修改者和修改時間,並顯示在網頁上

Project | 09
Project | 09 Coding Standard教育訓練(2)

       公司裡常常會有大量數據需要匯入資料庫,而最常見的方法就是透過網站上傳Excel,除了可以快速且有效的達到目標,同時系統還可以幫忙做儲存格資料的簡易檢查,一旦發現Excel內的資料有不符合的地方,則會出現錯誤訊息並阻止上傳。

Step1

寫一個迴圈取出excel內每一格儲存格的資料,進行資料的驗證,記得SQL欄位名要和上傳的excel一樣,才會抓到整確的資料
 

Step2
要匯入資料庫前,要先確定資料庫的連線有打開,且一旦匯入完成後,就要關閉資料庫連線,否則會耗用資料庫的資源,影響效能


Step3
匯入資料庫時,若上傳成功則要顯示成功上傳;若上傳失敗除了要顯示上傳失敗之外,其他全部的資料也不可更新


Step4
當資料確定新增至資料庫中,同時也要更新上傳時間以及上傳者

Project | 10
Project | 10 網頁修改---根據使用者需求更改網頁內容

       隨著公司內部關注的方面不同,有些查詢資料的網頁會被要求增加更多的欄位篩選條件或是篩選出來資料的顯示欄位, 此時就可以運用到之教育訓練所學到的知識,來篩選出想要的資料,同時程式碼也符合Coding Standard。

Step1
根據需求將網頁做修改,修改時可以先在本機端做更改並測試


Step2
確定測試成功後,再將更改的內容和部分做註解,以便於之後其他人在看程式碼時,能夠更加清楚
 

 

 

 

Step3
將測試完成的程式碼,放置與正式環境相似的測試環境做測試,確定沒有問題之後,才能正式上線

Project | 11
Project | 11 網頁修改---更新資料和篩選的卡控條件

       由於這個網頁在做查詢時,要篩選的資料量非常大,常常導致網頁和資料庫的負擔太大,因此就要增加使用者在查詢時的篩選條件,強制使用者在篩選資料時,一定要下一些條件,讓資料量變小,就能改善這個網頁的使用。

Step1

在要請使用者輸入條件的情況下,用跳出小視窗的提示訊息,來提醒使用者要輸入條件,且出現不同情況時,要出現不同的提示訊息,同時也要卡控時間不能超過三天

 

 

 

 

 

 

 

 

Step2
當使用者想要更改資料庫的內容時,若他輸入的格式不正確或是沒有輸入值的時候,也要跳出小視窗做提示訊息,且在他按下確定後寫入資料庫
 

Step3
將測試完成的程式碼,放置與正式環境相似的測試環境做測試,確定沒有問題之後,才能正式上線
 

暑期完成進度

Project | 12
Project | 12 網頁修改---過濾欄位是否空白、有空格或特殊字元等

       在新增(Insert)或修改(Update)時,若使用者輸入的值不符合某項標準時,除了不能繼續執行下一個步驟之外,同時也要提醒使用者用標準的形式重新輸入,這讓我學到要如何設定跳出訊息和當出現不同的問題時過濾條件的優先順序。

Step1

先判斷使用者是否有輸入值,若沒有則跳出請輸入該欄位的訊息 (請輸入XXX)

Step2

確定有輸入值後,再判斷輸入的值中是否有空格或特殊的字元,若有出現則要跳出相對應的訊息 (XXX cannot have spaces!或是必須輸入數字、大寫字母或是特定符號(- 或 _)! )

Step3
除了以上的卡控之外,若是要換行輸入也是不可以的,但是由於其本來的設定就為單行輸入,因此不用更改程式碼,但是在做測試報告時,要測試若是將有換行的字串複製並貼上後,是否會有影響,以此專案來說,它只會剩下第一行的字串,因此不會影響其卡控。以下為過濾欄位的程式碼:

Project | 13
Project | 13 網頁修改---在原本的欄位中新增All選項 

 

        在查詢(Query)資料時,若使用者在此欄位選擇的值為ALL,則要將此欄位所有的資料都顯示出來,因此要先清楚此功能與程式碼中的那些部分有關,並在原先有的條件或變數中做修改,同時也要多做測試,以確保在各種情況下都能正常運作​。

Step1

先在抓取此DropDownList的程式碼中手動塞入ALL的選項

Step2

確定有輸入值後,再判斷輸入的值中是否有空格或特殊的字元,若有出現則要跳出相對應的訊息 (XXX cannot have spaces!或是必須輸入數字、大寫字母或是特定符號(- 或 _)! )

Project | 14
Project | 14 網頁修改---利用Panel跳出對話框讓使用者選擇

 

        在新增(Insert)或修改(Update)時,若其中兩個欄位所選取的值不相同時,就要跳出此Panel,並詢問使用者是否要變更,若按下確定則將資料新增(Insert)或修改(Update)至資料庫;若按下取消則不對此筆資料做更動,通常在寫此功能時,第一個會想到的其實是使用MessageBox來顯示,但是由於公司內部所使用的MessageBox不同於一般我們使用的形式,因此不能用比較常見的寫法,但也是因為如此我才學習到可以使用Panel的方式來顯示此訊息,並達到和MessageBox一樣的效用。

Step1

先至設計頁拉出一個Panel並將要使用的物件都拉到此Panel中,因為Panel一開始應該是沒有顯示的狀態,因此要在其初始值的地方將它的Visible屬性改為false,直到使用者按下新增(Insert)或修改(Update)時,才依條件判斷是否要顯示出來

Step2

判斷兩個欄位是否相等,再決定是否要顯示此Panel,假設兩個欄位的值不相同,則要顯示Panel在下圖的紅色框框中,讓使用者做選擇

以下為判斷Panel是否執行的程式碼:

Project | 15
Project | 15 網頁修改---新增權限

 

       新增一個權限,當開啟此權限時,該使用者除了可以執行一般的查詢(Query)功能之外,同時還增加了修改(Update)的功能,由於每個企業會因為人員不同的職等和部門,決定有哪些人可以有最大的權限,同時又有哪些人只能被給予最低的權限,因此無論是在使用哪個系統或網頁時,都會依據每個人的需要開給他們不同的權限​。

Step1

先引入公司內部限制權限的寫法,以便配合公司的權限設定

Step2

當此權限被開啟之後,該使用者便可修改(Update)資料,但在修改(Update)時,只有Status為Normal的那幾筆資料才能被更改,此時便可以使用方程式判斷該筆資料是否為可修改(Update),如果可以才會顯示修改的按鈕讓使用者進行修改。以下為判斷資料的方程式和執行結果:

Project | 16
Project | 16 網頁修改---增加選擇時間格式的欄位

 

       在查詢(Query)資料時,可以選擇時間欄位的格式,若是有勾選此項目,則時間欄位就以正常時間格式顯示,這樣就可以直接做運算分析,節省其他部門還要轉換格式的時間;若是沒有勾選此項目,時間欄位則不做更改,就以資料庫內的形式呈現,這讓我學到轉換時間格式是要在SQL抓取資料時就做好轉換,但是在轉換的過程中卻一直出現問題,一開始我是使用to_date將時間做轉換,但是卻一直出現格式不正確的錯誤,後來才發現因為用to_date轉換時間後,資料庫會將其視為時間格式,但是因為原本欄位是字串格式,因此要再用to_char將時間格式轉為字串格式​。

Step1

在查詢(Query)頁先新增勾選時間是否要更改格式的欄位

Step2

在判斷此欄位是否有勾選後,並決定要執行以下哪一段SQL,若沒有被勾選則時間欄位不做更改;若有被勾選則時間欄位要更改為可以計算的一般時間格式

Project | 17
Project | 17  網頁修改--- 將資料庫內的資料做分割

 

        為了直接抓取資料庫內的資料放到網頁上的DropDownList中,要將原本串在一起的四個值,經由用特殊符號切割的方式,將此字串分為四個獨立的字串,便可讓使用者選擇自己想要的值,而要如何使用SQL的特殊語法將一個字串做切割,且其切割的方法不只一種,我是使用REGEXP_SUBSTR()這個方程式切割出我要的字串,在將其列成一個清單的樣子,我覺得要找到切割的方法並不難,但是要找到可以切割字串同時又可以使用於公司的方法,才是我覺得比較需要學習的部分。

Step1

先上網查詢有沒有相似的切割方法,以下是我找到相關網頁的資訊

​(​參考資料: https://www.twblogs.net/a/5d5f3facbd9eee541c328fb1)

Step2

將此方法用於我自己要使用的資料表,以下為切割的程式碼

Project | 18
Project | 18  網頁修改--- 在新增資料時判斷此筆資料是否存在

        在新增(Insert)資料時,如果有一筆資料的KEY值重複,則會被視為同一筆資料,此時就必須要跳出不讓使用者輸入的訊息,因為一旦有兩筆資料的KEY值相同則會違反資料庫中KEY值不可重複的規定,一開始我原本想說可以抓SELECT出來資料的筆數,但是我後來發現因為我是抓出資料的筆數放在NUM成為這個欄位的值,因此不管我怎麼計算我SELECT出來的資料筆數都會只有一筆(如下圖),最後我才明白其實我應該要直接抓NUM欄位中的值,才知道資料是否重複。

Step1

先將資料筆數抓出存放在一個變數,再取出COUNT數(也就是NUM的值)

Step2

用NUM的值去判斷是否有撈到重複資料

Project | 19
Project | 19  網頁修改--- 新增修改紀錄

 

        在修改(Update)主資料表時,除了要對該資料做修改(Update)之外,同時也要對另一個紀錄修改的資料表做新增(Insert)的動作,這樣可幫助他人若想知道修改資料的人員和相關訊息時,就可以到這個資料表做查詢,而若要對同一個資料表SELECT出不同的結果,要先開一個額外連線,因為一個連線只能有一組SQL,在開完連線後,就可以依據自己想要找的條件搜出該筆資料,對應相同的欄位便可以將資料抓出來存在要紀錄修改的資料表。

Step1

開啟額外連線,輸入想要查詢的資料條件以得到想要的資料

Step2

將要新增(Insert)到修改紀錄資料表的欄位抓出來,並新增至資料表中

Project | 20
Project | 20  網頁修改--- 根據RadioButton做頁面跳轉和不同的查詢

 

        在選擇Current或History之後,下方的欄位會依據個別的需求出現不一樣的欄位數量,且當輸入完查詢條件後,也會依據不同的資料表抓出不同的數據。要如何在一個頁面上跳轉不同的畫面,若RadioButton的選項較少,可以使用if...else的方式來做區分;若RadioButton的選項較多,則可以使用switch...case的方式來區分不同的選項所要呈現的畫面。

Step1

先將個別不同的RadioButton所要呈現的查詢(Query)頁面整理好,並用switch…case的方法分開書寫,如果有一樣要呈現的欄位則可以放在此方程式外

 

 

 

 

 

 

 

 

 

 

 

Step2

個別不同RadioButton的Result頁面資料結果也可以用switch…case做區分

Project | 21
Project | 21  網頁修改--- 新增值的時候檢查欄位是否存在

 

        當使用者在新增(Insert)資料時,要將某個欄位跟另一個資料表的欄位做比對,只有在輸入的值存在這個資料表時才能將其新增(Insert)進去,這樣才不會將錯誤的髒資料輸入至資料表,在做比對之前,要先把原本欄位中的所有值都存進Dictionary裡,並給每一個Value都新增一個Key值,在做比對時可以使用

名稱.ContainsValue(比對字串)的方式找出該Dictionary中是否有相同的值,若有相同的值則可以將資料新增(Insert)進去,若沒有相同的值則不能將資料新增(Insert)進去。

Step1

將此欄位的清單先藉由Dictionary的方式從資料庫中把值一一抓入,並依序放置Dictionary中,以等待新增資料時驗證使用

Step2

用ContainsValue() 這個函式去判斷要新增(Insert)的這個值是否出現在Dictionary的清單中,如果沒有則跳出錯誤且無法新增(Insert)資料

bottom of page