2020年9月8日 星期二

[SQL] 將時間資料按每小時分組 SQL Server Group by Count of DateTime Per Hour

想要統計每小時下單的數量 ,所以可以直接下在SQL,將這些時間點按照每一小時統計出來,例如印表機的使用量,讓我可以觀察到列印高峰跟低峰的時段



SELECT   DATEPART(hour, PrintTime) AS OnHour, COUNT(*) AS Total

FROM     PrintingList

WHERE    (PrintTime >= '2020/07/08 00:00:00') AND (PrintTime <= '2020/07/08 23:59:59')

GROUP BY DATEPART(hour, PrintTime)

ORDER BY OnHour







2020年9月4日 星期五

[WINDOWS10]硬碟快滿了怎麼辦 好用工具TreeSize Free

我的C 槽空間,就算都不放資料也常常因為國外的派送,會默默地成長,不知不覺電腦C槽又呈現了紅色的一條橫線,看了不解決就是很難過(幸好不是兩條線 呼~)


我的習慣重要資料是絕對不放在C 槽的,通常只做暫存使用,定期會去清空

但依舊成長到紅色一條槓 實在很惱人

所以使用TreeSize Free來找出到底偷吃空間的怪獸是誰

因為C 槽有些需要最高權限才能查看,所以建議使用Administrator全掃過,這樣比較清楚


下載連結: Treesize_free


2020年8月19日 星期三

[SQL]好用語法:一鍵清空資料並保留資料表名稱

 目前有一個測試用資料庫實際檔案太大,但需要保留DB名稱在裡面卡位,也想保留相關TABLE

所以決定把內容一次清除就好

可以看到檔案原本有7G


下了指令之後原本檔案大小還是沒有改變,最後在DB 屬性修改了Initial Size後變成功縮小

實際做法如下:

2020年7月20日 星期一

[SFTP 架站 ]SERVER FREE SFTP SITE 免費快速架站免安裝 適用多站台

我目前架SFTP SERVER使用的是Rebex Tiny SFTP Server
網址在這兒
是免費的
簡單設定
檔案輕巧
支援多個站台架站
非常推薦!!




官網下載後只要手動修改config檔案
調整為自己需要的參數如下圖
port 可以使用預設22、23
如果要多個站台的時候只要複製這個路徑,再將新的config檔案重新調整到相對應的路徑
另外指定其他不衝突的port就可以了



2020年7月14日 星期二

[Google Sheet] 試算表 表單快速找出重複填單的人


當我們很常利用Google 表單來讓大家做團購或是填單當作統計使用
但Google表單製作尚無法檢查是不是重複登記了
所以我們在蒐集結果的時候,可以有一個比較快速的方法,來立即找出重複的紀錄

首先,表單設計的時候,建議還是要有一組不會跟別人相同的編號、身分證、Email...等,當作這張表單的唯一識別。






當表單結束填寫後,來到回覆表單,可以取得回應結果並顯示在Google 試算表中
























<重頭戲來了>  我們要在B欄位中找出有重複的值,並且用顏色標示出來



在條件式格式規則裡自訂公式:
套用範圍 B:B 
自訂公式 =countif($B:$B,$B1)>1
底色 紫色
這樣就完成啦!




重點複習:
有了下面公式就可以快速看出任一欄位重複的值囉!
countif($B:$B,$B1)>1

2020年6月18日 星期四

[VB.NET][Windows Form] 錯誤訊息System.Exception: Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding.


錯誤訊息

************** Exception Text **************
System.Exception: Execution Timeout Expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.




原本使用的SQL連線方式如下
 Dim Ds As New DataSet
Conn = New SqlConnection(connStr)
Dim records As New List(Of GUIDO)
Dim SqlTxt As String = ""
SqlTxt += " SELECT * "
SqlTxt += " FROM TESTTABLE "
Dim Cmmd As New SqlCommand(SqlTxt, Conn)
Conn.Open()
Dim Da As New SqlDataAdapter(Cmmd)
Da.Fill(Ds)

後來發現Timeout 的原因為預設30秒,剛好這一段SQL 真的屬於比較複雜,所以我就針對這一段SQL加長timeout的預設值到120
就快速解決問題了

 Dim Ds As New DataSet
Conn = New SqlConnection(connStr)
Dim records As New List(Of GUIDO)
Dim SqlTxt As String = ""
SqlTxt += " SELECT * "
SqlTxt += " FROM TESTTABLE "
Dim Cmmd As New SqlCommand(SqlTxt, Conn)
Conn.Open()
Dim Da As New SqlDataAdapter(Cmmd)
Da.SelectCommand.CommandTimeout = 120
 Da.Fill(Ds)

-後續追蹤-
發現DB 因為最近都沒有執行rebulid index ,所以開始造成查詢緩慢的現象
緊急先將幾個重要的table 執行rebulid後
隔天狀況有改善了,不過最好還是在每天備份的時候順便排程執行rebulid index 會比較好
後續再來分享立即rebulid 的方式 跟 排程rebulid

2020年4月9日 星期四

[EXCEL] [公式] 找出指定的文字


目的:
當EXCEL 某一個欄位中有重複的文字,想要歸類出在指定的一個新的欄位中


例如:
A欄 都會一直重複SERIAL NUMBER:,我們想要找到這段文字後面接續的內容都放置在B欄中


A欄內容
1         TEST1 TEXT SERIAL NUMBER:0123456
2         TEST2 TEXT SERIAL NUMBER:6543210
3         TEST3 TEXT SERIAL NUMBER:7894123   



B欄公式第一步
=FIND("SERIAL NUMBER:",$A1,13)
先找出A1中 所出現的這13各字要在B1中顯現出來

B欄公式第二步
=MID($A1,FIND("SERIAL NUMBER:",$A1,13),25)
再從找到第一步的文字算起,往後再從加上25個字元,這25的數字可以依照你的需求而改


B欄公式第三步

=IFERROR(MID($A1,FIND("SERIAL NUMBER:",$A1,13),25),"")
因為沒有找到的欄位會顯示出#VALUE FAILURE 之類的字樣
為了美觀再加上IFERROR,將沒有找到的文字設定為空白欄位