2014-12-30

[MS SQL] XML資料型態

之前寫過一篇 MS SQL 利用Trigger紀錄Table異動資料
雖然可以記錄每次異動的資料,但缺點就是每個table欄位不同,
就要將每個要記錄的table分開新建tablex來記錄,感覺似乎也不太適合大量使用,
後來有用到XML STUFF,發現XML格式也可適用此問題,來達到記錄異動資料的需求,
好處就是不用考慮每個表格欄位數的多寡,一個欄位就可以達到記錄目的!

2014-11-20

[MS SQL] 查詢包含特定字串之Proc、Function、View

--查詢包含特定字串之Proc、Function
DECLARE @TmpStr NVARCHAR(MAX)='Factory=@CorpNo'

SELECT ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE, ROUTINE_DEFINITION
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE '%'+@TmpStr+'%'
AND ROUTINE_TYPE ROUTINE_TYPE IN ('PROCEDURE','FUNCTION')

--查詢包含特定字串之View
SELECT TABLE_NAME,VIEW_DEFINITION
FROM INFORMATION_SCHEMA.VIEWS
WHERE VIEW_DEFINITION LIKE '%'+@TmpStr+'%'

參考自-青年廣論研討班-如何在SQL Server 資料庫中 找出符合你的關鍵字的Store Procedure

2014-10-23

[敗家] ICCASU帆布鞋 男鞋/女鞋

在PTT合購版望穿秋水,終於讓我成功買到ICCASU帆布鞋了,
先前幫老婆買過ICCASU的雪靴,評價不錯,
所以一直有在注意這個牌子的鞋子,這次一看到帆布鞋開團,
查了一下先前的評價都不錯,畢竟從對岸買東西,運費也不便宜,
儘量湊滿重量比較實惠,於是一口氣買了兩雙男鞋+女鞋...

男-牛仔藍 / 男-卡其 / 女-鏡面紅花

2014-10-21

[Delphi][MS SQL] HOST_NAME()抓取主機名稱錯誤

前幾天寫了一個當登入失敗時,紀錄登入者的IP、主機名稱、時間...等,
今天去看LOG檔才發現,怎麼主機名稱都一樣 ,
明明在MS SQL Server Management Studio執行時都可以正常抓取,
後來才發現在Delphi內的ADO Connection設定連線時,
會將連線主機的名稱寫在Connection內的Workstation中,
而當我們使用T-SQL執行HOST_NAME()時,
反而直接抓取此參數資料,而非透過Server查詢,

[Chrome][Firefox] Stylish Script推薦

因為習慣使用MacType渲染字體,但這兩家瀏覽器改版的特別勤快,
原本可以正常渲染的字型,改版後突然變得不行,
研究了一陣子,才知道有Stylish這東西,
可以透過CSS修改字型顯示,甚至修改網站的版面,
下面列出目前我有在使用的幾個不錯的Script~

2014-10-20

[MS SQL] 查詢TABLE相關資訊

MS SQL Server內建sp_name可查詢表格的結構,
但是如果表格內有欄位描述時,使用sp_name是無法顯示出來,

2014-10-19

[Chrome]更新後設定頁面空白無法正常顯示

因為一習慣使用MacType渲染字體,但Chrome升級36版後一直有一個困擾,
就是設定頁面都無法正常顯示,這樣都無法進行設定的變更,
連帶擴充套件也是一樣的問題,甚至讓我一度想要跳回去Firefox,

2014-10-16

[Delphi] 設定Windows作業系統預設印表機

Procedure SetDefaultPrinter(xPrintName: string);
var

  buffer: array[0..255] of Char;
  name: string;
begin

  name := xPrintName;
  if AnsiPos(',', name) = 0 then begin
    name := name + ',';
  end;

  StrPCopy(buffer, name);
  WriteProfileString('windows', 'device', buffer);
  StrCopy(buffer, 'windows');
  SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, Longint(@buffer));
end;

參考自-Solnone 螺旋旅人-Delphi 設定預設印表機

2014-10-13

[Chrome] 使用Stylish取代MacType渲染

一直以來都有使用MacType渲染的習慣(EzgdiV5),
尤其是Windows原生的字體超細,瀏覽網頁看久了都會不舒服,
不過自從Chrome 32bit-3X版 和 64bit 開始,MacType的渲染失效了,
整個就是不習慣,只好一直忍著不升級,
一直到發現可以用Stylish修改,才把版本升上來試用看看,感覺效果還不錯!

2014-10-07

[Delphi XE7]TListView MultiDetailItem 安裝

TListView預設只能顯示一筆Detail,
如果想要顯示多筆資訊,需要自己手動Install Package,即可達到需求。

1. 預設文件中即包含安裝檔,按照下列路徑尋找
C:\Users\Public\Documents\Embarcadero\Studio\15.0\Samples\Object Pascal\Mobile Samples\User Interface\ListView

