2010年10月27日 星期三

C# throw 用法

用於自訂錯誤上
就是如果遇到自訂問題
會中斷程式而跑出自己定義的錯誤
所以大致上都會搭配Try Catch使用

string message = string.Format("connection timeout");
throw new TimeoutException(message);


然後try Catch 就如這樣用

try
{
connn();
}
catch (TimeoutException ex)
{
MessageBox.Show(ex.ToString());
}

2010年10月22日 星期五

C# errorProvider

用來提示錯誤用
主要寫法

if (textBox1.Text == "")
errorProvider1.SetError(textBox1, "No Data!!");
else
errorProvider1.SetError(textBox1, "");


可提示textBox1錯誤部份

2010年10月21日 星期四

C# Form 開啟 新的Form

Form 開新的Form


private Form2 form2 = new Form2(); //外面全域變數


try //開啟地方
{
form2.Show();
}
catch
{
form2 = new Form2();
form2.Show();
}

這樣寫 如果Form2被關掉也可以繼續打開
如果有打開 不會再打開第二次

2010年10月20日 星期三

C# TabControl 不能改變 Tab

加入這個Selecting觸發 就行了

private void tabControl1_Selecting(object sender, TabControlCancelEventArgs e)
{
e.Cancel = true;
}

C# Excel 數字字串被轉成數字

因為產生EXCEL後
數字字串會很貼心的自己轉成數字型態
我前面的000都不見了!!!!!!!!!!!!

所以
在字串前面多了一個 ==> '
這樣就行了 XDDD

C# VS2010 Excel.ApplicationClass() 錯誤

在VS2010部分
Excel.ApplicationClass() 編譯會錯誤
因為已經改成宣告
Excel.Application()
這樣就行了

想說 奇怪 同程式怎不能跑
XDDD

2010年10月19日 星期二

C# Linq to Sql 寫T-Sql語法

雖然Linq很強大
但是有些特殊部份無法使用 T_T
所以還是要回歸到最基礎的SQL語法來寫
以下就是寫法

using (LinqDataContext db = new LinqDataContext(Context))
{
db.Log = Console.Out;
var q = db.ExecuteQuery <Class>(@"EXEC synonyms N'select * from [user]'"); //雙引號內為T-SQL語法
}


像我語法內主要是用在Synonyms用在Linked Servers上
因為查了一下 找不到怎樣在Linq上做Linked Server的查詢法
又在不能增加Stored Procedures的狀況下
所以就只好直接用T-Sql語法直接硬上!!! XDDD

2010年10月17日 星期日

C# Linq Stored Procedures uniqueidentifier output

當Stored Procedures有時候會可以不需要輸入值
會自己產生
但又有欄位時候 宣告成uniqueidentifier output 型態
這時候Linq 呼叫要怎樣解決勒!!!!


System.Guid? id = System.Guid.Empty;
Linq.Insert("test", "123456", ref id);

他的型態是System.Guid? 所以宣告一個空值給他
然後 給值時候需多加上ref型態 這樣就可以搞定囉!!!!

2010年10月11日 星期一

Linq 使用多執行緒 Parallel

剛剛發現Linq有支援Parallel
看了就很HIGH的想要用看看
結果!!!
不適用在SQL上 叭叭 XDDDD

但是本機端的就可以拿來用

還有一個重點是
Parallel後存入Array後 順序會大亂
因為做完就存入的關係
所以 這部份要注意!!!

如果要排列整齊
請用

int[] data = new int[] { 0, 1, 2, 3 };
int[] data2 = (from x in data.AsParallel(QueryOptions.PreserveOrdering)
select x * 2).ToArray();

這樣會排列過後
但是Loading會變重
所以就自己取捨怎樣做才是正確的囉!!!!

參考網站

硬體 接雙螢幕 單台螢幕會閃爍

最近敗了兩台螢幕
結果發現
接了兩個DVI以後 單邊的螢幕就會閃爍
大概猜到顯卡不夠力
但是
經過幾百種情況測試時
發現
單邊接DSUB線就不會有問題了!!
雖然我顯卡是雙DVI出口
但就是一邊全DVI 一邊DVI轉DSUB
這樣就行了
後來感覺是線的訊號不夠強
借了一台粗粗的貴貴的DVI線試看看!!!
竟然正常了!!!
所以應該就是顯卡推不動雙DVI訊號線
導致單邊訊號有點微弱造成的情況
結論就是
如果要推HD 1920*1080...
就乖乖去再敗一條"貴商商"的訊號線吧

2010年10月7日 星期四

C# dataGridView Update觸發

因為觸發元件太多 紀錄一下
用dataGridView1_CellEndEdit去觸發

C# local Database

可以架隨機版的DB在Form上
這樣就不用另外開SQL架DB
剛剛在測試時候
發現一直更新不起來
就覺得怪怪的
後來發現....
原來........
是設定DB時候在初始Project資料夾位置
但是執行會複製進去DeBug裡面
所以勒
他就一直把沒更新的一直蓋 一直蓋
蓋到天荒地老
導致完全沒有辦法更新
= =+
被騙了

其他功能跟一般DB指令一樣

2010年10月4日 星期一

T-SQL With

因為接觸 T-SQL不久
所以有些用法不太認識
所以紀錄一下簡單的東西

With 用法在做一個虛擬TABLE
但是這個虛擬TABLE只能被使用一次就消失了

大概用法是

With TableName(ColumnName) as (Select XXX From OOO)

2010年10月3日 星期日

T-SQL xp_cmdshell

因為xp_cmdshell
如它名稱說的
可以用cmd語法去執行
這就很恐怖了
所以預設是關閉的
但是有時候要用到
就先把它打開囉

開啟

exec sp_configure 'show adv',1
reconfigure
exec sp_configure 'xp_cmdshell',1
reconfigure


關閉

exec sp_configure 'show adv',1
reconfigure
exec sp_configure 'xp_cmdshell',0
reconfigure


請小心服用+做好權限管理!!!!