2022年7月6日 星期三

文字靠左,數字靠右,日期擺中間

一天在寫程式時,同事走到我的位置問我: 在DataGridView 裡的 Cell 資料我都怎麼安排它們的顯示格式?

我順口說出:文字靠左,數字靠右,日期擺中間。

沒錯,數字往右靠齊,字串也都固定靠左,至於日期,有的人習慣靠左也有人習慣讓它靠右,我則是習慣讓它靠中間,這樣電腦資料裡的三大種類資料各有其顯示格式,使用者一看畫面就可知道這資料是什麼格式了,個人覺得非常適切。 

2022年6月7日 星期二

看ERP 裡的SQL寫法就知道他是不是菜鳥了

 


今天在公司上班時,透過視線看著剛來公司的年輕小明寫SQL,他的座位剛好在我的斜前方,所以筆者

的位置可以很清楚地看見他整個螢幕畫面文字。此時他正在寫一段SQL,這SQL 裡的 TABLE 有20個欄位(column)只見他把這20幾個欄位分成上下2列,橫著把Columns 一個一個列出來。從這佈局動作,我就知道他是剛寫SQL程式菜鳥。

大家都知道,SQL Columns 佈局寫法,簡單說就分橫式和直式2種寫法。

先說明一下,所謂SQL 橫式和直式寫法差別,請看以下範例:

橫式Columns 佈局寫法
SELECT Column1,Column2,Column3 
From Table1
Where Column1 = Something


直式Columns 佈局寫法(豆號一定要在左邊)
SELECT Column1
            ,Column2
           ,Column3 
From Table1
Where Column1 = Something

從以上的範例就可看到二者差別就在Column (欄) 是往右邊發展還是往下發展

Long Long Time Ago. 記得筆者是剛學SQL 程式的菜鳥,那時還沒網際網路,要學程式語言或SQL就是買書來看。那時SQL 書籍大部份教學範例都是橫式的(當然也有部份是直式的),所以,我那時寫的SQL順里成章也是橫式的,用此方式寫SQL字串最大的優點是雙引號會用的比較少(前後只要2個)。

出了社會寫過上千支SQL,發覺最困難不是寫SQL ,而是找出SQL裡的錯誤,要能快速找出問題所在,並給予修正。但橫式寫法裡Table Column 一堆擠在一起,有錯誤要一個一個刪除(或暫時移除)除錯非常麻煩且耗時,但那時還沒有知識要改成直式寫法(現在有網路真的太方便了)。這情形直到筆者換工作後接手維護新公司的系統程式後,看到程式裡面前輩SQL 直式寫法才恍然大悟,我弄錯方法了。

從此,我程式中的SQL 字串就改為直式寫法,在debug SQL時,可方便將有疑問 Column 註解(或暫時移除)方便除錯,這是此直式寫法的最大優點。也許有讀者會說:SQL 用直式寫法太麻煩了,要不斷地用Enter鍵將Column 移到下一行,又要排列整齊,耗時又耗工,沒有效率。老手與新手最大的差別就是在有沒有善用工具來創造自己寫程式的效能。現在網路有一些網站可協助我們程式設計師來改善修飾SQL 排版,只要在Google 打關鍵字 「SQL Formatter 」就會出現一堆網站協助程式設計師改善排版。

這邊筆者推薦一個網站 https://poorsql.com/ , 這網站的線上工具可以將沒有格式化的SQL轉換成 beautifier Code 變成直式排版格式的SQL,最重要轉換出來的豆號是在Column 名的左邊,符合我寫SQL的習慣,因此,因此,筆者常用此網站來轉換我的程式中的SQL,節省我相當多的時間。有興趣讀者也可自行參考其他類似的線上轉換工具的網站,找出符合自己習慣的SQL格式轉換工具。

最後說明一下,使用橫式寫法的SQL 設計師也是有老鳥且大師級的程式設計師,說菜鳥非絕對論。


2022年6月1日 星期三

電腦一直重複開機解法

今天早上上班一坐下辦公位置就接到現場打電話來說:某區的電腦開機後一直重複開關機,無法使用。

到現場查看這台電腦,它的症狀就是按下開關後嗶一聲開機後斷電 再嗶一聲開機後又斷電關機。

這問題現場無法解決,就把這台電腦抱回辦公室(這主機真重,有牌電腦主機雖貴但真材實料),放上維修台,先打開機蓋看,哇!都是灰塵,裡面主機板,磁碟機等都佈滿了一層灰塵。

看到這個就可初步判斷機台故障是灰塵問題造成的,可能這幾天現場加裝鐵柱,工入施工打磨鐵柱時有細小鐵粉灰塵飄到電腦主機內造成主機板或Power電源短路。

用噴氣槍噴主機板,電源供應器(這重點,多噴幾下),CPU 風扇,拆下記憶體,把記憶體插槽也噴一下。

噴完主機零件後再全部裝回去,再試開主機電源看看,果然電腦在嗶一聲後,畫面就到Windows 開機畫面了。


結案,送回主機。


2022年5月31日 星期二

用一段C#程式將18AA變成AA18

 C#程式技巧
18AA -->AA18
用一段C#程式將18AA變成AA18

注意:前面的數字會變,有可能是3位數,如180AA,也有可能是4位數,如2200AA 等,後面的英文字母則不變。

上班時遇到的案例,AA是品牌,是固定2個字元,18是流水號,現在因生產須要,要將2者交換
我想了很多複雜方式,且要寫一堆程式。

後來想到用replace 這個指令,全部只要一行C#程式即可完成此需求

string s1 = "18AA";
s1 = s1.Substring(s1.Length - 2, 2) + s1.Replace(s1.Substring(s1.Length - 2, 2), "");//就這一行

程式說明:
抓右邊2個字元(即AA) + (抓右邊2個字元並用空白取代它,只剩下18字元) 。2個字串再相加就OK了

2017年3月20日 星期一



趣味英文

      趁著228連假日至中部某一風景遊樂區內,漫步走到一水池旁,看著池邊的鐵欄杆的危險標示牌,不覺雅然失笑。因中文這幾個字我還認得,但這英文就很奇怪,因為,如要請遊客不要太靠近水池邊,大部份的英文警告標誌都會翻譯為:Danger Deep water 或 Caution Deep water,翻譯為 Deep Water hazard 實所罕見。因我不是英文專家,廠商翻譯成這樣是否正確,吾無從得之,姑且看之。

2017年3月15日 星期三

開始寫Blog

2017.03.15 開始寫Blog。

開始我另一個生涯階段。


   一直想建立一個Blog 網站,紀錄我生活上一些點點滴滴和工作上寫程式的心得和解決方法,因為有些事情當下記得很清楚,但久了就忘了。如碰到相同的問題時,自己雖然仍可解決,但又得費一番功夫。因此,將當時解決方法和步驟記錄下來應是Bloger建立Blog網誌的原因之一。