2. 查詢 *.dpk檔,打開檔案
SampleListViewRatingsAppearancePackage.dpk
SampleListViewMultiDetailAppearancePackage.dpk

2014-09-03

[MS SQL] 搬移MS SQL Server 資料庫MDF檔

因為沒有經驗所以當初MS SQL Server上線時,皆以預設值安裝,
也就是說,資料庫檔MDF和交易記錄檔LOG,皆存放於系統槽內,
最近發現C槽的空間已經快要被用滿了,後來一查才發現,
原來是資料庫MDF檔,隨著上線時間時間逐漸膨脹,
今天以卸離、添加的方式搬移資料庫檔案,以釋放系統槽空間,步驟相當簡單。

2014-08-21

[MS SQL] 修改使用中資料庫的定序

--修改前將資料庫設定為單一使用者模式(SINGLE_USER)
ALTER DATABASE DBName 
SET SINGLE_USER 
WITH ROLLBACK IMMEDIATE

--修改資料庫定序
ALTER DATABASE DBName COLLATE Chinese_PRC_Stroke_CI_AS

--修改後將資料庫改回允許有權限之帳號存取模式(MULTI_USER) 
ALTER DATABASE DBName 
SET MULTI_USER

參考自
MSDN-ALTER DATABASE SET 選項 (Transact-SQL)
MSDN-將資料庫設定為單一使用者模式

2014-08-19

[MS SQL] 字串(前中後)含有空白字元問題 LEN()、DATALENGTH()

今天在做字串資料處理時,跑處來的結果一直有問題,後來逐步測試才發現,
寫了那麼久的程式,我竟然沒有注意到,如果使用LEN()函數,
空白字元如果位於字串的後方,計算字串長度時,是會省略不計算的,

select '前面空白'=CONVERT(VARCHAR,LEN(' 123ab')),
  '中間空白'=CONVERT(VARCHAR,LEN('12 3ab')),
  '後面空白'=CONVERT(VARCHAR,LEN('123ab '))

/*----------------------------------結果----------------------------------*/
前面空白                           中間空白                           後面空白
------------------------------ ------------------------------ ------------------------------
6                              6                              5

這次需要改用DATALENGTH()計算,才可以正確抓取字串長度!

select '前面空白'=CONVERT(VARCHAR,DATALENGTH(' 123ab')),
  '中間空白'=CONVERT(VARCHAR,DATALENGTH('12 3ab')),
  '後面空白'=CONVERT(VARCHAR,DATALENGTH('123ab '))

/*----------------------------------結果----------------------------------*/
前面空白                           中間空白                           後面空白
------------------------------ ------------------------------ ------------------------------
6                              6                              6

但是有一點需要注意,DATALENGTH()是計算位元組,
當資料型態是NCHAR()、NVARCHAR()時,取得的長度會不一樣!

select 'VARCHAR'=CONVERT(VARCHAR,DATALENGTH(CONVERT(VARCHAR,'2238# '))),
  'NVARCHAR'=CONVERT(VARCHAR,DATALENGTH(CONVERT(NVARCHAR,'2238# '))),
  'NCHAR'=CONVERT(VARCHAR,DATALENGTH(CONVERT(NCHAR,'2238# ')))

/*----------------------------------結果----------------------------------*/
VARCHAR                        NVARCHAR                       NCHAR
------------------------------ ------------------------------ ------------------------------
6                              12                             60

2014-08-07

[MS SQL] 快速刪除資料庫中所有表格內資料

最近公司SQL Server在做移轉主機動作,因為牽涉到降版(2008 R2 Express -> 2008)的問題,
無法直接備份還原資料庫到新主機,所以一直在測試複製數據的方式,
一開始很笨的每次都將資料庫整個刪掉再透過語法重新建立表格,
因為懶的慢慢測試,後來還是google到了方法~

2014-08-04

[育兒] 使用webofcam-自架免費wifi嬰兒監視器

原本還擔心小朋友都五個月大了怎麼完全不會翻身,
結果某天突然學會之後便無時無刻都想要翻身,
因為已經不像以前肯乖乖的躺著,此時便需要時時在旁邊注意,避免發生危險。

老婆自己在家帶小朋友真的很辛苦,一堆事情要做,
擠奶、做副食品、清潔環境,零零碎碎的事情很多,
但總不能無時無刻都把小朋友綁在身邊,尤其夏天,沒在冷氣房一不小心會起汗疹、熱疹的,
如果小朋友願意躺著自己玩,我們就盡量都讓他自己躺著,
因為家裡是透天厝的關係,房間在2樓,每次這樣跑上跑下的也不是辦法。

2014-05-16

[Delphi] 刪除Reopen file 紀錄

