top of page

整理磁碟檔案目錄

1. 目的:管理檔案擺放的位置是否正確,在使用時才能更有效率

2. 學習到:知道要如何使用dir指令將資料夾內的檔案及資料夾資訊輸出至文字檔

3. 執行步驟如下:

     Step1

     cmd內輸入cd 磁碟槽:\資料夾名稱,若是由好幾層的資料夾包覆,則可輸入cd 磁碟槽:\資料夾名稱\資料夾名稱         \資料夾名稱來查詢該資料夾的目錄​

     Step2

     進入到指定的資料夾中後,再輸入磁碟槽:\文件名稱.txt,這個指令是指將該資料夾內的目錄全部存在txt檔內, 

     以方便取用和查詢

整理機台資料並做數據分析

1. 目的:分析每一個機台拋出的指令和使用者輸入指令時,中間傳送的訊息是否正常,同時也可以分析出過程中可

     能發生那些問題
2. 學習到:第一點是要如何使用excel的篩選功能來整理龐大的資料;第二點是要如何使用樞紐分析,以及分析的功

     用和注意事項;第三點是嘗試找出各個Transaction Name從開始到結束的中間做了什麼事情和下了什麼指令
3.  執行步驟如下:
     Step1
     將txt內的資料匯入到excel,並篩選出需要的資料
     Step2
     用excel內簡單的函數,類似MID(A2,20,FIND(" TID",A2,1) -21)的方法在一個儲存格內的文字段落中取出特定的部分
     Step3
     用Transaction Name的資料做樞紐分析,可以知道每項Transaction Name執行的次數,次數的多寡除了可以看出

     機台的操作是否正常以外,同時也可以知道在分析時要以那些為主。在做樞紐分析時要先將所有要分析的的儲存

     格選起來後,點選「插入」索引標籤裡的「樞紐分析表」,並選擇放置樞紐分析表的位置在「新工作表」,雖然

     也可以選擇放在現有的工作表中,但除非原本的資料內容很少,否則為了避免雜亂,推薦的做法還是把樞紐分析

     放在新工作表。接下來,把想分析的欄位一個一個放進去,若想要分析某欄位的每個項目,可以將該欄位名稱拖

     曳至「列」的區塊,若想要請excel統計匯總或算出平均,則可以將該欄位名稱拖曳至「值」的區塊,並選擇要計

     算的公式。(執行左圖後,會出現右圖) 

​     Step4
     將原始資料內特殊的事件或是執行的程式名稱用不同的顏色標注起來,此作法的用意在於讓其他使用者在分析問

     題時可以更加清楚問題可能發生在哪裡,另一方面,主管在看分析報告時,也能更快地掌握重點
     Step5
     整理出該機台拋出的指令和使用者輸入指令時,中間傳送的訊息過程,且每個Transaction都至少要分析一次

協助整理專案中的SQL語法

1. 目的:從程式碼中,抓出裡面使用到的SQL語法和使用哪些資料表
2. 學習到:因為之前的程式都是用VB來寫的,但是隨著其他程式語言的開發,導致比較舊的語言被淘汰掉,所以必

     須用較新的語言翻寫程式,在翻寫前,若可以先將該程式中所使用到的SQL語法和資料表整理出來,在之後翻寫

     時就更加有效率

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

1. 目的:找不同站點不同機台在什麼時間做了什麼function
2. 學習到:在合併完資料表後,要注意需求中某些欄位內的資料格式跟原始資料不同,並適時的做調整

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

1. 目的:做出使用者想要的查詢畫面及篩選的資料
2. 學習到:第一點是如何將網頁的使用方法及目的,經由說明網頁的文件來理解;第二點是寫SQL語法去抓取每個使

     用者所輸入的值,同時去資料庫內撈出想要的資料

統計機台執行某個Transaction失敗的次數

1. 目的:想知道該機台在處理某個Transaction時,會出現失敗的次數以及是由哪一支程式造成的
2.  學習到:第一點是要如何使用excel的篩選功能來整理龐大的資料;第二點是當程式執行出現失敗的時候,機台應

     該要回傳一個錯誤的訊息,如果沒有出現錯誤訊息,則表示在程式執行的流程出現問題
