2009年11月26日 星期四

rdlc matrix overlap

通常習慣先用rdl design layuout測試sql,preview後沒問題再把rdl rename成rdlc,然後再放在asp.net進行程式碼撰寫

這幾天用到martix做了一張表,因為有複雜的邏輯,試了幾天好不容易試出來,用了二個martix做重疊再加上寫一些iif的判斷,最後preview報表數字也都很ok.

結果用rdlc 試跑程式後,發現有一行數字差很大, 而且二個martix overlap在rdl 很ok,但rdl 卻變成不無法重疊, 折成二塊了.

檢查了半天,看不出rdl和rdlc的差異在哪? 都是一樣的sql 啊???

無解ing......





2009年11月25日 星期三

set vs select variable

在sqltips上看到這篇When to use SET vs SELECT when assigning values to variables
說明得很詳細.

以前只以為 select 只能接一個變數, 後來在sqltips上看到某一篇文的scripts時,
才知,原來一次select 可以接多個變數

select @var1 = col1 , @var2= col2 from table1 where pk = 1

mssqltips 是一個很不錯的網站, 多去逛逛收穫不少

2009年11月18日 星期三

informix openrowset

要先安裝informix odbc,設定好dsn

SELECT * FROM OPENROWSET('MSDASQL','DSN=ifxdb;UID=test;PWD=test','select * from tabTest')

2009年11月17日 星期二

sql server linked db error -

某天, sql 2000上的 連到informix 的liked db 發生了以下的錯誤..

---------------------------
SQL Server Enterprise Manager
---------------------------
錯誤 7399: OLE DB Provider 'MSDASQL' 報告了錯誤。提供者報告了未預期的重大錯誤。
OLE DB 錯誤追蹤 [OLE/DB Provider 'MSDASQL' IDBInitialize::Initialize returned 0x8000ffff: 提供者報告了未預期的重大錯誤。]。
---------------------------
確定
---------------------------

查了半天, 相關的設定都沒有錯, 重新建立linked db設定....都沒用哩.
更奇怪的是, dts 透過相同的odbc 設定直接連到informix 下載資料也都ok
唯獨透過linked db , 以openquery 的方式就發生以上的錯誤



想說重新啟動一下sql server 吧. 結果, 竟然好了耶

針正是賭著鬼啊.........


2009年11月16日 星期一

並未將物件參考設定為物件的執行個體

vs2008+sp1, rebuild solution時會有這個error, 但沒有指出是哪一個page或物件,
再rebuild幾次,然後又ok
搞不清到底是哪兒發生問題
直接run web site又沒問題, 只有發生在build site的時候

也不是這位仁兄說的問題
"後來發現是 Solution 的 Startup Page 重新設一下就行了"-----> 沒用沒用

開始發生這個奇怪問題時,是把web site solution搬到另一個儲存路徑.

why????

後記....
半年後的一天,同事終於煩了,於是一個一個目錄加入想要測看看到底是什麼原因造成的
結果他說是因為在某個目錄有加入rdlc的原因,如果把rdlc檔案移除掉,compiler就不會出現問題了...
我在想,是不是因為在設計rdlc時,我通常都是先在SSRS 的report designer先做一個rdl,測試沒什麼問題後,再rename rdl to rdlc,然後再加入到vs的專案?

如果沒在vs專案修改過rdlc檔, compile似乎也沒問題.

another why????

you must choose a publish location that is not a sub-folder of the source web site

vs.net 2005, publish website with http://localhost/mywebsite
appears errors,

“you must choose a publish location that is not a sub-folder of the source web site”

just replace localhost with yourServerName,

it should be resolved.


2009年11月6日 星期五

Debug a SQL Assembly

參考 Overview of T-SQL and CLR debugging in SQL Server 2005

由Server Explorer 来Debug
  1. 开启assembly 的project, 例asmStatistics.sln, 进入Visual Studio (也可以不必开启任何Solution或Peoject)
  2. 在工具列-》 VIew -》 Server Explorer (Ctrl+ Alt + F5 ), 开启Server Explorer Window
  3. 在Server Explorer Window 的Data Connections , 按右键,选Add Connection,连线到要Debug的Database
  4. 展开这个Database,在 Assembly 下选要Debug的Assembly,例如asmStatistics, 展开后,选要Debug的Function, 例如zspAsmStatistics_test
  5. 在zspAsmStatistics_test按右键,选’‘Step Into Stored Procedure‘‘,即可进入Debugg Mode

2009年11月5日 星期四

sql server 取date 及 time

select convert(varchar(10) , getdate(),112 ) as myDate, convert(varchar(8),getdate(),8) as myHour
回傳:20091105 17:44:57

select convert(varchar(10) , getdate(),121 ) as myDate, convert(varchar(8),getdate(),8) as myHour

回傳:2009-11-05 17:44:57


2009年11月4日 星期三

tsql 多值的參數傳入stored procedure

在tsql中,如果單一條件要符合多個條件值時,都會以 in 的方式
select * from test where col1 in ( '1234','5678,'abcd')

如果這個多值的參數想要傳入做為stored proedure 的input parameter時,看來是不可行的
有二種方法:
1. 用charindex
select * from test where charindex ( col1 , '1234,5678,abcd') > 0

2.寫一個table function,
select * from test
where col1 in ( select valuString from dbo.zfnRtnStringTable ( '1234,5678,abcd' ) )

以下function來自一段不曉得在哪看過的script...,引用一下
CREATE FUNCTION dbo.zfnRtnStringTable ( @key varchar(8000))
RETURNS @rtnTable TABLE ( stringValue varchar(10))
AS
BEGIN
DECLARE @strValue varchar(10), @pos int
SET @key = @key+ ','
SET @pos= charindex(',', @key, 1)
IF replace(@key, ',', '') <> ''
BEGIN
WHILE @pos> 0
BEGIN
SET @strValue = left(@key, @pos- 1)
IF @strValue <> ''
BEGIN
insert into @rtnTable values( @strValue )
END
SET @key = right(@key, len(@key) - @pos)
SET @pos= charindex(',', @key, 1)
END
END
RETURN
END

自動記錄滑鼠點選操作

為了一個需求,需要人工去點選幾個滑鼠的點選行為,找了幾種工具,覺得GS Auto Clicker最實用,極符合我的需求,尤其是多個固定位置的button點擊,解決了一個很耗時間的工作。 最後設定完預設hotkey F8為啟用鍵,就可以開始自動做工了。再按F8結束工作。 GS Au...