於命令提示字元輸入regedit修改登陸檔,
依據下圖路徑,將Closed file下的資料刪除即可!

參考自:爱点Delphi

2014-05-02

[育兒] 彰化成美醫院月子中心

月子中心的口袋名單原本有 彰基、楊漢銘、成美
不過既然打算在成美做產檢跟生產,看過環境後,
覺得還可以,為避免老婆生產完舟車勞頓就直接決定在成美月子中心,
其他家就沒有去看過,所以這邊直接以成美月子中心介紹為主。

2014-05-01

[攝影] 我的數位照片整理術

雖然我攝影是我的興趣,但不是會專程拿著相機出去外面拍照的人,
2013年從老婆懷孕後就很少出門去玩,自然拿起相機按下快門的機會就少了很多,
照片也是少的可憐,大多都只用iphone隨身記錄而已,
但是隨著今年小朋友的報到,假借拍小孩藉口買了SONY A6000L後,
現在小朋友在哪裡,幾乎相機就跟到哪裡,
所以整個照片的數量大爆炸,每天拍一點拍一點,一個月下來也不少,
再加上,現在開始養成習慣會將相片加上tag,方便以後找照片,
所以現在整理一次照片都要花點時間,不像以前把不好看的刪掉弄個資料夾存放就好
也因為這些原因,便開始尋找好用的照片整理工具,
不過似乎沒有一套可以直接完成我的需求,
所以我就用...

2014-04-28

[DIY] 帶路雞

傳統習俗女方在準備嫁妝時,都會有一個叫做"帶路雞"的東西,
去年結婚時老婆嫌外面嫁妝店的都不好看又不實用,
乾脆就自己買材料包回家手做,現在就擺在床頭當作擺飾,
去年忘記要記錄一下製作過程,
今年剛好妹妹要出嫁,老婆決定再做一個送給小姑,
超可愛-帶路雞-娃娃

2014-04-24

[敗家] 小米小鋼炮藍牙喇叭

我只能說,小米的東西,實在是非常有創意又便宜,
踏入小米的網站,一不小心就會發現購物車裡面怎麼有東西等著結帳了XD

小米因各國分公司經營問題所以大陸小米東西無法直接寄回台灣,
網路上常見的教學是利用集貨的方式轉運回到台灣(例如...爽購),
不過這樣會有一個問題,當發貨量大後大陸小米可能會將該住址列入黑名單禁止發貨並退款,
所幸剛好同事前往大陸出差,就麻煩請他幫忙帶回台灣,
這次買了 小米小鋼炮藍牙喇叭、小米隨身WIFI、傳輸線 及 手機繩,
加起來一千二有找,自己愛花錢又安慰自己,
你看看,買這麼多東西台幣不到1200...( 飛踢

這篇就先介紹-小米小鋼炮藍牙喇叭

規格(擷取至官網)

2014-04-18

[育兒] Pognae SMART 智慧3合1座墊型背巾 開箱

現在老婆請育嬰假專心在家帶小孩,
雖然說跟爸媽一起住,可以幫忙照顧,但有時也可能都外出只剩老婆自己在家,
所以老婆一直說要買個嬰兒揹袋,這樣自己在家或者外出都可以使用。

就這樣物色了好久,原本已經打定主意要買ergo
除了價格可接受,評價也都還可以,原本想說省一點從美國找代購,
後來才發現"有時候"COSTCO也會有在販售,
不過我想我家老婆大人不會同意等到COSTCO有在賣的時候才入手吧...XD

就這樣,又問了眾多媽媽朋友們,發現推薦Pognae的不少,
也有媽媽ergo、Pognae都有買,直接推薦Pognae比較好用又透氣,
他這麼說我們是信了,就決定是你啦...XD

2014-04-17

[育兒] 彰化產檢醫院心得

話說小朋友已經滿兩個月了,現在才回來寫這一篇會不會太晚XD
從老婆確認有小朋友後,就到處詢問查詢彰化推薦的婦產科,
不過網路上可以參考的資料實在不多,所以特別寫這這篇給準爸媽參考,
畢竟大家都希望過程中不要有任何的差錯。

彰化常見的婦產科就屬彰基、成美、順安比較多人推薦,
不過我們只有去過彰基及成美,所以只單就這兩間做心得說明。

2014-04-14

[敗家] SONY A6000L 開箱 之 錢井深

攝影真的是一個非常坑殺"小朋友"的壞興趣,
一直以來都用Panasonic的微單,
從一開始超夯的GF2,預購到拿到機子等了兩個月,
只剩泛黃照片可供追憶~

因為剛入門也不是很懂,唯一讓我覺得比較大的缺點就是可用ISO實在低的可憐,
在室內光線不足的地方若無大光圈鏡頭加持,就乾脆不拿出來用了,
但自從用了20mm f1.7後,體會到大光圈的魅力,
就趕緊把14mm f2.5出掉,娶了20mm f1.7回家,從此過著幸福美滿的日子...

2014-04-13

[敗家]-小米行動電源5200、10400mAh

最近紅米手機真的超火紅,
連帶的讓大家認識了小米的東西,
而且常以不可思議的價格販售,
最近趁著米粉節入手了5200mAh的行動電源 ,
不囉說,直接附上開箱照~

2014-04-10

變更Picasa縮圖資料庫位置

最近改用Picasa來管理我的照片,不過在設定裡面找了半天,
發現竟然沒有可以修改縮圖存放位置的設定,
後來才知道預設是在C槽,這樣只會把系統空間都吃光,
後來google一下其他人的分享,利用資料夾捷徑的方式,將資料夾設定到其他地方,
在命令提示字元下,輸入
mklink /j "C:\Users\administrator\AppData\Local\Google\Picasa2\" "D:\data\Picasa"

特別說明
1.adminstrator依登入的帳號而定,如果使用者帳號是jhon請輸入jhon
2.動作前,請先將C槽Picasa2資料夾下的資料全部移到新設定的目的地或者刪除

執行成功後會出現含有建立連結成功符號的訊息!

參考來自
解決Picasa 塞爆你的C槽

2014-04-09

MS SQL 使用sp_send_dbmail發送-HTML格式郵件

透過MS SQL的sp_send_dbmail可直接將查詢出的資料以HTML郵件格式發出
範例如下
--建立測試表格/資料
IF (select OBJECT_ID('tempdb..#Mail_Tmp')) IS NOT NULL DROP TABLE #Mail_Tmp
CREATE TABLE #Mail_Tmp (AccNo VARCHAR(10),
      EMail VARCHAR(MAX))
 
