2009-12-25

MS SQL 手動設定Transaction

透過SQL語法對資料庫查詢、異動是家常便飯的事情,
但是有時候因為一時的不查,
因為指令錯誤而誤刪或更新變成了錯誤的資料,
因為在MS SQL Query Analyzer中下指令,指令完成的同時,
系統的交易也一併結束,到時搥心肝也喚不回那些資料,
可以透過下列指令:
begin tran
commit tran
rollback tran
將自己的語法包起來,這樣在未執行commit tran,
一切的異動都不算完成,由自己控制雖然麻煩了點,
但未嘗不是件好事!
begin tran

select * into Pack_tmp from Pack
select * from Pack_tmp

rollback tran

select * from Pack_tmp
參考自:黑暗執行緒

Avira 小紅傘禁止廣告及設定MSN掃瞄路徑

Avira 小紅傘是一套不錯的免費防毒軟體,
每天更新後都會彈出一個廣告視窗,
其實隨手關閉一下就可以了,
但若是要禁止他出現可使用下列方法!
控制台-->系統管理工具-->本機安全性原則
-->軟體限制原則-->其他原則-->
新增下列兩個路徑規則,即可阻擋更新後的廣告視窗!
C:\Program Files\Avira\AntiVir Desktop\avnotify.dll
C:\Program Files\Avira\AntiVir Desktop\avnotify.exe

另外msn在接收檔案的時候會要求指定掃瞄的軟體,
工具-->選項-->傳輸檔案-->填上
"C:\Program Files\Avira\AntiVir Desktop\avscan.exe" /GUIMODE=2 /PATH=%file%

2009-12-23

PIVOT 資料交叉匯總

MS SQL 2005後開始支援的PIVOT語法,
若要將一個明細資料,如下圖


轉換成多維度的彙整資料 ,如下圖

--範例一語法如下:
select DepartNo,[0501],[0502],[0503],[0504],[0505],[0506],[0507]--要匯總的類別與分類
from (select DepartNo,PType,BalAmt--明細資料
        from #CosUBal_Depart_Tmp
        where IOType in ('A03','B01','B02','B03','B07')) as S
PIVOT
    (SUM(BalAmt)--要統計的欄位
        for PType
        IN ([0501],[0502],[0503],[0504],[0505],[0506],[0507])) as Piv
order by DepartNo
--範例二語法如下:
select *--要匯總的類別與分類
from (select DepartNo,PType,BalAmt--明細資料
        from #CosUBal_Depart_Tmp
        where IOType in ('A03','B01','B02','B03','B07')) as S
PIVOT
    (SUM(BalAmt)--要統計的欄位
        for PType
        IN ([0501],[0502],[0503],[0504],[0505],[0506],[0507])) as Piv
order by DepartNo
以上兩種寫法出來的結果如上第二張圖!

參考自:取之於網路用之於網路-只寫程式,TechNet

【轉貼】關於蝴蝶效應,青蛙現象,鱷魚法則,等等,你都明白嗎?

1、蝴蝶效應:上個世紀70年代,美國一個名叫洛倫茲的氣象學家在解釋空氣系統理論時說,亞馬遜雨林一只蝴蝶翅膀偶爾振動,也許兩周後就會引起美國得克薩斯州的一場龍卷風。  
蝴蝶效應是說,初始條件十分微小的變化經過不斷放大,對其未來狀態會造成極其巨大的差別。有些小事可以糊塗,有些小事如經系統放大,則對一個組織、一個國家來說是很重要的,就不能糊塗。

2、青蛙現象:把一只青蛙直接放進熱水鍋裏,由於它對不良環境的反應十分敏感,就會迅速跳出鍋外。如果把一個青蛙放進冷水鍋裏,慢慢地加溫,青蛙並不會立即跳出鍋外,水溫逐漸提高的最終結局是青蛙被煮死了,因為等水溫高到青蛙無法忍受時,它已經來不及、或者說是沒有能力跳出鍋外了。  
青蛙現象告訴我們,一些突變事件,往往容易引起人們的警覺,而易致人於死地的卻是在自我感覺良好的情況下,對實際情況的逐漸惡化,沒有清醒的察覺。

2009-12-14

Ubuntu-安裝LAMP...持續更新

LAMP = Linux+Apache+Mysql+PHP

$sudo apt-cache search -n apache2 --查詢可安裝的元件

$sudo apt-get install apache2 --安裝apache2
$sudo apt-get install mysql-server --安裝mysql server
$sudo apt-get install php5 --安裝php5
$sudo apt-get install phpmyadmin--安裝phpmyadmin

//--以下待確認
安裝MySQL for Apache HTTP Server
$sudo apt-get install libapache2-mod-auth-mysql
$sudo apt-get install php5-mysql

參考自:Daniel's House , D掉不累格

2009-12-10

StringReplace 取代特定字串

MS SQL裡有Replace函式可以查詢字串中特定的字元,並取代,
Delphi中也有內建的函式-StringReplace 可以使用,
StringReplace(字串,預備替換的字串,欲替換成的字串,[rfReplaceAll])

StringReplace('Dean Ma',' ','',[rfReplaceAll])
Result:DeanMa

2009-11-23

sp_rename 變更欄位名稱

想要變更某個table裡面的欄位名稱,
若嫌使用管理工具太麻煩的話,
可以使用sp_rename函示進行變更!
sp_rename('表格名稱.舊欄位名稱','新欄位名稱')
sp_rename('Prod.ProFac','PFac')
參考自:MSDN-sp_rename

2009-11-20

ADO Query Filter 含中文字解決方案

為了針對查詢出來的Query再做進一步的資料篩選,
常常用會用到Filter的功能,但目前發現若Filter的條件中,
包含了時間、中文字串,程式皆會死當,可以用下列方式解決此情況
//**在Query的onFilterRecord中寫入下列程式碼
if Trim(Edit_CusName.Text) <> '' then
   Accept := AnsiContainsStr(xQuery.fieldbyname('CusName').AsString,Edit_CusName.Text)
else
   Accept := True;
//**並於要觸發過濾的地方寫入
xQuery.Filtered := False;
xQuery.Filtered := True;
以上即可將上述的問題解套,但缺點是此事件會逐筆核對每列記錄,
若當資料量龐大的時候,會耗費不少時間,效益不佳!

參考自:Delphi.ktop

2009-11-13

isNumeric 判斷是否為數字

若要在資要庫中判斷字串是否為數字,可使用isNumeric(值)函數
根據回傳值 0-非數值、1-數值,進行篩選!
select * from STK
where isNumeric(LocNo)=1
參考自:MSDN-isNumeric

2009-11-09

REPLACE 更新資料表內特定字串

有時候因為資料建立錯誤,
需要將特定字串進行更替時,
可使用 REPLACE的語法進行替換,
REPLACE(欄位,欲被替換的字串,欲替換成的字串)
UPDATE Prod
SET Rem = REPLACE(Rem,'弔','吊')
where Rem LIKE '%弔%'
參考自:MSDN-REPLACE