3.  執行步驟如下:
      Step1
      使用excel內的「篩選」功能,將資料內所有為此Transaction相關的資料的找出來

     Step2
     將執行此Transaction、回傳成功訊息以及回傳錯誤訊息的部分,分別用不同的顏色做標示,此作法的用意在於讓

     其他使用者在分析問題時可以更加清楚問題可能發生在哪裡,另一方面,主管在看分析報告時,也能更快地掌握

     重點

 

 

 

 

 

 

 

 

 

 

 

 

     Step3
     將每一組動作執行的時間、執行的是哪支程式和執行時是否成功列成一個表格,方便之後做樞紐分析,樞紐分析

     可以讓其他人對分析結果一目了然
     Step4
     點選「插入」索引標籤裡的「樞紐分析表」來生成樞紐分析表:將要顯示出來的欄位放在列標籤,要計算的欄位放

     在欄標籤
 

抓取機台資料進行數據分析

1. 目的:分析某個站點、機型中的全部機台,會使用那些Transaction
2. 學習到:第一點是如何利用cmd連到其他電腦,拿取機台的資料;第二點是將全部機台Transaction中的動作擷取

     下來,以分析什麼機台會執行什麼程式
3.  執行步驟如下:
     Step1
     在cmd內輸入PING [Machine Name],這個指令表示確認電腦是否存在於公司內部網路
     Step2
     如果PING到該電腦後,再下NET USE來連線網路磁碟機,此階段若命令沒有完成,可能是該電腦沒有開機或是它

     沒有辦法用類似開一個後門的方法抓取資料,此時就要用其他方法來抓取資料
     Step3
     命令完成後,便可到該電腦的資料夾中抓取資料,並依據取得的數據,做數據分析
     Step4
     將機台Transaction中的動作擷取下來做樞紐分析,這樣可以分析哪些程式會在什麼機台中出現

Coding Standard教育訓練(1)

1. 目的:在網頁上做新增、刪除、修改或查詢的功能,且在操作中有錯誤的時候,會跳出錯誤訊息來提醒使用者做更

     改
2. 學習到:第一點是要如何更改網頁的排版以及欄位功能;第二點是要如何將SQL語法正確的放入程式碼中,還有當

     語法出現錯誤時要如何找出錯誤的方法;第三點是設定權限的重要性,在企業中會隨著職位的不同和資料機密程

     度的不同,為每個人設下不同的權限
3.  執行步驟如下:
      Step1
      更改網頁上的版面和功能,例: DropDownList內是否要顯示ALL選項、ListBox內是否要顯示ALL選項和可不可以

      多選、TestBox可輸入多行還是單行、Calendar的預設值要設成什麼形式或是CheckBoxList是否有預設勾選值

      等,優化使用介面的功能

      Step2
     在程式碼中加上SQL的語法,除了在DropDownList和ListBox中抓出某個資料表的欄位,讓使用者做選取之外,在

     按下Query之後,還要依據篩選的條件顯示資料表

 

 

 

 

 

 

 

 

 


     Step3
     篩選出來的表格要有正確的格式,包括數值在某個範圍時要變色,或是某些欄位要計算總數、個數的功能,並在

     其中一個欄位做超連結,讓使用者可以回到查詢資料表的頁面

 

 

 

 

 

 

 

 

 

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

     誤,設定權限是非常重要的

    Step5
    在新增或修改資料的時候,要先給使用者輸入資料的地方,同時為了要避免傳入的資料格式不正確或是空值,某

    一些欄位必須要做一些檢查驗證該資料是否符合格式,如果不符合的時候,就要跳出提示訊息,提醒使用者做修

    改

    Step6
    將更新、新增和刪除的SQL語法寫入程式碼中,並檢查是否正確修改到資料庫中
    Step7
    當資料確定更新、新增或刪除至資料庫中,同時也要在資料庫中更新修改者和修改時間,並顯示在網頁上

