2012年11月10日 星期六

informix 11.5 charindex

informix 11.5(含)版本以前沒有提供charindex功能.
因為想要依傳入的尋找 字元組合來取得符合的position,所以為了方便,自已寫了一個湊合著用
以下function是區分大小寫尋找的..

--DOP FUNCTION uf_charindex;
/*
in_str:被搜尋的字元

in_delimiter;尋找字元
in_occurence:被找到的次數
in_exact:是否依in_delimiter逐字尋找 

*/

CREATE FUNCTION uf_charindex
(in_str VARCHAR(255),in_delimiter VARCHAR(255)
,in_occurence INTEGER, in_exact CHAR(1) )
RETURNING INTEGER ;

DEFINE q_pos INTEGER;
DEFINE i INTEGER;
DEFINE q_len INTEGER;
DEFINE q_time INTEGER;
DEFINE j INTEGER;
DEFINE q_len_del INTEGER;
DEFINE q_found CHAR(1);
DEFINE q_str VARCHAR(255);
DEFINE q_step INTEGER;

IF nvl(in_occurence,1) <=1 THEN
 LET in_occurence = 1;
END IF;

LET q_time=0;
LET i = 1;
LET q_pos = 0;
LET j = 1;
LET q_found = '0';
LET q_step = 1;
LET q_len = char_length(in_str);
LET q_len_del = char_length(in_delimiter);

--是否依in_delimiter逐字尋找符合字
IF in_exact = '1' THEN --完全符合
    LET q_step = q_len_del;--先記下完整字長度
    LET q_len_del = 1; --最外層只跑一次即可
END IF ;

FOR j = 1 TO q_len_del STEP 1
   LET i = 1;
   LET q_time = 0;
   LET q_pos = 0;
   LET q_found = '0';

   --取比較字(若in_exact='1'則全部符合)
   IF in_exact = '1' THEN
      LET q_str = in_delimiter;
   ELSE --否則逐字找直到找到in_occurence為止
      LET q_str =  substr(in_delimiter,j,1);
   END IF;
   FOR i = 1 TO q_len STEP 1
      IF substr(in_str,i,q_step) = q_str THEN
         LET q_pos = i;
         LET q_time = q_time +1;
         --找到後若與指定出現次數相符則結束
         IF q_time = in_occurence THEN
            LET q_found = '1';
            EXIT FOR;
         END IF;
     END IF;
   END FOR;
   IF q_found = '1' THEN
      EXIT FOR;
   END iF;
END FOR;

RETURN q_pos;

END FUNCTION;




測試一下

SELECT FIRST 1 uf_charindex("臺東縣臺東市","縣市",1,'0') FROM systables;
傳回3

SELECT FIRST 1 uf_charindex("臺北市信義區","縣市",1,'0') FROM systables;
傳回3

SELECT FIRST 1 uf_charindex("臺東縣臺東市","市縣",1,'0') FROM systables;
傳回6

SELECT FIRST 1 uf_charindex("This is a book","book",1,'1') FROM systables;
傳回11

SELECT FIRST 1 uf_charindex("This are a lot of bOOks","O",2,'1') FROM systables;
傳回21


SSRS 2008 R2 網站很慢

下載了Report Builder 3.0進行測試
安裝過程中,需要設定report server
結果在進入 http://servername/reportserver 網頁的過程中,好慢好慢.

試了半天,以為是自已的SSRS 2008 R2安裝有問題.

結果竟是因為防毒軟體NOD32 Web存取防護中,HTTP、HTTPS掃描設定中啟用了HTTP檢查.
雖然試著位址管理想要排除本機HTTP的掃描. 但似乎都無效??

只好先關閉啟用了HTTP檢查的功能.

關閉後,Report Server變得飛快..當然Report Builder  Preview也變快了

另外, 在http://localhost/reports/ 下, 按下報表產生器後, 出現了以下訊息

若使用報表產生器,您必須在此電腦上安裝.Net Framework 3.5 
 
但本機的.net framework明明就是上到了4.0
 
結果在切換成相容性檢視後,就正常了.
 
雖然我之前sql server 2008 r2安裝的是英文版,
但report manger web site的介面是跟著IE的語言設定而定的,所以介面就出現了中文
 
如果想要變回英文,則在IE網際網路選項中, 一般頁籤最下方的語言鍵,新增英文[en]語言,並調整序順到第一位

即可切換為英文介面.

另外,由 http://localhost/reports/ 下安裝報表產生器會自動安裝中文版report builder 3.0
 
若要使用英文版介面,則需再下載安裝英文版report builder後,再自行開啟即可.
 
 
 

publish error allowDefinition='MachineToApplication'

一個老舊的aspx web form專案,調了一些功能建置成功,但進行部署時顯示以下錯誤。 在應用程式層級之外使用註冊為 allowDefinition='MachineToApplication' 的區段發生錯誤。錯誤的原因可能是虛擬目錄尚未在 IIS 中設定為...