INSERT INTO #Mail_Tmp VALUES ('dean','dean@gmail.com')
INSERT INTO #Mail_Tmp VALUES ('phoebe','phoebe@gmail.com')

--抓取資料
IF EXISTS (select * from #Mail_Tmp)
BEGIN
 DECLARE @tableHTML  NVARCHAR(MAX) ;
 SET @tableHTML =
  N'<H1>用戶郵件帳號明細</H1>' +
  N'<table border="1">' +
  N'<th>使用者</th>'+
  N'<th>email</th>'+  
  N'</tr>' +
  CAST ( (select td=AccNo,'',
      td=EMail,''
    from #Mail_Tmp
      FOR XML PATH('tr'), TYPE
  ) AS NVARCHAR(MAX) ) +
  N'</table>'+
  N'此郵件由系統發出'
 
 EXEC msdb.dbo.sp_send_dbmail
  @profile_name='ERP_DB',--Database Mail設定檔名稱
  @recipients='dean@gmail.com',--收件者
  @copy_recipients='',--CC
  @subject='用戶郵件帳號明細',--主旨
  @body=@tableHTML,
  @body_format=HTML--使用HTML格式
END

收到郵件結果如下

參考自 MSDN-sp_send_dbmail

2014-03-27

Delphi-抓取指定路徑檔案名稱

//******************************************************************************
//**  抓取指定路徑檔案名稱 _GetAllFiles--<自訂函數>
//**
//******************************************************************************
procedure _GetAllFiles(mask :String; isRecursiveSearch_ :Boolean; lst :TStrings);
var sr :TSearchRec;
    tExt :String;
    tDir :String;
begin
  tExt := ExtractFileName(mask);
  tDir := ExtractFilePath(mask);

  if tDir[Length(tDir)] <> '\' then tDir := tDir+'\';

  if FindFirst(mask, faAnyFile, sr) = 0 then
  begin
    repeat
      lst.Add(Format('%s%s', [tDir, sr.Name]));
    until FindNext(sr) <> 0;
    SysUtils.FindClose(sr);
  end;

  if isRecursiveSearch_ then
  begin
    if FindFirst(tDir + '*.*', faDirectory, sr) = 0 then
    repeat
     if ((sr.Attr and faDirectory) = faDirectory) and (sr.name[1] <> '.') then
       _GetAllFiles(Format('%s%s\%s', [tDir, sr.Name, tExt]), true, lst);
    until FindNext(sr)<>0;
    SysUtils.FindClose(sr);
  end;
end;

2014-03-17

[敗家]-海美迪 Q12-emmc版

印象中海美迪的電視盒都不便宜,所以沒有花太多時間去注意,
直到前一陣子看到01上在討論C/P直爆高的Q12,
研究一下發現系統整合的不錯,除了可以直接觀看線上節目,
讀取各種影音檔也沒有問題,重點是價格不貴,
淘寶官方店鋪賣的是279 RMB,換算下來台幣不到1500,
就這樣一不小心就請對岸的同事帶了2台回來用...XD