2012年6月15日 星期五

Microsoft Office 2010 Filter Packs 的相關文章

今天有同事問我怎麼透過 Microsoft Office 2010 Filter Packs 來存取(查詢) office 文件內容, 我 google 了一下, 找到相關的網頁如下:








我手動試測試了一下相關指令:

EXEC sp_fulltext_service 'load_os_resources', 1
說明: load new IFilters


SELECT document_type, path FROM sys.fulltext_document_types
說明: 可以看到 .doc 和 .docx 都列在 doc type 裡.


附註: 舊版的 SQL Server 2000 好像也可以用 iFilter , 叫作 Microsoft Search Service.


我還沒試的指令, 及說明如下:




-- 說明: 把檔案, 放到某一個變數 @x.
DECLARE @x VARBINARY(MAX)
SET @x = (
 SELECT * FROM OPENROWSET
  (BULK 'c:\temp\SampleDoc.docx', SINGLE_BLOB) AS X)

-- 說明: 把變數(檔案) 放到 database 裡.
INSERT INTO dbo.docs VALUES('.docx',@x);




-- 說明: search 全文(所有欄位) 有 Bob 資料.
SELECT * FROM dbo.docs WHERE CONTAINS(doc, 'Bob');

2012年6月12日 星期二

Calling a .NET Component from a COM Component

今天看到 msdn 上一篇不錯的文章:

Calling a .NET Component from a COM Component
http://msdn.microsoft.com/en-us/library/ms973802.aspx

雖然已經會了, 而且安裝 .NET Express 的版本就可以實作出 COM 元件了, 滿方便的.



相關文章:
使用ASP呼叫C#寫的COM元件
http://maxtellyou.blogspot.tw/2012/03/aspccom.html

如何用 C# 開發的 DLL 讓 VB6 可以使用
http://smilelight-tw.blogspot.tw/2011/06/c-dll-vb6.html

2012年6月11日 星期一

Google Map 的 Marker 在 IE7 + IE8 破圖的解法

最近有一個案子需要使用到 google map, 客戶的電腦是用 IE8 他看到的都是破掉的 Marker, 而且很怪有些電腦的 IE8 是正常的, 有些 IE8 不正常顯示(破圖), 解決辦法在避免使用 Marker 的最佳化參數(optimized) 即可, 對於居然查的到解法, 對自己深感佩服...


畫面1: 不使用最佳化(optimized: false):


畫面2: 使用最佳化(optimized: true):


結論: 預設最佳化有可能被開啟, 所以要手動關掉.

2012年5月24日 星期四

csv 欄位內容裡的 數字0 透過 Excel 開啟後消失的解法

最近做了一個匯出 csv 的功能, 一般的情況下手機都是數字 0 開頭, 例如: 09xx-xxx-xxx 但是用 Excel 開啟後該欄位的0 會被Excel 刪掉, 剩下 9xx-xxx-xxx 以前的解法是增加一個單引號為起始符號, 這個解法目前也還可以用, 但單引號也會一起出來, 變的不好看也很奇怪, 由於是要匯給 Excel 所以就透過公式的等號(=) 來解決, csv 內容如下:




再透過 Excel 開啟, 就可以看到漂亮的數字0 了, 感動ing.



2012年5月21日 星期一

Asp 中強迫輸出 BOM 字元的方式

做了一個匯出資料的功能, 但產生出來的 Utf-8 編碼 csv 檔, 用 Excel 檔開啟都會是亂碼, 他應該是誤以為是 ANSI 格式, 這次的目的是要讓 Excel  正常開啟 Utf-8 編碼 csv 檔.


如果是 asp.net 的話可以透過:

protected void Page_PreRender(object sender, EventArgs e) 
{ 
    Response.BinaryWrite(new byte[] { 0xEF, 0xBB, 0xBF }); 
}


來產生, utf-8 識別用的(BOM)字元.


如果是  php 的話, 就是:
fwrite($fp, "\xEF\xBB\xBF".$output)


如果是 asp 的話, 可以透過下列的函數來丟出 BOM 字元,

sub SendHex(valHex)
    for cHex = 1 to Len(valHex) step 2
        Response.BinaryWrite ChrB(CByte("&H" & Mid(valHex,cHex,2)))
    next
end sub

我比較建議使用下面這個方法:

    Response.CodePage = 65001
    Response.BinaryWrite(chrb(239))
    Response.BinaryWrite(chrb(187))
    Response.BinaryWrite(chrb(191))



另一個解法是透過 Server.CreateObject("ADODB.Stream") 物件來增加(或移除) BOM 字元, 參考看看: http://www.andmm.cn/post/48.html


我是透過ADODB.Stream 來處理, 最後用 Excel 開啟 csv 檔就正常了.

2012年5月11日 星期五

java 雞婆的合併tag 造成畫面跑版

雞婆的 java 的 xsl 處理時, 自動合併 tag, <noscritp></noscritp> 合併成 <noscript /> , html 畫面如下:

說明: 在 noscript tag 之後都東西, 通通算在 noscript 裡, 所以瀏覽器就通通看不到東西, 當然我覺得這個瀏覽器真笨, 目前 google chrome 20.0 + firefox v13.0 + ie 8 通通顯示不出來, 都是笨笨的瀏覽器.


發生的原因 如下:
說明: 因為 if ... 到  /xsl:if 不成立.


解決辦法: 增加&nbsp; 在 noscript 區塊裡, 讓 noscript tag 不會自動被合併.

2012年5月9日 星期三

java 雞婆的合併tag 造成css 或 script 相容性上的問題

前陣子做的好 google map, 如下圖, 系統分析師今天反應有一個 block 消失了, 我檢查一下 html 元素, 真的被蓋過去了.

說明: 右上方有一個透明的橘色區塊, 被 google map 蓋過去.


我先挑戰在這個 block 增加 css style="clear:both;" 一樣無解, 只好求助UI設計大師 Anita, 調了很久也弄不出所以然, 最後 Anita 發現問題在這一個 block 被包含在 google map 的 div tag 裡, 終於找到發生的原因就是 JSP 在處理 xsl 時, 把
合併成一個
所以造成的錯誤, 結論就是在 div 裡增加   讓 div 不會雞婆的自動被合併, xsl 程式碼如下:


如果, 不增加   的話, 產生出來的 html 如下:
<div style="width:100%;" id="map_canvas" class="mapimg" />


由於不是第1次 遇到, 之前也有因為 tag 被合併後, div 吃不到 css 的 class 的情況, 所以這次比較快就解決了, 解決後正常的畫面如下:
說明: 被蓋住的 block 就秀出來了, 感動...

Facebook 留言板