2011年11月12日 星期六

Word 各獨立項自動編號功能

 

在Office 2007使用Word時,如果你想要在每個表格中進行唯一的數字編號時,不像在Excel中那麼方便,但你需要讓他自動編號,刪除時自動減號,增加時自動加號。


下列方法提供:

插入>> 快速組件 >> 功能變數 >> AutoNum


刪除TFS WorkItem

在TFS中,使用者無法直接刪除WorkItem,如果你建立錯誤的項目時,或許你想刪除,可以使用下列方式刪除(Ref MSDN),或將此項目Assign其他工作內容也可以。

To list fields that are not being used by any work item type

  1. Open a Command Prompt window.
  2. Change to the directory that contains the work item types that you want to list, by typing the following command and then pressing Enter.
    cd ..Drive:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE
  3. List the fields that are no longer being used by any work item types by typing the following command at the command prompt, and then pressing Enter.
    列出未使用到的WorkItem:
    witadmin listfields /collection:http://ServerName:Port/VirtualDirectoryName/CollectionName /unused
  4. 刪除指定的WorkItem名稱
  5. witadmin deletefield /collection:http://ServerName:Port/VirtualDirectoryName/CollectionName /n:FieldName

2011年10月31日 星期一

Unable to cast COM object of type (Library not registered)

Access 2003 要轉版Access 2007 發生的錯誤訊息說明:

Exception Session:
Unable to cast  COM object of type 'Microsoft.Office.Interop.Access.Dao.DBEngineClass' to
interface type 'Microsoft.Office.Interop.Access.Dao._DBEngine'. This  operation failed because the QueryInterface call on the COM component for the  interface with IID '{00000021-0000-0010-8000-00AA006D2EA4}' failed due to the  following error: Library not registered. (Exception from HRESULT: 0x8002801D

說明:
這是要從Access 2003 轉換到Access 2007 發生的錯誤,系統告訴我們有一個DAO360.dll的原件沒有被註冊,所以沒辦法進行轉換。DAO360.dll 放在 C:\Program Files\Common Files\microsoft shared\DAO。

註冊元件:
[開始] >>> [CMD] >>> [進入DOS Modle] >> [cd C:\Program Files\Common Files\microsoft shared\DAO] >>> [regsvr32 dao360.dll]

[補充]
1. 如果註冊後也不行的話,請重開機試試。
2. 可先反註冊,在註冊一次。反註冊:regsvr32 -u dao360.dll
3. 都不行的話,你有可能以前註冊過了,試著想一想之前DAO360.dll放在哪裡 (EveryThing這套搜尋軟體很好用)。直接在DOS中切換到該目錄,執行註冊

實例說明:
之前ARS 的DAO360.dll是放在C:\Program Files\Dao360.dll。然後移除ARS,在安裝SRS,這時候系統還是會記住元件是在的路徑在C:\Program Files\中。造成SRS轉版失敗。

不管你用C:\Program Files\Common Files\microsoft shared\DAO這路徑註冊1萬次都不能用。這是重新安裝ARS,元件就會重新註冊回去,SRS也就可以轉版了。

或者把ARS的DAO360.dll元件放回到原本的C:\Program Files\Dao360.dll,重新註冊也可以。

2011年10月11日 星期二

Just in Case (預防萬一)

句首用法:
Just in case he is in an accident,Jay always wears his seabelt

Just in case Tommy and Julie have the measles they are not going to school.




用尾用法:
Jay might be in an accident So he always wears his seabelt just in case

Tommy and Julie may have the measles So the didn't go to school just in case.

2011年10月8日 星期六

[信長之野望online]小田原攻略流程

小田原全地圖: (請連結至駄々茶器)
































(請連結至駄々茶器)


小田原一王:
一、直江兼續
重要技能:毘沙門天・愛,單體3000~4000傷害+敵方生命3000前後回復

擊破順序:3 1 2 4 5

擊破說明:
3 會一所懸命/守護/奔落 先殺。術忍主要負責減殺,3/1/2血剩一半,要注意4會發動準備恢復,可直接抓法沉默或者止術。


擊破組合:術忍 忍法 高醫 武士 刀鍛 古神 暗殺

流程:
1.(非必要)擊破橋旁的豐臣大砲組頭,可阻止橋上大砲直轟
2.點擊直江兼續 開戰
3.擊破直江兼續 後,上杉景勝弱化五體


二、上杉景勝(弱體)
重要技能:毘沙門天・義,單體5000~6000傷害+敵方生命3000
前後回復

擊破順序:3 1 2 5 4

擊破說明:
3 會一所懸命/守護/奔落 先殺。術忍可朦朧/麻NPC/吹蝶,2/1/3血剩一半,要注意5會發動準備恢復,可直接抓法沉默或者止術。開場先別急著識破,主要是因為NPC開場會有[太閤的威光]等級2紅藍燈,識破役第二回識破即可。


擊破組合:術忍 忍法 高醫 武士 刀鍛 古神 暗殺

流程:
1. 先請一人將 景勝 旁的NPC引開
2. 點選 景勝 開戰


Video:

小田原二王:
島左近 ,NPC團隊以物攻強襲主要特色。

重要技能: 獅吼,強力 黃、藍、紅燈上升 + 物功傷害,尤其是紅燈。

擊破順序:2 1 3 4 5

擊破說明:2會拉人,所以先拆盾。軍學負責每回合[逆轉]島左近的獅吼,光條請排在島左近後面,術忍可以朦朧,軍學建議穿魅裝,避免被NPC拉走,如果不幸被NPC拉走,改由術忍每回合[火遁]。直到軍學解拉,軍學與術忍相互搭配好,並報技。島左近是打石田三成的前哨戰,也是練習戰,所以若能控制好島左近的獅吼,基本上石田三成就沒有問題。



擊破組合:術忍 忍法 高醫 武士 軍 學 刀鍛 古神

流程:
1.擊破 宇喜多秀家,解除結界
2.進屋後,點島左近 開戰 (第一次 請引開 島左近 旁邊NPC)
3.擊破島左近後,石田三成弱化為五體


石田三成(弱體) 。三侍組合。NPC團隊以物攻強襲主要特色。

重要技能:
1. 獅吼,強力 黃、藍、紅燈上升 + 物功傷害,尤其是紅燈。
2. 三成的鬼謀,獅吼成功下,拷貝黃藍紅燈給自己,並變成二級大燈
3. 殲滅指揮,三成鬼謀成攻下,將黃藍紅大燈拷貝給所有人+指定我一人攻擊
4. 忍城攻,消耗氣血的法術攻擊。血1700~2000左右傷害、氣900~1000左右傷害
5. 愚物抹殺,我方任三體沉默


擊破順序:3 2 1 4 5


擊破說明:
3會拉人,所以先拆盾。軍學負責每回合[逆轉]島左近的獅吼,光條請排在島左近後面,術忍可以朦朧,軍學建議穿魅裝,避免被NPC拉走,如果不幸被NPC拉走,改由術忍每回合[火遁]。直到軍學解拉,軍學與術忍相互搭配好,並報技。


3死以後,島左近、石田會傳呼,這個要非常注意,三死以後,建議密傳用[流水]輪流抖2與1(2呼出機率較高)。


若不幸讓三成使用三成的鬼謀,務必在下一回合要抖到1,術忍朦朧/鏡花水月,有機率避免三成的殲滅指揮,將二級燈拷貝給所有人,造成滅團機率,二級燈大概時間兩分鐘左右。


三成的[忍城攻]會扣血+扣氣,是個危險技能。而且三成攻擊也會扣氣,古神要留意刀鍛及大家的氣。另外愚物抹殺是任三體沉默,請記得打解沉默丹,別忘記啊!

擊破組合:術忍 忍法 高醫 武士 軍 學 刀鍛 古神

流程:
1.先引開三成旁邊的NPC,人員集中到角落
2.點選三成開戰
3.有閒的話也可以直接打掉NPC,因為如果場外沒有119,重跑可直接進來,若有119就不用了。

Video:



小田原三王:
真田幸村

重要技能:
1. 十字槍,強力物攻傷害,估計傷害6000 up (NPC1)
2. 沉默之霧(NPC 1)

擊破順序:6 4 1 3 5 2 7

擊破組合:雅樂  武士  刀鍛  秘傳  高醫 佛門  仙論(魅550)

擊破說明:6與1都會拉人,所以先拆6盾。開場高醫單補盾,佛門雙掌盾,因為1有時候會沉默之霧,所以要負責後光,單補是避免盾開場即死。武士負責拉 1  3,並且要人守護藥師,建議裝一下刀背。刀鍛威壓/怒吼/鎧至 交互使用,NPC快沒血的時候,可敲NPC補刀。秘傳開場波紋6,接下來攻擊6。仙論開場可咒缚/大周天(為了兇方降NPC四燈)/飛刀6。雅樂裝神明/大聲響,開場唱,神明在round 2 給盾/武士,有空可以給所有人,可減少大法/物理傷害,但優先給盾及武士,大聲響使用時機:1.盾死重進  2.止NPC4 完全恢復 3.戰局不穩

仙論務必找高魅,主要以仙論做為主止術手。

第三回開始真田昌幸會加入隊伍,昌幸是陰陽。秘傳要幫忙識破白燈。6血剩一半時,4會完全恢復,秘傳[封殺]、仙論[禁咒]、武士[刀背]、雅樂[大聲],若大聲完,下回合4一定還會完全恢復準備,一定要止術,別忘了!

這是雙補的打法,主要是利用提升物理耐性(神明 技能)/雙掌結界/防禦陣行,進行攻略。

場外建議有119跟洗氣,刀鍛重新進時,記得拆掉警衛
不然進場很快就死了。

當然雅樂 可換 能樂,但秘傳 就要換砲。透過能樂的[堅陣]來打會比較輕鬆。因為能樂[堅陣]是提升近距離物理的抵抗力。


流程:
1.擊破 稻姬
2.擊破 真田信幸
3.點擊 真田幸村 開戰
4.若戰敗,找鬼庭(稻姬對面) 重新對話,就會POP真田幸村

Video(完整版):



Video:




小田原五王:
摩利支天

重要技能:
1. 月影之刻:敵方全體物理傷害上升
2. 陽光之刻:敵方全體術理傷害上升
3. 月影之劍:單體物理傷害9000左右
4. 陽光紫花:單體術理傷害6000左右
5. 時空錯亂:NPC 3號與4號技能。一點突破我方一人+單人恢復量減少
6. 放電[準備]:NPC 3號與4號技能。任三體麻痺(必抖)
7. 黑洞制裁:全體4000術理傷害,每次施放傷害+1000
(發動條件:被技能[時空錯亂]的我方這人死亡)

擊破順序:5 3 4 2 6 7 1

擊破組合1:佛門 佛門 僧兵 刀(鎧)鍛 神典 忍法 術忍
擊破組合2:佛門 佛門 僧兵 刀(鎧)鍛 古神 忍法 暗殺

擊破說明:
鍛盾的話分為刀與鎧,魅600up為佳,能拉的怪比較多,穩場度高。刀鍛威壓、怒吼及滅魂。若是鎧鍛[聲東‧改][怒罵]。

神典開場月宮>>唱>>不變,負責唱一名佛及不變,記得掛援護。佛一名全體恢復,沒被唱可以給打手生吸、極樂及後光。僧兵整場極樂刀鍛。忍法一直打,記得掛援護、波紋心得,必要時可以流水抖怪。術忍也是負責打,可減殺/朦朧(若倒綠燈)。

3、4NPC如果放電的話,術忍直接沉默,麻刀。

開場先殺5,因為5會破界。NPC 5 3 4 6 7 都會甦醒,需配置刀鍛及神典(主滅魂手)負責滅魂,NPC 5 3 4 一定要滅魂,剩下可不滅,由攻手止術即可。因為場上只剩下 2 6 7 1 ,這時6 7 一定會發動準備復活2,這是兩個打手就可以直接把6 7打到沒氣。

NPC 3 and 4 第一次發動[時空錯亂]時間大概是3.5分鐘,後面4分鐘一次,佛在時間快到之前先待機,我方任一人中[時空錯亂]時,佛改成極樂該名團員,直到勾玉狀態解除。如果盾有拉到所有NPC時,可改成後光,降低另一名僧的負擔。
一名佛要負責後光、神典要負責不變,這兩個技能不能斷。NPC會全體沉默、全體麻痺,次數不算少。所以這兩個技能很重要。
摩利支天是小田原中容易攻略的王,因該是給一門破小田原主線後的獎勵。給的報酬也滿好的,有戒指及大約70~72的神秘石。不過得先過上面四個主線任務才可呼喚這隻王。建議可每周打一次。

流程:
1.與 豐臣秀吉 對話,秀吉移往天守閣
2.往天守閣移動,進天守閣之前,要有神風引開兩隻紅色NPC
3.與 伊達政宗 對話,Pop 摩利支天
4.點摩利支天 開戰
[補充]建議場外要有119 or 打氣,戰鬥死亡後,場外復活進入戰鬥支援

鎧鍛使用 Video:


刀鍛使用 Video:



2011年10月4日 星期二

修正TFS Report 報表更新速度

最近因為把VSTS 灌在localhost
主要是測試它的需求管理與發展是否與CMMI的吻合程度
結果發現他的報告並非即時性的
間格的秒數,讓我很不耐煩。
下面是依據MSDN找出的解決方法:

1.使用TFSSETUP帳號登入系統。

2.在 Internet Explorer 中,開啟下列 URL:
http://localhost:8080/tfs/TeamFoundation/Administration/v3.0/WarehouseControlService.asmx
只能在本機上執行URL。
隨即開啟一個頁面,其中包含兩個標記為 [settingID] 和 [newValue] 的方塊。

3.在標記為 [settingID] 的方塊中,輸入 IncrementalProcessIntervalSeconds

4.在標記為 [newValue] 的方塊中,輸入新的間隔時間 (以秒為單位)。

5.按一下 [叫用] (Invoke) 以變更設定。

6.由於是呼叫WebService,所以只能在本機端執行。

2011年7月13日 星期三

Nokia 6120 use Google map (Offline)



有鑒於最近我對台北信義區、大安區、松山區 有點困惑
常常騎到一半突然變成單行道
同事一直遊說去辦 iphone,有google map比較方便
但智慧手機的用途很大,如果真的只拿來看map 打電話實在很可惜
智慧手機的強大,我想有在用APP的同仁都知道
真的可以幫它當成Pocket PC,現在Eeepc、PocketPC都被智慧型手機打假的
未來智慧手機市場無可限量!

所以我就拿來我的Nokia 6120來灌Google map (offline)
為了方便我出門時有一把得心應手的Weapon~
我大致紀錄我安裝的手順,其中我參考的網址列於下面
要感謝這些先驅,大家才能享受這些服務

[以Nokia 6120c 為例]
一、MGmaps 主程式安裝
1. 下載MGmaps主程式
http://wap.mgmaps.com/get.php?version=14&platform=n95&submit=Download

2. 將jar、jad 兩個Java應用程式copy 到你的手機中 (程式管理能讀的到位置)

3. 點選[設定] --> [資料管理] --> [檔案管理] --> [選擇記憶卡] --> [點選jar or jad 安裝]

4. 安裝完成後 會在你的 [應用程式] --> [百寶箱] --> [MGmaps]

二、安裝GMapMaker (地圖分析器)
1. 下載GMapMaker主程式
http://www.mgmaps.com/cache/gMapMaker-setup.exe

2. 在你電腦中安裝 (不用copy到手機)

三、製作地圖檔 (製作地圖檔)
1. 連結MGmaps Create WebSite
 http://www.mgmaps.com/create/

2. 移到台灣地區

3. 滾一下你的滑鼠吧,滾到你要看的區域

4. 在你想看的區域上,點一下會出現一個小座標圖案,多點幾個小座標圖案
用小座標圖案圍出你想要的區域

5. Zoom level: from 這個選項建議 11~16 (數字愈大 街道越清楚)

6. 其他預設

7. Click Generate! Button

8. 產生 map檔案,另存在桌面吧

五、製作地圖檔 (擷取地圖資訊)
1. 開啟你剛安裝在電腦上的GMapMaker

2. 點選Browse ,選擇你剛另存的 map檔案

3. 點選Go,選擇要儲存地圖檔資訊的路徑

4. 完成後,Copy地圖資訊資料夾(MGMapsCache) 到你手機的記憶卡中

六、設定MGmap
1. 手機點選[設定] --> [資料管理] --> [程式管理] --> [Mobile GMaps]

2. 讀取使用者資料 設定為 總是允許

3. 第一次 開啟 Mobile GMaps ,定位:否。網路:是

4. [選單] --> [7] --> [顯示] --> [Language] --> 改為繁體中文 (這步驟會連上網) --> [儲存]

5. [選單] --> [7] --> [地圖瀏覽] --> [使用內存地圖] ---> [勾選使用內存地圖] --> [勾選Offline Modle] -->  [儲存]

6. [選單] --> [7] --> [地圖種類] --> [Not Available(google)] ---> [勾選Google Maps] --> [儲存]

7. [選單] --> [7] --> [地圖種類] --> [Yahoo Maps] ---> [取消所有 Yaoo Maps] --> [儲存]

Reference:
1. http://www.eprice.com.tw/mobile/talk/2677/3734924/1/4/0/
2. http://www.eprice.com.tw/mobile/talk/?prod_id=2813&tid=3721192&page=1
3. http://wap.mgmaps.com/
4. http://www.mapcacher.com/

2011年6月28日 星期二

PIC離職信

Dear 經理:

很感謝你昨日願意撥時間為我這毛頭小子 解惑
雖然就像你所說的我有一些關鍵問題沒解決
透過離職來逃避是沒有重視此問題
但暫時拋開這些關鍵問題,我還是想往我自己的大目標邁進

雖然很固執!

但是我如果不去嘗試,我想晚年我會很後悔自己當初沒跨出那一步。

也請你原諒我昨天沒跟你說除了公司內轉以外,我還有另外投「會計事務所」一事
我本身其實讀了五年的會計,我一直有個念頭想將資訊用在會計領域
所以當今天「資誠會計事務所」通知我面試結果後
我想我確認會跨出這一步去闖看看,是不是我所想的世界

我沒辦法跟你說我有幾成把握 未來會如何
但我只有這份傻勁與信念
讓我在 現在我年輕時狠狠的跨出那一步
未來如何我不知道~ 我目前只想要往我自己的目標前進
這樣會讓我感覺我活在當下!

感謝你兩年前你的提拔,我會銘記於心
也感謝兩年內你的鼓勵與照顧
讓我可以在你 豐沛的羽翼下學習到很多工作、人際上的知識
也由衷祝福 經理家庭與事業 如意吉祥
未來希望還有機會能跟你請益。

2011年6月10日 星期五

resolve Text Multi Line Len Can't Set MaxLeng

    //解決Text Multi Line Len Can't Set MaxLeng by irol
    if (Memo_txt.Text.Length >10)
    {
     Response.Write("<script>alert('備註欄位不得超過20個字');</script>");
     return;
    }

2011年6月9日 星期四

C# 日期轉換

//日期轉換簡易
   string strBeginDay = DateTime.Now.ToString("yyyy/MM/dd");
   string strEndDay = DateTime.Now.AddMonths(-3).ToString("yyyy/MM/dd");

   //日期轉換進階
   string strD1 = aryFields[3,1].ToString() + aryFields[4,1].ToString();
   DateTime dt = DateTime.ParseExact(strD1,"yyyyMMddHHmmss",System.Globalization.CultureInfo.CurrentCulture);
   strD1  = dt.ToString("yyyy/MM/dd HH:mm:ss");

2011年6月7日 星期二

2011年6月6日 星期一

使用OLEDB匯出EXCEL資料發生部分資料為Null問題

1. 發生現象:
在.NET 使用OLEDB 匯出EXCEL資料時,將資料寫入DB中,發現部分資料欄位為NULL現象。

2. 發生原因:
A. 資料格式非字串所造成。
B. 在 Excel 機碼中 TypeGuessRows 的預設值為 8,代表當你讀入 Excel 檔案時若每一列的資料格式不一致的話,會先讀取前 8 列的資料,用已判斷之後的資料格式是否固定。
C. 例如:前 8 列的資料都是「字串」格式,那麼在第 8 列之後的資料會自動解析成「字串」格式,但只要遇到有的資料不是「日期」格式時,就會回傳 Null ,也是本障礙產生的原因

3. 改善方法:
說明:
關於這部份是由於Excel規定
前八欄欄位如果是數字,後續欄位皆視為數字
前八欄為文字,後續欄位皆是為文字
前八欄為文字+數字混雜,後續欄位視為文字 ,寫入資料庫。
 
例如:
以你的案例,因你前八欄為文字+數字,所以轉入是沒問題的
若改寫你的案例,改為前八欄數字,第九欄文字就會發生錯誤。
 
主要解法:
1. 只要有數字與文字混合欄位時,此欄位必須加入小逗點
2. 取消前八欄格式檢查,改由每個欄位檢查 (會影響效能,只要有Excel匯入功能都會影響)
3. 程式客製排除
 
我建議作法是3. 程式客製排除。主要是透過加入標題列的方式,讓Excel規則去判讀
使Excel轉入時讓整個EXCEL欄位都視為字串格式轉入
A. "Provider='Microsoft.Jet.OLEDB.4.0';Data Source='{0}';Extended Properties='Excel 8.0;HDR=No;IMEX=1; //納入標題列
B. For (int i = 1; i < dtData.Rows.Count; i++) //忽略第一筆為標頭

4. 補充資料:
參考路徑:http://blog.yam.com/coochi/article/23234518
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\3.5\Engines\Excel 位置,在 Excel 機碼中 ImportMixedTypes 的預設值為 Text,代表當你讀入 Excel 檔案時若每一列的資料格式不一致的話,Jet Engine 預設會將欄位的資料格式自動轉成文字(Text)格式!
在 Excel 機碼中 TypeGuessRows 的預設值為 8,代表當你讀入 Excel 檔案時若每一列的資料格式不一致的話,Jet Engine 會先讀取前 8 列的資料,用已判斷之後的資料格式是否固定


一般來說,透過 OleDb 載入 Excel 檔案時,設定的連線參數如下:
string _connstr = "Provider=Microsoft.Jet.OLEDB.4.0;" + 
    "Data Source=C:\\MyExcel.xls;" + 
    "Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"";
其中,最關鍵的部分就是在 Extended Properties 的地方,我逐一介紹:
  1. Excel 8.0
    Excel 8.0 是 Office 97 的 Excel 格式,這個格式從 Excel 97 ~ Excel 2003 都相容,如果你在 Excel 中使用「另存新檔」的話,必須要選取這個檔案類型儲存,才能正確用 OleDb 正確開啟,如下圖示:

     
  2. HDR ( HeaDer Row )

    若指定值為 Yes,代表 Excel 檔中的工作表第一列是欄位名稱
    若指定值為 No,代表 Excel 檔中的工作表第一列就是資料了,沒有欄位名稱
     
  3. IMEX ( IMport EXport mode )
    IMEX 有三種模式,分別讀寫行為也不同,容後再述:
    0 is Export mode
    1 is Import mode
    2 is Linked mode (full update capabilities)
     
我想最需要說明的就是 IMEX 參數了,因為不同的模式代表著不同的讀寫行為:
  • 當 IMEX=0 時為「匯出模式」,這個模式開啟的 Excel 檔案只能用來做「寫入」用途。
  • 當 IMEX=1 時為「匯入模式」,這個模式開啟的 Excel 檔案只能用來做「讀取」用途。
  • 當 IMEX=2 時為「連結模式」,這個模式開啟的 Excel 檔案可同時支援「讀取」與「寫入」用途。
所以當我們要開發 Excel 檔案匯入功能時,正確的 IMEX 設定應該是 1 才對

2011年5月27日 星期五

2011年3月22日 星期二

SQL SERVER Mail呼叫預存程式(sp_send_cdosysmail)-第二篇

提供呼叫並發送Mail

declare @Body nvarchar(4000)
declare @strEmail varchar(1000)
Set @strEmail = 'irol@mail.ptc.net.tw,abc@gamil.com'
select @Body = '錯誤時間:' + CONVERT(varchar, GETDATE(),120) + '錯誤訊息:五碼每日郵碼同步過程發生失敗,以昨日資料取代'
exec sp_send_cdosysmail 'user@ptc.net.tw',@strEmail,'DTS[DTS_ZIP_MASTER]在執行過程中遭遇失敗,請相關人員進行確認!!',@Body
go


declare @Body nvarchar(4000)
declare @strPhone varchar(1000)
set @strPhone = '0937581311'
select @Body = 'user:xxxx
pw:xxx
isLong:false
mobile:' + @strPhone
exec sp_send_cdosysmail 'user@ptc.net.tw','abc@abc2.com;user@ptc.net.tw','DTS[DTS_ZIP_MASTER]五碼每日郵碼同步過程發生失敗,以昨日資料取代',@Body

SQL SERVER Mail呼叫預存程式(sp_send_cdosysmail)-第一篇

提供SQL SERVER Mail呼叫預存程式

CREATE PROCEDURE [dbo].[sp_send_cdosysmail]
@From varchar(100) ,
@To varchar(100) ,
@Subject varchar(100)=" ",
@Body varchar(4000) =" "
/*********************************************************************

This stored procedure takes the parameters and sends an e-mail.
All the mail configurations are hard-coded in the stored procedure.
Comments are added to the stored procedure where necessary.
References to the CDOSYS objects are at the following MSDN Web site:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cdosys/html/_cdosys_messaging.asp

***********************************************************************/
AS
Declare @iMsg int
Declare @hr int
Declare @source varchar(255)
Declare @description varchar(500)
Declare @output varchar(1000)




--************* Create the CDO.Message Object ************************
EXEC @hr = sp_OACreate 'CDO.Message', @iMsg OUT

--***************Configuring the Message Object ******************
-- This is to configure a remote SMTP server.
-- http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cdosys/html/_cdosys_schema_configuration_sendusing.asp
EXEC @hr = sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/sendusing").Value','2'
-- This is to configure the Server Name or IP address.
-- Replace MailServerName by the name or IP of your SMTP Server.
EXEC @hr = sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value', '10.99.99.99

-- Save the configurations to the message object.
EXEC @hr = sp_OAMethod @iMsg, 'Configuration.Fields.Update', null

-- Set the e-mail parameters.
EXEC @hr = sp_OASetProperty @iMsg, 'To', @To
EXEC @hr = sp_OASetProperty @iMsg, 'From', @From
EXEC @hr = sp_OASetProperty @iMsg, 'Subject', @Subject


-- If you are using HTML e-mail, use 'HTMLBody' instead of 'TextBody'.
EXEC @hr = sp_OASetProperty @iMsg, 'TextBody', @Body
EXEC @hr = sp_OAMethod @iMsg, 'Send', NULL

-- Sample error handling.
IF @hr <>0
select @hr
BEGIN
EXEC @hr = sp_OAGetErrorInfo NULL, @source OUT, @description OUT
IF @hr = 0
BEGIN
SELECT @output = ' Source: ' + @source
PRINT @output
SELECT @output = ' Description: ' + @description
PRINT @output
END
ELSE
BEGIN
PRINT ' sp_OAGetErrorInfo failed.'
RETURN
END
END

-- Do some error handling after each step if you have to.
-- Clean up the objects created.
EXEC @hr = sp_OADestroy @iMsg
GO

2011年3月17日 星期四

SQL 交易機制範例

範例一:用於批次
DECLARE @ReturnCode INT
SET                  @ReturnCode = 0
BEGIN TRANSACTION
BEGIN
                          EXECUTE @ReturnCode = msdb.dbo.sp_add_jobschedule
                           @job_id = @JobID, @name = N'Schedule1', @enabled = 1, @freq_type = 1,
                          @active_start_date = 20110312,
END
IF (@@ERROR <> 0 OR @ReturnCode <> 0)  GOTO QuitWithRollback
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
    IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:

範例二:
BEGIN TRAN

Delete  from AddressNumber where PostCode not in (Select ZIP_ID  From vZip_Master)  and PostCode is not null
 IF @@ERROR <> 0
 BEGIN
  ROLLBACK TRAN
  RETURN
 END

Delete  from Alley where PostCode not in (Select ZIP_ID  From vZip_Master)  and PostCode is not null
 IF @@ERROR <> 0
 BEGIN
  ROLLBACK TRAN
  RETURN
 END

Delete  from Road where PostCode not in (Select ZIP_ID  From vZip_Master)  and PostCode is not null
 IF @@ERROR <> 0
 BEGIN
  ROLLBACK TRAN
  RETURN
 END
Delete  from Section where PostCode not in (Select ZIP_ID  From vZip_Master)  and PostCode is not null
 IF @@ERROR <> 0
 BEGIN
  ROLLBACK TRAN
  RETURN
 END
Delete  from SpecialZip where zip not in (Select ZIP_ID  From vZip_Master)  and zip is not null
 IF @@ERROR <> 0
 BEGIN
  ROLLBACK TRAN
  RETURN
 END

COMMIT TRAN

2011年3月10日 星期四

[信長之野望online]人取橋攻略流程

人取橋全地圖:










































人取一王:
新城盛繼,NPC團隊以物攻高為主要特色。
重要技能:決死的暗殺術,強力攻擊力上升。
擊破順序:4 5 1 2 3
擊破說明:
4 & 5 會守護先殺,隔回踢1。副盾需要[要人守護],另外1一定要拉住,因為打到後衛幾乎秒殺。
流程:
1.從起點下山,山腳下有伊達政宗
2.政宗前有兩隻二本松一門眾,把這兩隻擊破(血很多)
3.二本松一門眾擊破後,附近POP出新城繼盛
4.點新城繼盛並擊破就過關了
Video:



人取二王:
相馬義胤 ,NPC團隊以術攻疊加為主要特色。
重要技能:陸奧凶風,全體持續扣血+術耐性15%下降
擊破順序:5 1 6 2 4 3
擊破說明:
5 會一所懸命/守護/奔落 先殺。術忍負責減殺及隔回抖1,5血剩一半,要注意6會發動準備恢復,可直接抓法沉默或者止術。副盾沒事的話可以[要人守護]一下。能樂負責唱+九死+康復。
[補充]能樂可以換神典,開場神唱藥師後[月弓],當5血剩一點時,神典可直接補刀,另外有空也可以幫打手[荒蕪],是很不錯的打法。

擊破組合:術忍 忍法 高醫 武士 鎧鍛 能樂 陰陽
流程:
1.擊破相馬家精銳 (POP相馬隆胤)
2.擊破相馬隆胤 (POP相馬義胤)
3.擊破相馬義胤
Video:


人取三王(弱體):
佐竹義宣 ,NPC團隊以術攻強襲主要特色。(減殺對部分法術無效 1有妖周天)
重要技能: 六花之舞,全體術攻3600(佐竹流軍學發動成功下) 。
                 佐竹流軍學,場上所有不分敵我傷害x2
擊破順序:2 1 5 4 3
擊破說明:2會一所懸命/守護/奔落/[佐竹流軍學] 先殺,術忍開場減殺及負責沉默4(準備時機率接近100%)。2血剩一半,要注意5會發動準備恢復,可直接抓法沉默或者止術。副盾拉2 and 3且[要人守護],刀盾使忍耐技能單拉1。
人三若戰鬥中掛,外頭如果沒有清NPC,直接戰鬥中復活,因為外面NPC都已經復活,重跑的話,進不來戰鬥。


擊破組合:術忍 忍法 佛僧 武士 刀鍛 古神 演武
流程:
1.擊破義宣親衛隊x2
2.佐竹義宣對話(選擇不戰鬥 POP佐竹義斯)
3.擊破佐竹義斯
4.佐竹義宣對話(選擇不戰鬥 POP小貫賴久)
5.擊破小貫賴久(城寨POP佐竹義宣)
6.往城寨中移動(路上紅怪多 建議一門夥伴先幫忙打)
7.城寨上有機槍別站太近
Video:

人取四王:
佐竹義重 ,本場特色是與NPC一起共鬥,三位玩家+四位NPC
重要技能: 鬼義重居合斬,全體劍風4000左右傷害(佐竹流軍學發動成功下) 。
                 佐竹流軍學,場上所有不分敵我傷害x2
擊破順序:7 6 1 2 3 4 5
擊破說明:能樂開場九死一生,另外吉祥、康復也不錯。能樂要抓五分鐘施放[逆風之謠],可降低[鬼義重居合斬]的傷害,可以在NPC發動佐竹流軍學後接逆風,另外幫兩隻會恢復的NPC唱。佛僧只要一般雙補兩隻盾,顧好旗頭,不需要被唱。忍法識破的話,可抓時間放[結界四]也可降低[鬼義重居合斬]的傷害,空檔之餘可吹箭,7血剩1/3會全體完全恢復,要注意止術。
建議場外要有復活役及血氣恢復役,掛掉後馬上場外復活,補滿血氣,直接進場支援。


擊破組合:忍法 佛僧 能樂

流程:
1.橋上鬼庭左月齋對話( POP 二階堂輝隆[砲NPC] 及 白河義親)
2.擊破 二階堂輝隆
3.擊破 白河義親
4.回橋上點擊 岩城常隆 開戰 (TEAM 1)
5.回橋上點擊 佐竹義重 開戰 (TEAM 2)

6.岩城常隆點擊後三分鐘在點佐竹,擊破岩城後 , 佐竹義重就可以慢慢打就可以了
7.打 二階堂輝隆 記得掛 空蟬
Video:

2011年2月21日 星期一

[.NET]CrystalReport中動態載入外部圖片(Code39為例)


Code39 產出的BarCode 一般都為Bitmap的物件
CrystalReport 中產生動態圖片我紀錄我實做過的兩種方法

第一種方式:使用圖片位置的來源路徑
這種方式只要指定你的URL路徑就可以了,Code39 程式碼會Retrun Jpeg的格式。
這個Jpeg直接在Code39 程式產生Bitmap後,在馬上轉成Jpeg
直接回傳,這樣就可以直接顯示圖片。

   Sample Code :
   Bitmap oBmp;
   oBmp = GetCode39(Request.QueryString["id3"]);
   oBmp.Save(Response.OutputStream, ImageFormat.Jpeg);




第二種方式:使用DataSet動態Loading

將Bitmap轉成Byte變數塞入DataSet中,利用CrystalReport 加入此變數。
其中比較要注意的有:
1. CR中的變數要為BLOB變數,DataSet 變數設定為Base64Binary or Byte
2. objDTbe.Columns.Add(strColumnName[i],System.Type.GetType("System.Byte[]"));
3.CR中圖片可以設定成「自動調整大小」比較好看一點(以BarCode為例的話)

Sample Code :
 //組成要傳給CR的DataSet
   DataSet objDs = new DataSet();
   DataTable objDTbe=new DataTable("ENTprintTable");
   string[] strColumnName={"BILL_ID","SEND_DEP","SEND_EMP","REC_DEP","REC_EMP","REC_ZIP","REC_BASE","GOOD_MEMO","MEMO","IMG","CREATE_DATE"};
   for(int i=0;i<strColumnName.Length;i++)
   {
    if (i == 9)
     objDTbe.Columns.Add(strColumnName[i],System.Type.GetType("System.Byte[]"));
    else
     objDTbe.Columns.Add(strColumnName[i]);
   }

   //Produce Bar Code's Byte Type
   Code39Hander BarCode = new Code39Hander();
   Bitmap oBmp =  BarCode.GetCode39("A0000000001");
   MemoryStream MyMS = new MemoryStream();
   oBmp.Save(MyMS, System.Drawing.Imaging.ImageFormat.Jpeg);
  
 //新增資料
   DataRow objDRow=objDTbe.NewRow();
   objDRow[0] = "A1000000001";
   objDRow[1] = "總部-人力資源TEAM";
   objDRow[2] = "1011-吳小劫";
   objDRow[3] = "南港營業所";
   objDRow[4] = "3712-怡靜";
   objDRow[5] = "11011";
   objDRow[6] = "五堵BASE";
   objDRow[7] = "營業所薪資條";
   objDRow[8] = "收到後請回饋SD";
   objDRow[9] = MyMS.ToArray();
   objDRow[10] = DateTime.Now.ToString("yyyy/MM/dd");
   objDTbe.Rows.Add(objDRow);
   MyMS.Close();




2011年2月17日 星期四

[.NET]如何實做CrystalReport於Web網頁

方便給第一次設計CR於網頁中的人參考使用。

CR版本:CR XI

1. 開啟.Net 2003 建立XST (DATASET)
提供給CR 作為資料來源使用。裡面元素就是到時候要放到報表中的參數。










2. 開啟.Net 2003  建立 RPT
點選專案右鍵,加入新項目,選擇CrystalReport。
(建立完成後,可使用CR XI軟體來編輯會比較輕鬆)
建立新報表時可透過精靈協助建立,Step By Step 依序往下建立,
如果需要群組的需求時,記得選擇群組加入。
[標準報表精靈]-->[目前的連結]-->[選擇1.新建立的DataSet]-->[選擇要加入的欄位資料]-->
[選擇群組欄位]-->[完成]


*加入Crystal Report rpt










*資料來源設定


















3. 撰寫顯示報表程式碼

 先在aspx中拉一個CrystalReportViewer1元件,作為報表顯示的元件。接下來程式碼範例如下:

   //組成要傳給CR的DataSet
   DataSet objDs = new DataSet();
   DataTable objDTbe=new DataTable("ENTprintTable");
   string[] strColumnName={"BILL_ID","SEND_DEP","SEND_EMPID","SEND_EMPNAME","REC_DEP","REC_EMPID","REC_EMPNAME","REC_ZIP","REC_BASE","GOOD_MEMO","MEMO","CREATE_DATE"};
   for(int i=0;i<strColumnName.Length;i++)
    objDTbe.Columns.Add(strColumnName[i]);


   //新增資料
   DataRow objDRow=objDTbe.NewRow();
   objDRow[0] = "A1000000001";
   objDRow[1] = "總部-人力資源TEAM";
   objDRow[2] = "1011-吳小劫";
   objDRow[3] = "";
   objDRow[4] = "營業所";
   objDRow[5] = "3712-怡靜";
   objDRow[6] = "";
   objDRow[7] = "11011";
   objDRow[8] = "彰化BASE";
   objDRow[9] = "營業所薪資條";
   objDRow[10] = "收到後請回饋SD";
   objDRow[11] = DateTime.Now.ToString("yyyy/MM/dd");

   //新資料加入DataTable
   objDTbe.Rows.Add(objDRow);
   objDs.Tables.Clear();
   objDs.Tables.Add(objDTbe);
 
   try
   {
    objRpt1.SetDataSource(objDs);   //將DataSet 指定給CR來源端
    //Session["reportDocument"] = objRpt1;
    objRpt1.Refresh();
    CrystalReportViewer1.ReportSource = objRpt1;  //CR報表顯示元件
   }
   catch(Exception ex)
   {
    objDs.Dispose();
    throw ex;
   }
   objDs.Dispose();


4. 記得DataTable名稱要與1.所設計的DataSet要一樣。
5. DataTable欄位名稱也要一樣。
6. 有設計群組的話,Sample畫面如下:

2011年2月9日 星期三

[SQL]查詢及去除換行符號

SQL 2000 在資料表新增資料時若用Copy-Paste會產生資料有換行或Enter符號的風險。
這讓折騰了我ㄧ陣子,或許客戶反應查不到某筆資料,
但進入資料庫查看確有此筆資料,
但有匯出資料功能匯出,一看:都是斷行符號,
難怪客戶查不到資料。


欣賞一下Copy-Paste吧!滿有創意的。



SQL 查詢 換行符號
where id like '%'+char(10)+'%'

CHAR 可用於將控制字符插入字符串中。下表顯示了一些常用的控制字符。
控制鍵 值
Tab: CHAR(9)
換行: CHAR(10)
ENTER: CHAR(13)

Ex:
SELECT * FROM TABLE_NAME
WHERE 1=1 AND COLUMN_NAME LIKE '%'+CHAR(13)+'%'

update base_mapping set basename = replace(basename,Char(10),'')
update base_mapping set basename = replace(basename,Char(13),'')