<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-10546639</id><updated>2011-08-19T02:47:36.950-07:00</updated><category term='測試'/><category term='程式設計'/><title type='text'>德瑞克的傷心小站</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dereckyin.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://dereckyin.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>德瑞克</name><uri>http://www.blogger.com/profile/07104532376002723515</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-10546639.post-8163958650857128240</id><published>2010-11-17T21:42:00.000-08:00</published><updated>2010-11-17T21:49:48.885-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='測試'/><title type='text'>淺談測試</title><content type='html'>這篇是寫給自己懺悔的&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;「人長久處於安逸的情況，就會慢慢的不求上進，對於自己的工作麻痺，許多錯誤的習慣就視而不見。」&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;最近在處理客戶的一個小小需求，這個需求也不過是把一個日常例行的SSIS Job裡的Table備份多增加幾個而已，依照以前的經驗，當然是測試之後就拿給客戶正式上線了；可是，客戶這幾天反應，這個SSIS Job一直錯誤，從更新之後就沒有成功過。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;自己回去測，也沒有發現問題，看看所改的地方，也不至於出錯，那到底問題出在哪裡？抱著忐忑的心情跑去客戶的主機看看，客戶的主機端服務將近百人的業務，而提供的資料，是他們每日生財的資源，每天都有業績壓力的，當然不容許一點差錯，而在時間的壓力下，我做了一件蠢事，我竟然在running server上面跑了這個SSIS。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;由於這個SSIS的主要功能是備份資料，通常執行時間是晚上，避開白天正常業務的作業時間，所以這一執行下去就不得了，備份時，各table的locking，以及發生錯誤後，資料的rollback，造成了業務單位的資料庫死結，馬上電話就如飛雪般的過來；逼不得已，業務部門的經理只好請大家停止動作，以教育訓練的名義把大家叫離開電腦前，讓資料庫rollback成功後，慢慢的把死結消化掉。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;這個問題，後來還是要靠在正式環境上面執行，才能夠發現，所以，客戶就趁著離峰時間，把備份的資料減到最少，然後才看出來問題，原來是新增備份的幾個表格中，有一個Foreign Key到另外一個table，造成資料搬移後刪除時，出現了錯誤，測試環境裡面，剛好沒有相關的ForeignKey資料，以至於沒發現這個問題，更改了一下刪除順序之後，就可以正常執行了。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;這種正式與測試環境之間的差異所造成的測試盲點，已經不是第一次遇到，卻沒有好好的檢討改進作法，在此特別把心得記錄下來，以力求以後的改進：&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1. 測試環境與正式環境的DB務求一致：&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;兩邊的Table Schema需要一致之外，每次客戶給的schema還要再檢查一次，看看是否與正式環境相同，檢查項目至少有&lt;br /&gt;&lt;br /&gt;(1). Primary Key&lt;br /&gt;(2). Foreign Key&lt;br /&gt;(3). Default Value&lt;br /&gt;(4). Trigger&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;其他比較細微的如&lt;br /&gt;(5). DB Encoding&lt;br /&gt;(6). Case Sensitive or Insensitive等等…&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;最好找個有反向工程的軟體，把正式環境的實體關連圖畫出來，放在手邊隨時對照檢查。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2. 測試資料的完整性&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;所有的測試成功與否，與使用者提供的測試資料品質有絕對的關連，所以在事前的測試資料整理就非常重要，可是，這方面也是客戶很難提供，因為各項資料，皆牽扯到保密以及業務考量，這點一定要跟客戶好好溝通，或是提供一個轉換資料的方法，把隱密資料mark起來，原則有&lt;br /&gt;&lt;br /&gt;(1). 姓名欄位的遮蔽&lt;br /&gt;(2). 身份證字號或其他重要的卡號的遮蔽&lt;br /&gt;(3). 住址的遮蔽….&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3. 使用者測試的方式：&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;如果有可能的話，最好的方式是以平行測試的方式，讓使用者在正式與測試環境同時Key相同的資料，在一定的期間，驗證其修改的正確性，但是通常，真正Key資料的人是很懶得把相同的資料再次鍵入，所以提供自動轉換或輸入的方法也是不錯，步驟如下&lt;br /&gt;&lt;br /&gt;(1). 平行測試&lt;br /&gt;(2). 測試之後的驗證&lt;br /&gt;(3). 保留舊有系統，提共緊急切換與系統支援之用&lt;br /&gt;(4). 提供新舊資料轉換的功能&lt;br /&gt;&lt;br /&gt;結論&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;即便有充足的時間測試，程式還是會有錯誤，更不要說沒有測試急就章的上架了。執行者不管是客戶或是程式設計師，都應該多想一點，把使用者可能會操作的過程都模擬一遍，如此，才能夠盡量減少事後的彌補，以及專案的成敗。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546639-8163958650857128240?l=dereckyin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dereckyin.blogspot.com/feeds/8163958650857128240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546639&amp;postID=8163958650857128240' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/8163958650857128240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/8163958650857128240'/><link rel='alternate' type='text/html' href='http://dereckyin.blogspot.com/2010/11/blog-post.html' title='淺談測試'/><author><name>德瑞克</name><uri>http://www.blogger.com/profile/07104532376002723515</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546639.post-5803857177380506988</id><published>2008-10-08T22:52:00.000-07:00</published><updated>2008-10-08T23:44:05.254-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='程式設計'/><title type='text'>支援多核心的縮圖程式(OpenMP)</title><content type='html'>先承認吧&lt;br /&gt;這是我之前幫我朋友做的freeware&lt;br /&gt;不過因為他網站還沒弄好&lt;br /&gt;用這個程式的人也不多&lt;br /&gt;所以也不知道要改什麼&lt;br /&gt;&lt;br /&gt;最近剛接觸&lt;a href="http://dereckyin.blogspot.com/2008/09/openmp-on-vc6.html"&gt;OpenMP&lt;/a&gt;&lt;br /&gt;就把這個程式當做練習&lt;br /&gt;看到自己多核心的電腦總算可以發揮100%的功效&lt;br /&gt;心中的感動真是....&lt;br /&gt;&lt;br /&gt;使用方法：&lt;br /&gt;&lt;br /&gt;1.直接拖拉修改成寬度(drag &amp;amp; drop)&lt;br /&gt;接將圖檔選取後拖拉至軟體icon上，再選擇寬度，程式會將所選取的圖檔修改成指定的大小，更名並另存到同個資料夾。&lt;br /&gt;&lt;br /&gt;2.指定要修改的圖檔大小：&lt;br /&gt;將程式開啟後出現選擇框，將同檔案夾內要修改的檔案都選起來後，在下方解析度的輸入框內，選擇圖檔要修改的寬度後，按開啟即將所選取的圖檔修改成指定的寬度大小，更名並另存到同個資料夾。&lt;br /&gt;&lt;a href='http://0rz.tw/a74Wp'&gt;下載點1&lt;/a&gt;  &lt;br /&gt;&lt;a href='http://www.badongo.com/file/11657707' taget='_new'&gt;下載點2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;歡迎改進意見或是bug回報&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546639-5803857177380506988?l=dereckyin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dereckyin.blogspot.com/feeds/5803857177380506988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546639&amp;postID=5803857177380506988' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/5803857177380506988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/5803857177380506988'/><link rel='alternate' type='text/html' href='http://dereckyin.blogspot.com/2008/10/openmp.html' title='支援多核心的縮圖程式(OpenMP)'/><author><name>德瑞克</name><uri>http://www.blogger.com/profile/07104532376002723515</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546639.post-542307484228428862</id><published>2008-09-22T01:28:00.000-07:00</published><updated>2008-09-23T01:46:53.566-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='程式設計'/><title type='text'>OpenMP on VC6</title><content type='html'>OpenMP已經出來很久了&lt;br /&gt;但是我發現它卻是最近的事情&lt;br /&gt;就如同很多人還沒有發現自己的開發工具&lt;br /&gt;其實是支援OpenMP的&lt;br /&gt;&lt;br /&gt;&lt;a href="http://openmp.org/wp/openmp-compilers/" target="_blank"&gt;[OpenMP Compilers]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;如果您對OpenMP還很陌生的話&lt;br /&gt;請參考&lt;br /&gt;&lt;br /&gt;&lt;a href="http://heresy.spaces.live.com/blog/cns!E0070FB8ECF9015F!1018.entry" target="_blank"&gt;[簡易的程式平行化方法]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;當然&lt;br /&gt;在拜讀heresy大的文章之後&lt;br /&gt;興致沖沖的趕快開啟VC 2005來試試看&lt;br /&gt;看到雙CPU的電腦可以衝上100%是一種感動&lt;br /&gt;總算沒有白花錢買電腦了&lt;br /&gt;但是&lt;br /&gt;自己之前的程式&lt;br /&gt;都是投資在VC6上面&lt;br /&gt;VC6沒有辦法直接用OpenMP是一大缺憾&lt;br /&gt;但是卻有變通的方法&lt;br /&gt;那就是使用VC6 + Intel Compiler&lt;br /&gt;&lt;br /&gt;使用步驟如下&lt;br /&gt;首先 去download &lt;br /&gt;&lt;a href="http://www.intel.com/cd/software/products/asmo-na/eng/download/eval/219690.htm" target="_blank"&gt;[intel compiler  Evaluate Version]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;灌起來之後&lt;br /&gt;打開VC6 &lt;br /&gt;就會在menu-&gt;Tools 多出一個工具 [Intel(R) C++ compiler selection tools]&lt;br /&gt;裡面會出現你所灌的compiler版本資訊&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_TunN6WRXf90/SNdZLqaZBTI/AAAAAAAABAs/SpPsb-QzncE/s1600-h/2008-09-22_162011.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_TunN6WRXf90/SNdZLqaZBTI/AAAAAAAABAs/SpPsb-QzncE/s400/2008-09-22_162011.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5248761947622016306" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;接下來就是重點了&lt;br /&gt;&lt;/p&gt;&lt;p&gt;打開你之前的VC6專案檔&lt;/p&gt;&lt;p&gt;在Project Settings裡&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;1. C/C++ -&gt;Preprocessor Definitions 裡加上 _USE_INTEL_COMPILER&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_TunN6WRXf90/SNda3vk9VpI/AAAAAAAABA0/mrxPpMkq3Fk/s1600-h/2008-09-22_163334.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_TunN6WRXf90/SNda3vk9VpI/AAAAAAAABA0/mrxPpMkq3Fk/s400/2008-09-22_163334.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5248763804434388626" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;2. C/C++ -&gt; Project Options 裡加上 /Qopenmp&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_TunN6WRXf90/SNdbu6b958I/AAAAAAAABA8/2EOUMfvJLj4/s1600-h/2008-09-22_164432.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_TunN6WRXf90/SNdbu6b958I/AAAAAAAABA8/2EOUMfvJLj4/s400/2008-09-22_164432.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5248764752242272194" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;3. 如果 Project Options是 "/MT"，libguide.lib 會 statically linked，但是你用 "/MD" 的話，請在Link 的頁簽 加上 libguide.lib 不然程式會出現缺少libguide40.dll的錯誤訊息&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_TunN6WRXf90/SNdcDPF-UjI/AAAAAAAABBE/szESL1IkeJc/s1600-h/2008-09-22_164108.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_TunN6WRXf90/SNdcDPF-UjI/AAAAAAAABBE/szESL1IkeJc/s400/2008-09-22_164108.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5248765101384553010" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;程式的部份就要注意在有用到OpenMP的地方&lt;/p&gt;&lt;p&gt;加上 #include &amp;#60;omp.h&amp;#62; &lt;omp h=""&gt; &lt;omp h=""&gt;&lt;/p&gt;&lt;p&gt;當舊程式可以支援多CPU時&lt;/p&gt;&lt;p&gt;那種感動真是無法言語....&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546639-542307484228428862?l=dereckyin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dereckyin.blogspot.com/feeds/542307484228428862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546639&amp;postID=542307484228428862' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/542307484228428862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/542307484228428862'/><link rel='alternate' type='text/html' href='http://dereckyin.blogspot.com/2008/09/openmp-on-vc6.html' title='OpenMP on VC6'/><author><name>德瑞克</name><uri>http://www.blogger.com/profile/07104532376002723515</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_TunN6WRXf90/SNdZLqaZBTI/AAAAAAAABAs/SpPsb-QzncE/s72-c/2008-09-22_162011.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546639.post-1298577193074639386</id><published>2007-04-24T02:17:00.000-07:00</published><updated>2007-04-24T02:26:28.017-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='程式設計'/><title type='text'>VB.net COM+ Tutorial part3</title><content type='html'>前面寫的&lt;br /&gt;都是元件的部份&lt;br /&gt;現在要講的&lt;br /&gt;是如何使用元件的問題&lt;br /&gt;&lt;br /&gt;以下是VB呼叫的範例&lt;br /&gt;範例分為遠端使用跟本機呼叫&lt;br /&gt;&lt;br /&gt;VS2005的元件使用上跟原本不太一樣&lt;br /&gt;觀念上要先new一個實體&lt;br /&gt;把實體傳給interface做參考&lt;br /&gt;然後使用interface對元件進行操控&lt;br /&gt;解釋起來有點困難&lt;br /&gt;就把程式碼post出來&lt;br /&gt;各位看一下就應該了解了&lt;br /&gt;(註: 範例跟剛剛的元件沒有關係，完全是因為偷懶，剪現成的範例畫面)&lt;br /&gt;&lt;br /&gt;1. 遠端呼叫時，參考tlb檔&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_TunN6WRXf90/Ri3Lm7_Tp2I/AAAAAAAAAKQ/-5uwq5DWSPQ/s1600-h/2007-04-24_170036.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5056921826405623650" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp1.blogger.com/_TunN6WRXf90/Ri3Lm7_Tp2I/AAAAAAAAAKQ/-5uwq5DWSPQ/s400/2007-04-24_170036.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. 遠端呼叫的方法&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_TunN6WRXf90/Ri3Li7_Tp1I/AAAAAAAAAKI/6c023aw00ao/s1600-h/2007-04-24_170140.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5056921757686146898" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp1.blogger.com/_TunN6WRXf90/Ri3Li7_Tp1I/AAAAAAAAAKI/6c023aw00ao/s400/2007-04-24_170140.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. 本機呼叫的方法&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_TunN6WRXf90/Ri3LfL_Tp0I/AAAAAAAAAKA/VZXIbJdhUpw/s1600-h/2007-04-24_170202.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5056921693261637442" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp2.blogger.com/_TunN6WRXf90/Ri3LfL_Tp0I/AAAAAAAAAKA/VZXIbJdhUpw/s400/2007-04-24_170202.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546639-1298577193074639386?l=dereckyin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dereckyin.blogspot.com/feeds/1298577193074639386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546639&amp;postID=1298577193074639386' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/1298577193074639386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/1298577193074639386'/><link rel='alternate' type='text/html' href='http://dereckyin.blogspot.com/2007/04/vbnet-com-tutorial-part3.html' title='VB.net COM+ Tutorial part3'/><author><name>德瑞克</name><uri>http://www.blogger.com/profile/07104532376002723515</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_TunN6WRXf90/Ri3Lm7_Tp2I/AAAAAAAAAKQ/-5uwq5DWSPQ/s72-c/2007-04-24_170036.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546639.post-2023527996445456129</id><published>2007-04-24T02:15:00.000-07:00</published><updated>2007-04-24T02:17:33.728-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='程式設計'/><title type='text'>VB.net COM+ Tutorial part2</title><content type='html'>再來要談註冊的問題&lt;br /&gt;前面已經談過VS2005寫的元件不能夠用regsvr32來註冊&lt;br /&gt;要用 regasm 來註冊&lt;br /&gt;regasm在windows檔案夾裡&lt;br /&gt;(跟剛剛System.EnterpriseServices.dll同一個目錄)&lt;br /&gt;C:\WINNT(or windows)\Microsoft.NET\Framework\v2.0.50727&lt;br /&gt;&lt;br /&gt;註冊指令就下&lt;br /&gt;regasm ClassLibrary1.dll /tlb:ClassLibrary1.tlb /codebase&lt;br /&gt;他會產生tlb檔&lt;br /&gt;這個tlb檔很有用&lt;br /&gt;當你把元件註冊在server上的[元件服務]時&lt;br /&gt;client端就需要靠這個tlb檔來參考到這com+元件&lt;br /&gt;這麼一來&lt;br /&gt;就只需要在server端灌.net framework就好&lt;br /&gt;不用每壹台client都灌.net framework&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546639-2023527996445456129?l=dereckyin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dereckyin.blogspot.com/feeds/2023527996445456129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546639&amp;postID=2023527996445456129' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/2023527996445456129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/2023527996445456129'/><link rel='alternate' type='text/html' href='http://dereckyin.blogspot.com/2007/04/vbnet-com-tutorial-part2.html' title='VB.net COM+ Tutorial part2'/><author><name>德瑞克</name><uri>http://www.blogger.com/profile/07104532376002723515</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546639.post-6027220844443486108</id><published>2007-04-24T02:02:00.000-07:00</published><updated>2007-04-24T02:15:18.687-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='程式設計'/><title type='text'>VB.net COM+ Tutorial part1</title><content type='html'>最近又偷懶沒有上來寫心得了&lt;br /&gt;這次要談的是將class包裝成com元件&lt;br /&gt;對於使用過VB的人應該都不是難事&lt;br /&gt;因為VB寫的dll本身就是com元件&lt;br /&gt;&lt;br /&gt;然而寫com元件在VS2005上有些不同&lt;br /&gt;雖然VS2005已經簡化很多步驟&lt;br /&gt;但還是有些地方要注意的&lt;br /&gt;那就是VS2005寫出來的com是不能用以前的regsvr32來註冊&lt;br /&gt;另外&lt;br /&gt;對外界面要使用interface來export函式或是屬性&lt;br /&gt;了解這兩點寫個com就不是難事&lt;br /&gt;步驟還是用看圖說故事比較清楚&lt;br /&gt;&lt;br /&gt;1. 開啟一個新的專案，專案型態選擇[類別庫]&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_TunN6WRXf90/Ri3H97_TpvI/AAAAAAAAAJY/brz7QF5duDM/s1600-h/2007-04-24_162237.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5056917823496103666" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp1.blogger.com/_TunN6WRXf90/Ri3H97_TpvI/AAAAAAAAAJY/brz7QF5duDM/s400/2007-04-24_162237.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. 在選單[專案]上面，選擇[加入參考]&lt;br /&gt;切換到[瀏覽]頁籤，在你的windows檔案夾裡面&lt;br /&gt;尋找Microsoft.NET-&gt;Framework-&gt;v2.0.50727(看開發環境的版本)-&gt;System.EnterpriseServices.dll&lt;br /&gt;將他引用進來&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_TunN6WRXf90/Ri3II7_TpwI/AAAAAAAAAJg/pxg68te_wFc/s1600-h/2007-04-24_162350.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5056918012474664706" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp1.blogger.com/_TunN6WRXf90/Ri3II7_TpwI/AAAAAAAAAJg/pxg68te_wFc/s400/2007-04-24_162350.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. 程式碼的部份，先import以下幾個參考&lt;br /&gt;然後用interface將元件屬性及函式定義好&lt;br /&gt;再寫個class Implements你的interface&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_TunN6WRXf90/Ri3Idr_TpxI/AAAAAAAAAJo/fwOqLly0mvI/s1600-h/2007-04-24_162713.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5056918368956950290" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp0.blogger.com/_TunN6WRXf90/Ri3Idr_TpxI/AAAAAAAAAJo/fwOqLly0mvI/s400/2007-04-24_162713.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4. 如果專案中還有其他class，記得將public class改成Friend Class&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_TunN6WRXf90/Ri3Ipr_TpyI/AAAAAAAAAJw/vk-esCLjexI/s1600-h/2007-04-24_163028.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5056918575115380514" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp0.blogger.com/_TunN6WRXf90/Ri3Ipr_TpyI/AAAAAAAAAJw/vk-esCLjexI/s400/2007-04-24_163028.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5. 專案屬性的部份，可以勾選[註冊com interop]&lt;br /&gt;他會自動在本機上面註冊，對於開發時期比較便利&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_TunN6WRXf90/Ri3Ivb_TpzI/AAAAAAAAAJ4/695UN3fMINI/s1600-h/2007-04-24_163200.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5056918673899628338" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp3.blogger.com/_TunN6WRXf90/Ri3Ivb_TpzI/AAAAAAAAAJ4/695UN3fMINI/s400/2007-04-24_163200.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;6. 建置專案，您的com元件就寫好了&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546639-6027220844443486108?l=dereckyin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dereckyin.blogspot.com/feeds/6027220844443486108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546639&amp;postID=6027220844443486108' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/6027220844443486108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/6027220844443486108'/><link rel='alternate' type='text/html' href='http://dereckyin.blogspot.com/2007/04/vbnet-com-tutorial-part1.html' title='VB.net COM+ Tutorial part1'/><author><name>德瑞克</name><uri>http://www.blogger.com/profile/07104532376002723515</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_TunN6WRXf90/Ri3H97_TpvI/AAAAAAAAAJY/brz7QF5duDM/s72-c/2007-04-24_162237.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546639.post-5497846775137850619</id><published>2007-03-28T20:38:00.000-07:00</published><updated>2007-03-28T20:51:00.294-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='程式設計'/><title type='text'>偷渡檔案到使用者的電腦裡</title><content type='html'>使用者如果不想用如InstallShield之類的安裝方法來發佈程式&lt;br /&gt;但是，又想要在執行檔執行時，偷放一些檔案到安裝的電腦上&lt;br /&gt;這時候，我們可以運用資源檔(Resource)&lt;br /&gt;把想要偷渡的檔案包在執行檔裡面&lt;br /&gt;同樣的&lt;br /&gt;VS2005也大幅簡化了實做的方法&lt;br /&gt;以下的例子，是偷渡一個spftp.exe到系統目錄的步驟&lt;br /&gt;因為最近實在懶得打字&lt;br /&gt;就抓圖片讓大家一個步驟一個步驟的看圖說故事&lt;br /&gt;&lt;br /&gt;1.從專案中加入一個新的項目&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_TunN6WRXf90/Rgs0-kLWZwI/AAAAAAAAAIo/GIX_yxS3KK8/s1600-h/1.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5047186056866588418" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp1.blogger.com/_TunN6WRXf90/Rgs0-kLWZwI/AAAAAAAAAIo/GIX_yxS3KK8/s400/1.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2.選擇資源檔&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_TunN6WRXf90/Rgs1ZULWZ1I/AAAAAAAAAJQ/IhSsBmrUbws/s1600-h/2.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5047186516428089170" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp0.blogger.com/_TunN6WRXf90/Rgs1ZULWZ1I/AAAAAAAAAJQ/IhSsBmrUbws/s400/2.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3.在資源檔的畫面中，加入現有的檔案&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_TunN6WRXf90/Rgs1VULWZ0I/AAAAAAAAAJI/fJVyaBk1uTg/s1600-h/3.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5047186447708612418" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp0.blogger.com/_TunN6WRXf90/Rgs1VULWZ0I/AAAAAAAAAJI/fJVyaBk1uTg/s400/3.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4.選擇spftp.exe&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_TunN6WRXf90/Rgs1SELWZzI/AAAAAAAAAJA/cnlu7DQ9CbM/s1600-h/4.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5047186391874037554" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp3.blogger.com/_TunN6WRXf90/Rgs1SELWZzI/AAAAAAAAAJA/cnlu7DQ9CbM/s400/4.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5.將spftp.exe的屬性[建置動作]設為[內嵌資源]&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_TunN6WRXf90/Rgs1MULWZyI/AAAAAAAAAI4/MoQrXWKTfV8/s1600-h/5.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5047186293089789730" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp0.blogger.com/_TunN6WRXf90/Rgs1MULWZyI/AAAAAAAAAI4/MoQrXWKTfV8/s400/5.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6.程式基本上先判斷spftp.exe是否存在system32資料夾裡，如果沒有的話，就塞進去&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_TunN6WRXf90/Rgs1DkLWZxI/AAAAAAAAAIw/oXcBJojLs4k/s1600-h/6.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5047186142765934354" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp1.blogger.com/_TunN6WRXf90/Rgs1DkLWZxI/AAAAAAAAAIw/oXcBJojLs4k/s400/6.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;您也可以用同樣的方法&lt;br /&gt;塞圖片或字串到資源檔裡&lt;br /&gt;應用很廣，以後有空再介紹&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546639-5497846775137850619?l=dereckyin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dereckyin.blogspot.com/feeds/5497846775137850619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546639&amp;postID=5497846775137850619' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/5497846775137850619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/5497846775137850619'/><link rel='alternate' type='text/html' href='http://dereckyin.blogspot.com/2007/03/blog-post.html' title='偷渡檔案到使用者的電腦裡'/><author><name>德瑞克</name><uri>http://www.blogger.com/profile/07104532376002723515</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_TunN6WRXf90/Rgs0-kLWZwI/AAAAAAAAAIo/GIX_yxS3KK8/s72-c/1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546639.post-1374872976327683953</id><published>2007-03-20T02:20:00.000-07:00</published><updated>2007-03-20T07:06:40.905-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='程式設計'/><title type='text'>關於ComboBox(Part2)</title><content type='html'>現在來談談看起來簡單，作起來困難的ComboBox技巧&lt;br /&gt;&lt;br /&gt;Part2:&lt;br /&gt;ComboBox選擇完成之後，要依照選擇的項目，&lt;strong&gt;修改ComboBox的文字&lt;/strong&gt;&lt;br /&gt;如下拉選單選[1.20070531 測試測試]&lt;br /&gt;選完之後只顯現[測試測試]就好&lt;br /&gt;&lt;br /&gt;Ans 2:&lt;br /&gt;看來簡單的問題德瑞克卻搞好久&lt;br /&gt;各位也許會說:&lt;br /&gt;不就只需要在ComboBox的SelectedIndexChanged事件裡面&lt;br /&gt;修改ComboBox的Text就好了嗎?&lt;br /&gt;&lt;br /&gt;如果只是這樣的話&lt;br /&gt;ComboBox的文字是一動也不會動的&lt;br /&gt;德瑞克只好把腦筋動到Windows API上面&lt;br /&gt;&lt;br /&gt;1.首先在Form上面加上參考&lt;br /&gt;Imports System.Runtime.InteropServices&lt;br /&gt;Imports System.Threading&lt;br /&gt;&lt;br /&gt;2.將SetWindowText這個API加進來&lt;dllimport("user32.dll")&gt;&lt;br /&gt;Public Shared Sub SetWindowText(ByVal Handle As Integer, ByVal s As String)&lt;br /&gt;&lt;br /&gt;3.在ComboBox的SelectedIndexChanged事件裡面開啟另外一個執行緒&lt;br /&gt;去修改ComboBox的文字內容&lt;br /&gt;在此要注意&lt;br /&gt;我們須多加上&lt;br /&gt;Control.CheckForIllegalCrossThreadCalls = False&lt;br /&gt;讓UI可以被其他執行緒更改其值&lt;br /&gt;不然會發生錯誤&lt;br /&gt;執行緒的程式有些小複雜&lt;br /&gt;我還是把整個程式Post出來&lt;br /&gt;讓有興趣的人研究&lt;br /&gt;如果您有更簡單的解決方法也請不吝告知&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_TunN6WRXf90/Rf-nklkSglI/AAAAAAAAAIg/l3fioi4_sJE/s1600-h/Untitled.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5043934354679693906" style="margin: 0px auto 10px; display: block; text-align: center;" alt="" src="http://bp1.blogger.com/_TunN6WRXf90/Rf-nklkSglI/AAAAAAAAAIg/l3fioi4_sJE/s400/Untitled.png" border="0" /&gt;&lt;/a&gt;&lt;/dllimport("user32.dll")&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546639-1374872976327683953?l=dereckyin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dereckyin.blogspot.com/feeds/1374872976327683953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546639&amp;postID=1374872976327683953' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/1374872976327683953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/1374872976327683953'/><link rel='alternate' type='text/html' href='http://dereckyin.blogspot.com/2007/03/comboboxpart2.html' title='關於ComboBox(Part2)'/><author><name>德瑞克</name><uri>http://www.blogger.com/profile/07104532376002723515</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_TunN6WRXf90/Rf-nklkSglI/AAAAAAAAAIg/l3fioi4_sJE/s72-c/Untitled.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546639.post-8377068606700431180</id><published>2007-03-20T02:15:00.000-07:00</published><updated>2007-03-20T02:19:49.949-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='程式設計'/><title type='text'>關於ComboBox(Part1)</title><content type='html'>&lt;p&gt;User的需求總是沒有止境&lt;/p&gt;&lt;p&gt;而程式設計師的任務，就是在日新月異的技術中&lt;/p&gt;&lt;p&gt;服務User天馬行空的要求&lt;/p&gt;&lt;p&gt;&lt;br /&gt;最近苦命的德瑞克又遇到了幾個新的需求&lt;/p&gt;&lt;p&gt;而這些需求又正好都跟ComboBox有關&lt;/p&gt;&lt;p&gt;就順便介紹一下VS2005中ComboBox的一些新功能&lt;/p&gt;&lt;p&gt;&lt;br /&gt;下面這兩個需求&lt;/p&gt;&lt;p&gt;Part1 看來困難，作起來卻很簡單&lt;/p&gt;&lt;p&gt;Part2 看來簡單，作起來卻有點困難&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Part1:ComboBox&lt;/p&gt;&lt;p&gt;&lt;strong&gt;需有自動完成功能&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;如使用者輸入[X]&lt;/p&gt;&lt;p&gt;下拉選單會出現與[X....]相關的選項&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Ans 1:&lt;/p&gt;&lt;p&gt;在以前，不管是VB或是VC&lt;/p&gt;&lt;p&gt;要做到下拉選單的自動完成&lt;/p&gt;&lt;p&gt;是有一定的難度&lt;/p&gt;&lt;p&gt;但是VS2005中ComboBox的新功能&lt;/p&gt;&lt;p&gt;就包含自動完成了&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;只要將ComboBox屬性中&lt;/p&gt;&lt;p&gt;AutoCompleteMode設為Suggest&lt;/p&gt;&lt;p&gt;AutoCompleteSource設為ListItems&lt;/p&gt;&lt;p&gt;就可以達到自動完成的需求&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;當然上面那兩個選項還有其他很彈性的設定&lt;/p&gt;&lt;p&gt;在此就不多介紹&lt;/p&gt;&lt;p&gt;總之VS2005幫程式設計師省去了很多麻煩&lt;/p&gt;&lt;p&gt;令人驚嘆&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546639-8377068606700431180?l=dereckyin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dereckyin.blogspot.com/feeds/8377068606700431180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546639&amp;postID=8377068606700431180' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/8377068606700431180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/8377068606700431180'/><link rel='alternate' type='text/html' href='http://dereckyin.blogspot.com/2007/03/comboboxpart1.html' title='關於ComboBox(Part1)'/><author><name>德瑞克</name><uri>http://www.blogger.com/profile/07104532376002723515</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546639.post-5965591156695141773</id><published>2007-03-07T00:13:00.000-08:00</published><updated>2007-03-07T00:14:47.509-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='程式設計'/><title type='text'>DataGridView 怎麼 Click?</title><content type='html'>在使用DataGridView物件來呈現我們的資料時，最常需要撰寫它的Click()事件&lt;br /&gt;&lt;br /&gt;通常，VB的使用者會在設計畫面上double Click，讓程式產生一個函式來撰寫Click事件的程式碼，可是.net預設產生的會是CellContentClick()事件，這個事件處理的是儲存格裡面的資料點選之後才會被觸發&lt;br /&gt;&lt;br /&gt;如果我們以這個作為Click()事件時，程式執行後，會發現點選Grid時笨笨的，有時有觸發到，有時沒有。 &lt;br /&gt;&lt;br /&gt;其實，正確的作法應該是選取它的CellMouseClick()才對，這樣每次點選，該事件都能夠被觸發，用起來也不會笨笨的，同理，DoubleClick()也應該選取CellMouseDoubleClick。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546639-5965591156695141773?l=dereckyin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dereckyin.blogspot.com/feeds/5965591156695141773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546639&amp;postID=5965591156695141773' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/5965591156695141773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/5965591156695141773'/><link rel='alternate' type='text/html' href='http://dereckyin.blogspot.com/2007/03/datagridview-click.html' title='DataGridView 怎麼 Click?'/><author><name>德瑞克</name><uri>http://www.blogger.com/profile/07104532376002723515</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546639.post-5598968285017584028</id><published>2007-03-07T00:11:00.000-08:00</published><updated>2007-03-07T00:13:34.271-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='程式設計'/><title type='text'>Stored Procedure回傳值的接收方法</title><content type='html'>相信很多人會照著書上的方法，為了想要能夠從Stored Procedure中接收回傳值，將SqlCommand的CommandType設為StoredProcedure，然後一個一個的Parameter設定型態、值、傳入傳出方法，慢慢的一個一個參數設定下去&lt;br /&gt;&lt;br /&gt;如果Stored Procedure的參數少的話還好，參數一多起來程式可是會搞死人，建議您使用比較方便的方法&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_TunN6WRXf90/Re5z_XPRmuI/AAAAAAAAAIQ/lDbFnHN5HFU/s1600-h/Untitled.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_TunN6WRXf90/Re5z_XPRmuI/AAAAAAAAAIQ/lDbFnHN5HFU/s400/Untitled.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5039092565481200354" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;直接將回傳的參數寫在Sql語法裡面，這樣一來，就可以省下command參數裡面許多煩人的設定了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546639-5598968285017584028?l=dereckyin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dereckyin.blogspot.com/feeds/5598968285017584028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546639&amp;postID=5598968285017584028' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/5598968285017584028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/5598968285017584028'/><link rel='alternate' type='text/html' href='http://dereckyin.blogspot.com/2007/03/stored-procedure.html' title='Stored Procedure回傳值的接收方法'/><author><name>德瑞克</name><uri>http://www.blogger.com/profile/07104532376002723515</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_TunN6WRXf90/Re5z_XPRmuI/AAAAAAAAAIQ/lDbFnHN5HFU/s72-c/Untitled.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546639.post-8242008193612670287</id><published>2007-03-07T00:10:00.000-08:00</published><updated>2007-03-07T00:11:03.131-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='程式設計'/><title type='text'>Right不見了</title><content type='html'>在以前VB中，有一個不錯的字串函式Right()，現在.net把它包裝在Microsoft.VisualBasic這裡&lt;br /&gt;&lt;br /&gt;其實可以發現到，微軟還是偏愛Visual Basic，以前Visual Basic所有的函式，在這個參考裡面都可找的到，而且，使用Visual Basic作開發專案時，[插入程式碼片段]也比使用C Sharp來的豐富&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546639-8242008193612670287?l=dereckyin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dereckyin.blogspot.com/feeds/8242008193612670287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546639&amp;postID=8242008193612670287' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/8242008193612670287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/8242008193612670287'/><link rel='alternate' type='text/html' href='http://dereckyin.blogspot.com/2007/03/right.html' title='Right不見了'/><author><name>德瑞克</name><uri>http://www.blogger.com/profile/07104532376002723515</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546639.post-3546837147135329952</id><published>2007-03-07T00:05:00.000-08:00</published><updated>2007-03-07T00:08:58.057-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='程式設計'/><title type='text'>Mid切字會錯誤?</title><content type='html'>因為.net String預設以UTF8的格式來進行儲存與運算，所以，即使是中文字，它也只算作一個字在處理&lt;br /&gt;&lt;br /&gt;這對於一些需要做切字，如上下行電文來說，將會非常的困擾，如果有中英夾雜的一個字串，想要正確的切出字串固定長度的資料，使用預設的String物件，將無法切得正確的資訊&lt;br /&gt;&lt;br /&gt;以下，是一個可正確切得字串裡部分資料的函式，中文算成2個bytes&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_TunN6WRXf90/Re5y6nPRmtI/AAAAAAAAAII/TeU2eb9z1NQ/s1600-h/Untitled.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_TunN6WRXf90/Re5y6nPRmtI/AAAAAAAAAII/TeU2eb9z1NQ/s400/Untitled.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5039091384365193938" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546639-3546837147135329952?l=dereckyin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dereckyin.blogspot.com/feeds/3546837147135329952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546639&amp;postID=3546837147135329952' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/3546837147135329952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/3546837147135329952'/><link rel='alternate' type='text/html' href='http://dereckyin.blogspot.com/2007/03/mid.html' title='Mid切字會錯誤?'/><author><name>德瑞克</name><uri>http://www.blogger.com/profile/07104532376002723515</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_TunN6WRXf90/Re5y6nPRmtI/AAAAAAAAAII/TeU2eb9z1NQ/s72-c/Untitled.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546639.post-6156258543188077481</id><published>2007-03-06T23:58:00.000-08:00</published><updated>2007-03-07T00:04:33.301-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='程式設計'/><title type='text'>如何讓使用者用Enter鍵代替Tab鍵使用</title><content type='html'>許多使用者，還是習慣按下enter鍵之後，游標會從上一個控制項，跑到下一個控制項&lt;br /&gt;這種操作習慣，並不會隨著開發工具的更新而更新&lt;br /&gt;&lt;br /&gt;不過，我們還是有因應的方法的&lt;br /&gt;&lt;br /&gt;1. 在Form的屬性裡，&lt;strong&gt;先將KeyPreview設為True &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;2. 在Form的Keypress事件裡，加入下面程式碼&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_TunN6WRXf90/Re5xv3PRmsI/AAAAAAAAAIA/mwdH0jI6iK4/s1600-h/Untitled.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_TunN6WRXf90/Re5xv3PRmsI/AAAAAAAAAIA/mwdH0jI6iK4/s400/Untitled.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5039090100169972418" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;如此一來，使用者就可以用enter鍵來代替tab鍵使用了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546639-6156258543188077481?l=dereckyin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dereckyin.blogspot.com/feeds/6156258543188077481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546639&amp;postID=6156258543188077481' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/6156258543188077481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/6156258543188077481'/><link rel='alternate' type='text/html' href='http://dereckyin.blogspot.com/2007/03/entertab.html' title='如何讓使用者用Enter鍵代替Tab鍵使用'/><author><name>德瑞克</name><uri>http://www.blogger.com/profile/07104532376002723515</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_TunN6WRXf90/Re5xv3PRmsI/AAAAAAAAAIA/mwdH0jI6iK4/s72-c/Untitled.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546639.post-7215050837974108337</id><published>2007-03-06T23:51:00.000-08:00</published><updated>2007-03-06T23:52:09.979-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='程式設計'/><title type='text'>含有Reporting Service的程式，在用戶端沒辦法開報表檔?</title><content type='html'>我們做好的程式，如果其中含有Reporting Service的Viewer，即使使用者端有灌好.net 2.0的Framework，還是沒有辦法開啟報表檔的，使用者端還需要灌Reporting Service的Redistribution Pack，這個Pack在有開發環境的電腦裡面都有&lt;br /&gt;&lt;br /&gt;轉發套件&lt;br /&gt;Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\ReportViewer\ReportViewer.exe&lt;br /&gt;語言套件 &lt;br /&gt;Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\ReportViewer\zh-CHT\ReportViewerLP.exe&lt;br /&gt;&lt;br /&gt;語言套件可灌可不灌，如此，客戶端就可以看報表了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546639-7215050837974108337?l=dereckyin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dereckyin.blogspot.com/feeds/7215050837974108337/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546639&amp;postID=7215050837974108337' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/7215050837974108337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/7215050837974108337'/><link rel='alternate' type='text/html' href='http://dereckyin.blogspot.com/2007/03/reporting-service_8565.html' title='含有Reporting Service的程式，在用戶端沒辦法開報表檔?'/><author><name>德瑞克</name><uri>http://www.blogger.com/profile/07104532376002723515</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546639.post-5125841771486781563</id><published>2007-03-06T23:31:00.000-08:00</published><updated>2007-03-07T00:44:28.728-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='程式設計'/><title type='text'>如何讓Reporting Service一頁固定列印三筆(N筆)</title><content type='html'>在苦命的銀行專案生涯進行當中，接觸了一種叫傳票的東東時，使用者會希望一頁固定要三筆資料顯現，這時就要用到Reporting Service的清單(list)物件了，以下列出作法步驟(以A4紙列印為例)&lt;br /&gt;&lt;br /&gt;1. 將報表大小調整成A4的尺寸，請參考之前Reporting Service如何設定列印紙張為橫式的方法&lt;br /&gt;&lt;br /&gt;2. 拉一個list物件，將其高度設定為略小於 (29.7/3)cm &lt;br /&gt;&lt;br /&gt;3. 將list物件放置在最上方&lt;br /&gt;&lt;br /&gt;4. 在list物件裡，拉出報表格式&lt;br /&gt;&lt;br /&gt;重點來了&lt;br /&gt;&lt;br /&gt;現在如果預覽報表，會發現可能有些頁面有三筆，有些有兩筆，並沒有辦法滿足我們的需求，這時，在list物件上面按右鍵，會出現一個[清單屬性]對話框，裡面有一個選項：&lt;strong&gt;[儘可能將清單配置於單一頁面上]&lt;/strong&gt;，將它打勾，這樣，每頁報表就可以正常顯現三筆了&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_TunN6WRXf90/Re5wQXPRmrI/AAAAAAAAAH4/rDs9FwOgnHA/s1600-h/Untitled.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_TunN6WRXf90/Re5wQXPRmrI/AAAAAAAAAH4/rDs9FwOgnHA/s400/Untitled.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5039088459492465330" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546639-5125841771486781563?l=dereckyin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dereckyin.blogspot.com/feeds/5125841771486781563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546639&amp;postID=5125841771486781563' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/5125841771486781563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/5125841771486781563'/><link rel='alternate' type='text/html' href='http://dereckyin.blogspot.com/2007/03/reporting-servicen.html' title='如何讓Reporting Service一頁固定列印三筆(N筆)'/><author><name>德瑞克</name><uri>http://www.blogger.com/profile/07104532376002723515</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_TunN6WRXf90/Re5wQXPRmrI/AAAAAAAAAH4/rDs9FwOgnHA/s72-c/Untitled.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546639.post-3865616885039883946</id><published>2007-03-06T23:22:00.000-08:00</published><updated>2007-03-06T23:25:56.267-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='程式設計'/><title type='text'>Reporting Service預覽還沒跑完就關掉，會有error產生?</title><content type='html'>在預覽報表時，reporting service是一頁一頁去產生報表的預覽的，這時，如果使用者心急，把報表預覽畫面切掉，程式會產生一個exception(Invoke or BeginInvoke Error)，消除方法如下&lt;br /&gt;&lt;br /&gt;1. 在放置報表元件ReportViewer的Form上面，的[類別名稱]下拉選單中，選擇該Form的事件如下圖&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_TunN6WRXf90/Re5osHPRmoI/AAAAAAAAAHg/vuklgFIDSqM/s1600-h/image001.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_TunN6WRXf90/Re5osHPRmoI/AAAAAAAAAHg/vuklgFIDSqM/s400/image001.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5039080140140812930" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. 然後在該Form的FormClosing裡面加上程式碼如下&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_TunN6WRXf90/Re5o3XPRmpI/AAAAAAAAAHo/ySNt6DUkVfs/s1600-h/Untitled.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_TunN6WRXf90/Re5o3XPRmpI/AAAAAAAAAHo/ySNt6DUkVfs/s400/Untitled.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5039080333414341266" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;其中放置的數字為等待時間，0代表馬上結束，-1代表等待Viewer結束之後回傳，通常放-1讓Viewer自己結束之後再關掉會比較好&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546639-3865616885039883946?l=dereckyin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dereckyin.blogspot.com/feeds/3865616885039883946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546639&amp;postID=3865616885039883946' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/3865616885039883946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/3865616885039883946'/><link rel='alternate' type='text/html' href='http://dereckyin.blogspot.com/2007/03/reporting-serviceerror.html' title='Reporting Service預覽還沒跑完就關掉，會有error產生?'/><author><name>德瑞克</name><uri>http://www.blogger.com/profile/07104532376002723515</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_TunN6WRXf90/Re5osHPRmoI/AAAAAAAAAHg/vuklgFIDSqM/s72-c/image001.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546639.post-4192798347115018990</id><published>2007-03-06T23:16:00.000-08:00</published><updated>2007-03-06T23:20:05.369-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='程式設計'/><title type='text'>Reporting Service跑出比原本預期的還多頁(空白頁)?</title><content type='html'>在預覽表時，原本只有兩三頁的報表，列印出來時，突然印出了多一倍的頁面，浪費了紙張，這時，我們就要去檢視一下報表本身的size。&lt;br /&gt;&lt;br /&gt;首先，我們要知道，報表檔預覽列印所顯示的頁數跟整頁模式所顯示的頁數是不一樣的，列印時會依照列印紙張大小來調整列印的頁數，所以是以整頁模式所顯示的頁數為準，之前介紹過如何調整列印紙張的大小，現在我們要依照列印紙張來調整我們報表的大小，使其不至於超過紙張大小而多印出來沒有必要的空白頁&lt;br /&gt;&lt;br /&gt;1. 開啟報表檔(rdlc)，選擇[報表] -&gt; [報表屬性]，開啟報表屬性對話框，切換到[配置]頁簽，看看頁寬與頁高的尺寸，然後看一下左邊界、右邊界、上邊界、下邊界，記下他們的邊界值&lt;br /&gt;&lt;br /&gt;2. 再檢查報表(rdlc)屬性的size值，通常寬度會造成空白頁的產生，所以 (報表屬性.頁寬) – (左邊界) – (右邊界) 必須要大於 (報表檔. Width)&lt;br /&gt;&lt;br /&gt;3. 如果經過調整之後，還是有空白頁的產生，那就將報表再縮減一些，多調整幾次，應該就不會有空白頁的產生了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546639-4192798347115018990?l=dereckyin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dereckyin.blogspot.com/feeds/4192798347115018990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546639&amp;postID=4192798347115018990' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/4192798347115018990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/4192798347115018990'/><link rel='alternate' type='text/html' href='http://dereckyin.blogspot.com/2007/03/reporting-service_06.html' title='Reporting Service跑出比原本預期的還多頁(空白頁)?'/><author><name>德瑞克</name><uri>http://www.blogger.com/profile/07104532376002723515</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546639.post-2961435810805570334</id><published>2007-03-06T23:13:00.000-08:00</published><updated>2007-03-06T23:21:50.306-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='程式設計'/><title type='text'>Reporting Service如何設定列印紙張為橫式(調整大小)？</title><content type='html'>相信很多人在剛剛接觸Reporting Service時，會不知道怎樣設定列印紙張大小，一般來說，Reporting Service會依照報表的大小尺寸，自動選擇列印紙張，如A4 (21cm, 29.7cm)&lt;br /&gt;&lt;br /&gt;但是問題來了，如果今天我們想要設定報表為橫印，雖然在rdlc檔屬性裡面設定它的size為(29.7cm, 21cm)，列印紙張大小還是沒辦法調整成橫式的，設定方法其實很簡單：&lt;br /&gt;&lt;br /&gt;1. 首先先開啟您要橫印的報表檔(rdlc)，這時，VS2005就會多了一項[報表]的選單在上面&lt;br /&gt;2. 選擇[報表] -&gt; [報表屬性]，開啟報表屬性對話框，切換到[配置]頁簽，將頁寬設定為29.7cm，頁高設定為21cm&lt;br /&gt;&lt;br /&gt;如此一來，您在預覽報表時，切換到整頁模式，就會發現報表的紙張設定已經設定為A4橫式了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546639-2961435810805570334?l=dereckyin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dereckyin.blogspot.com/feeds/2961435810805570334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546639&amp;postID=2961435810805570334' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/2961435810805570334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/2961435810805570334'/><link rel='alternate' type='text/html' href='http://dereckyin.blogspot.com/2007/03/reporting-service.html' title='Reporting Service如何設定列印紙張為橫式(調整大小)？'/><author><name>德瑞克</name><uri>http://www.blogger.com/profile/07104532376002723515</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10546639.post-3197894619366757444</id><published>2007-03-06T00:38:00.000-08:00</published><updated>2007-03-06T23:08:20.557-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='程式設計'/><title type='text'>還要Lost Focus嗎?</title><content type='html'>以前VB在檢查TextBox的內容時，習慣將檢查的程式，放在TextBox.LostFocus裡，現在，在.net中，放在哪裡會比較適當？ 下面有一個表，記錄了TextBox在輸入時相關的事件流程&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_TunN6WRXf90/Re5jU3PRmmI/AAAAAAAAAHQ/WSHLP4L0ABE/s1600-h/Untitled.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_TunN6WRXf90/Re5jU3PRmmI/AAAAAAAAAHQ/WSHLP4L0ABE/s320/Untitled.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5039074243150715490" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;從這個表可以看出，現在比較適當的寫法應該是，把資料的檢查程式寫在Validating事件中，而通過檢查之後的處理寫在Validated事件中。而且，在Validating事件中，可以中止焦點的轉移，也就是說，如果資料檢查不合格，可以不讓焦點轉移，禁止用戶繼續填下一個項目，直到這個項目正確的被填入。&lt;br /&gt;Sample Code:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_TunN6WRXf90/Re5kyHPRmnI/AAAAAAAAAHY/D3qRrrjslQM/s1600-h/Untitled.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_TunN6WRXf90/Re5kyHPRmnI/AAAAAAAAAHY/D3qRrrjslQM/s400/Untitled.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5039075845173516914" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;這樣，如果輸入的資料不正確，將無法轉移到其他TextBox (e.Cancle = True)，也無法觸發其他按鈕。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10546639-3197894619366757444?l=dereckyin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dereckyin.blogspot.com/feeds/3197894619366757444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10546639&amp;postID=3197894619366757444' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/3197894619366757444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10546639/posts/default/3197894619366757444'/><link rel='alternate' type='text/html' href='http://dereckyin.blogspot.com/2007/03/070305-subjectlost-focus.html' title='還要Lost Focus嗎?'/><author><name>德瑞克</name><uri>http://www.blogger.com/profile/07104532376002723515</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_TunN6WRXf90/Re5jU3PRmmI/AAAAAAAAAHQ/WSHLP4L0ABE/s72-c/Untitled.png' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