Coding Standard教育訓練(2)

1. 目的:透過網站上傳excel,同時系統還可以幫忙做儲存格資料的簡易檢查
2. 學習到:第一點是要如何經由網頁匯入資料表至資料庫;第二點是要如何在網頁上做資料的即時更新
3 . 執行步驟如下:
      Step1
     寫一個迴圈取出excel內每一格儲存格的資料,進行資料的驗證,記得SQL欄位名要和上傳的excel一樣,才會抓到

     整確的資料

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

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

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

 

根據使用者的需求更改網頁內容

1. 目的:增加使用者篩選的欄位和資料表顯示的欄位

2. 學習到:網頁修改的技術方面,因為在之前教育訓練時已經學過,因此在修改時比較沒有難度,但是還是從這次的

    工作中學到了註解的重要性,因為網頁會經過不斷的修改以達到客戶不同時期的需求,所以每一次的修改都必須

    要在修改後的地方,再加上什麼時間什麼人修改了哪些地方,這樣不論是在之後的維護或是其他人要修改時,都

    可以更有效率、更清楚的找到要修改的部分
3. 執行步驟如下:
    Step1
    根據需求將網頁做修改,修改時可以先在本機端做更改並測試
    Step2
    確定測試成功後,再將更改的內容和部分做註解,以便於之後其他人在看程式碼時,能夠更加清楚

 

 

 

 


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

根據使用者的需求更新資料庫的資料以及篩選條件的卡控條件

1. 目的:由於資料庫的數據太過龐大,若沒有要求使用者一定要輸入部分條件,則會導致此網頁整個當掉,因此必須

     要卡控使用者輸入的條件

2.  學習到:第一點是卡控條件轉換成程式碼並不難,但是在寫之前必須要先想好邏輯是否符合要求;第二點是要如何

     更新資料庫內的資料,因為在更新的時候常常會更新不進去,因此要下中斷點來找錯誤的地方;第三點是資料只

     能取三天之內的,因此要找到可以將textBox內的時間取出,並從文字的型態轉換成日期的型態,再做相減以確定

     是否在三天之內

3. 執行步驟如下:
     Step1
     在要請使用者輸入條件的情況下,用跳出小視窗的提示訊息,來提醒使用者要輸入條件,且出現不同情況時,要

     出現不同的提示訊息

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

     息,且在他按下確定後寫入資料庫
     Step3
     將測試完成的程式碼,放置與正式環境相似的測試環境做測試,確定沒有問題之後,才能正式上線

 

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

1.  目的:在新增(Insert)或修改(Update)時,若使用者輸入的值不符合某項標準時,除了不能繼續執行下一個步驟之

      外,同時也要提醒使用者用標準的形式重新輸入
2.  學習到:要如何設定跳出訊息和當出現不同的問題時過濾條件的優先順序
3.  執行步驟如下:
     Step1
     先判斷使用者是否有輸入值,若沒有則跳出請輸入該欄位的訊息 (請輸入XXX)

     Step2
    確定有輸入值後,再判斷輸入的值中是否有空格或特殊的字元,若有出現則要跳出相對應的訊息 (XXX cannot

     have spaces!或是 XXX必須輸入數字、大寫字母或是特定符號(- 或 _)! )
 

     Step3
     除了以上的卡控之外,若是要換行輸入也是不可以的,但是由於其本來的設定就為單行輸入,因此不用更改程式

     碼,但是在做測試報告時,要測試若是將有換行的字串複製並貼上後,是否會有影響,以此專案來說,它只會剩

     下第一行的字串,因此不會影響其卡控。以下為過濾欄位的程式碼:
 

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

1. 目的:在查詢(Query)資料時,若使用者在此欄位選擇的值為ALL,則要將此欄位所有的資料都顯示出來
2. 學習到:要先清楚此功能與程式碼中的那些部分有關,並在原先有的條件或變數中做修改,同時也要多做測試,以

     確保在各種情況下都能正常運作
