2010年11月25日 星期四

T-SQL Chinese_Taiwan_Stroke_CI_AS

剛剛發生這個錯誤
Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Chinese_Taiwan_Stroke_CI_AS" in the equal to operation.

找了一下
說要再等於雙方加入這個 就行了
collate Chinese_Taiwan_Stroke_CI_AS


--[PersonID] = [ID] --舊的方式 改成下面這個
[PersonID] collate Chinese_Taiwan_Stroke_CI_AS = [ID] collate Chinese_Taiwan_Stroke_CI_AS

C# ?? 問號 用法

是用來判斷是否為Null 如果是Null 回傳 ?? 後方的值
如果不是Null 回傳?? 前方的值


int x = null;
int y = x ?? -1;

2010年11月21日 星期日

T-Sql Pivot 樞紐

跳來跳去的 XDDD
換成T-SQL的方法啦


Select * from
(
SELECT CONVERT(DATE,[Main].[Date]) as xxx,COUNT([ProjectNo]) as ZZZ,[ProjectNo] ,COUNT(*) AS Cnt
FROM [Main]
group by CONVERT(DATE,[Main].[Date]) ,[ProjectNo]
) as S
PIVOT
(
SUM(Cnt)
FOR [ProjectNo] IN
([1],[3],[5],[7],[9])
) AS PivotTable


雖然能跑
但是出來GROUPBY 有錯
群組有錯
導致現在嚴重卡點...
他的值是對的
但不是我要的
所以先紀錄一下 = =+

C# Linq Pivot 樞紐

由於要做分析
所以有用到這東西
所以紀錄一下
Linq 用法


var LinqDataSource = from a in Linq.Mains
group a by a.date.Date into b
orderby b.Key
select new
{
Date = b.Key,
Total = b.Count(),
Project1 = b.Where(x => x.ProjectNo == 1).Count(),
Project3 = b.Where(x => x.ProjectNo == 3).Count(),
Project5 = b.Where(x => x.ProjectNo == 5).Count(),
Project7 = b.Where(x => x.ProjectNo == 7).Count(),
Project9 = b.Where(x => x.ProjectNo == 9).Count(),
};


不過麻煩的是
要先知道他欄位
但是像我想要直接用CODE抓欄位的就........
還在找動態方式...
先紀錄一下!!!

2010年11月18日 星期四

C# Chart 資料無值顯示零

一串資訊進來
每天日期不同
但是有幾天是跳過的
則要帶0進去

要用
下列方式

protected void Chart1_DataBound(object sender, EventArgs e)
{
Chart1.DataManipulator.InsertEmptyPoints(1, IntervalType.Days, "Series1");
}


這樣畫出來的曲線圖才會有0值 不然都會直接從A直接連到B點
資訊就會錯誤了

2010年11月3日 星期三

T-SQL Performance DeadLock 偵測+語法

自己參考各方文件寫的偵測
可以抓造成死結的源頭+語法

IF EXISTS(SELECT * FROM master.sys.sysprocesses WHERE spid
IN (SELECT blocked FROM master.sys.sysprocesses))
BEGIN
DECLARE @SPID binary(20),@Handle binary(20), @retVal varchar(8000)
SELECT @SPID =SPID FROM sysprocesses WHERE blocked = 0 AND SPID IN (SELECT DISTINCT blocked FROM sysprocesses)
SELECT @Handle = sql_handle
FROM master..sysprocesses
WHERE SPID = @SPID
SELECT @retVal = convert(varchar(8000), [text])
FROM ::fn_get_sql(@Handle)

SELECT SPID,status 'Status','UserPcName'=SUBSTRING(hostname,1,12),'LogInID'=SUBSTRING(SUSER_SNAME(sid),1,30),'IsLock'=CONVERT(char(3),blocked),
'DBName' = SUBSTRING(DB_NAME(dbid),1,20),cmd 'cmd',waittype 'waittype', Program = program_name, LastCommand = @retVal
FROM sysprocesses
WHERE blocked = 0
AND SPID IN (SELECT DISTINCT blocked FROM sysprocesses)
END
ELSE
SELECT 'Processes No Lock'

2010年11月2日 星期二

XP 拖曳 不同槽 剪下貼上

XP
拖曳不同槽時侯 會執行複製狀態 不會剪下貼上
拖曳相同槽時候 會執行搬移狀態 不會複製

所以
拖曳不同槽 要剪下貼上 按住SHIFT +拖曳
要拖曳同槽 要複製 按住CTRL +拖曳

EXCEL 符合*字串的數量

有用到某區間內符合某個字串的數量有幾筆
所以找了一下
發現了這個用法
還不錯


=COUNTIF(P152:P201,"*")

這用法 是 P152~P201內有字串的都算一筆

" " 內就是你要用的字串

Dotfuscator Datatable Column ReName

最近再把Form模糊化
使用了VS提供的Dotfuscator來使用
結果發現
我DataTable的欄位名稱被改名了
結果導致我有定位名稱的資訊全部死掉 @_@
EX:Linq 的 dataTable.Field("Name")
Exclude也不行
目前無法排除中
正在找方法
先提出來
找到方法在PO上來

真是麻煩的東西阿 ~_~