3. 執行步驟如下:
     Step1
     先在抓取此DropDownList的程式碼中手動塞入ALL的選項

     Step2
     在做查詢(Query)時,要確保在選擇此選項時,不會抓取到該條件,因為ALL選項其實就相當於空值,不用做其他

     動作
 

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

1. 目的:在新增(Insert)或修改(Update)時,若其中兩個欄位所選取的值不相同時,就要跳出此Panel,並詢問使用者是

     否要變更,若按下確定則將資料新增(Insert)或修改(Update)至資料庫;若按下取消則不對此筆資料做更動
2. 學習到:通常在寫此功能時,第一個會想到的其實是使用MessageBox來顯示,但是由於公司內部所使用的

     MessageBox不同於一般我們使用的形式,因此不能用比較常見的寫法,但也是因為如此我才學習到可以使用

     Panel的方式來顯示此訊息,並達到和MessageBox一樣的效用
3.  執行步驟如下:
     Step1
     先至設計頁拉出一個Panel並將要使用的物件都拉到此Panel中,因為Panel一開始應該是沒有顯示的狀態,因此

     要在其初始值的地方將它的Visible屬性改為false,直到使用者按下新增(Insert)或修改(Update)時,才依條件判斷

     是否要顯示出來
     Step2
     判斷兩個欄位是否相等,再決定是否要顯示此Panel,假設兩個欄位的值不相同,則要顯示Panel在下圖的紅色框

     框中,讓使用者做選擇

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

網頁修改---新增權限

1. 目的:新增一個權限,當開啟此權限時,該使用者除了可以執行一般的查詢(Query)功能之外,同時還增加了修改

     (Update)的功能
2.  學習到:每個企業會因為人員不同的職等和部門,決定有哪些人可以有最大的權限,同時又有哪些人只能被給予最

     低的權限,因此無論是在使用哪個系統或網頁時,都會依據每個人的需要開給他們不同的權限
3.  執行步驟如下:
      Step1
     先引入公司內部限制權限的寫法,以便配合公司的權限設定

     Step2
     當此權限被開啟之後,該使用者便可修改(Update)資料,但在修改(Update)時,只有Status為Normal的那幾筆資

     料才能被更改,此時便可以使用方程式判斷該筆資料是否為可修改(Update),如果可以才會顯示修改的按鈕讓使

     用者進行修改。

     以下為判斷資料的方程式和執行結果:
 

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

1.  目的:在查詢(Query)資料時,可以選擇時間欄位的格式,若是有勾選此項目,則時間欄位就以正常時間格式顯示,

      這樣就可以直接做運算分析,節省其他部門還要轉換格式的時間;若是沒有勾選此項目,時間欄位則不做更改,

      就以資料庫內的形式呈現
2.  學習到:轉換時間格式是要在SQL抓取資料時就做好轉換,但是在轉換的過程中卻一直出現問題,一開始我是使用

      to_date將時間做轉換,但是卻一直出現格式不正確的錯誤,後來才發現因為用to_date轉換時間後,資料庫會將

      其視為時間格式,但是因為原本欄位是字串格式,因此要再用to_char將時間格式轉為字串格式
3.  執行步驟如下: 
      Step1
      在查詢(Query)頁先新增勾選時間是否要更改格式的欄位

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

     時間欄位要更改為可以計算的一般時間格式
 

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

1. 目的:為了直接抓取資料庫內的資料放到網頁上的DropDownList中,要將原本串在一起的四個值,經由用特殊符號

     切割的方式,將此字串分為四個獨立的字串,便可讓使用者選擇自己想要的值
2. 學習到:要如何使用SQL的特殊語法將一個字串做切割,且其切割的方法不只一種,我是使用REGEXP_SUBSTR()

     這個方程式切割出我要的字串,在將其列成一個清單的樣子,我覺得要找到切割的方法並不難,但是要找到可以

     切割字串同時又可以使用於公司的方法,才是我覺得比較需要學習的部分
3.  執行步驟如下:
     Step1
     先上網查詢有沒有相似的切割方法,以下是我找到相關網頁的資訊

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

 

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

1. 目的:在新增(Insert)資料時,如果有一筆資料的KEY值重複,則會被視為同一筆資料,此時就必須要跳出不讓使用

    者輸入的訊息,因為一旦有兩筆資料的KEY值相同則會違反資料庫中KEY值不可重複的規定
2. 學習到:一開始我原本想說可以抓SELECT出來資料的筆數,但是我後來發現因為我是抓出資料的筆數放在NUM成

    為這個欄位的值,因此不管我怎麼計算我SELECT出來的資料筆數都會只有一筆(如下圖),最後我才明白其實我應

    該要直接抓NUM欄位中的值,才知道資料是否重複

3.  執行步驟如下:
     Step1
     先將資料筆數抓出存放在一個變數,再取出COUNT數(也就是NUM的值)
     Step2
     用NUM的值去判斷是否有撈到重複資料

 

網頁修改--- 新增修改紀錄

1. 目的:在修改(Update)主資料表時,除了要對該資料做修改(Update)之外,同時也要對另一個紀錄修改的資料表做

     新增(Insert)的動作,這樣可幫助他人若想知道修改資料的人員和相關訊息時,就可以到這個資料表做查詢
2.  學習到:若要對同一個資料表SELECT出不同的結果,要先開一個額外連線,因為一個連線只能有一組SQL,在開

     完連線後,就可以依據自己想要找的條件搜出該筆資料,對應相同的欄位便可以將資料抓出來存在要紀錄修改的

     資料表
3.  執行步驟如下:
     Step1
     開啟額外連線,輸入想要查詢的資料條件以得到想要的資料
     Step2
     將要新增(Insert)到修改紀錄資料表的欄位抓出來,並新增至資料表中

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

1. 目的:在選擇Current或History之後,下方的欄位會依據個別的需求出現不一樣的欄位數量,且當輸入完查詢條件

     後,也會依據不同的資料表抓出不同的數據
2. 學習到:要如何在一個頁面上跳轉不同的畫面,若RadioButton的選項較少,可以使用if...else的方式來做區分;若

     RadioButton的選項較多,則可以使用switch...case的方式來區分不同的選項所要呈現的畫面
3. 執行步驟如下:
     Step1
    先將個別不同的RadioButton所要呈現的查詢(Query)頁面整理好,並用switch…case的方法分開書寫,如果有一樣

     要呈現的欄位則可以放在此方程式外

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

 

網頁修改--- 限制查詢時間不能大於三天

1. 目的:因為這個網頁要查詢(Query)的資料太過龐大,常常會導致整個網頁的查詢(Query)時間過長而無法查詢成功,

     因此要限制使用者在使用時一定要輸入正確的條件和時間範圍
2.  學習到:因為公司內部底層還有許多自己寫的程式,因此要抓取日曆時間的方法,跟一般所使用的方法不太相同,

     要使用ParseExact()函式才能抓取
3.  執行步驟如下:
     Step1
     先用ParseExact()將開始時間和結束時間抓出來並存在DateTime的類別中
     Step2
     判斷結束時間減掉開始時間,如果大於三則檢查不通過

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

1. 目的:當使用者在新增(Insert)資料時,要將某個欄位跟另一個資料表的欄位做比對,只有在輸入的值存在這個資料

     表時才能將其新增(Insert)進去,這樣才不會將錯誤的髒資料輸入至資料表
2. 學習到:在做比對之前,要先把原本欄位中的所有值都存進Dictionary裡,並給每一個Value都新增一個Key值,在

     做比對時可以使用名稱.ContainsValue(比對字串)的方式找出該Dictionary中是否有相同的值,若有相同的值則可

     以將資料新增(Insert)進去,若沒有相同的值則不能將資料新增(Insert)進去
3.  執行步驟如下:
      Step1
      將此欄位的清單先藉由Dictionary的方式從資料庫中把值一一抓入,並依序放置Dictionary中,以等待新增資料時

      驗證使用
      Step2
      用ContainsValue() 這個函式去判斷要新增(Insert)的這個值是否出現在Dictionary的清單中,如果沒有則跳出錯誤

      且無法新增(Insert)資料

bottom of page