還原資料庫的時候,忘記斷開所有連結而出現這個錯誤訊息真的很.........啊雜
雖然可以下指令Kill多餘連線,或改為單一使用者模式,
但懶惰如我,真的不是很喜歡那些方式。
所以在這裡提供一個方法,就是直接讓資料庫離線再還原。
它還有一個好處,就是還原完資料庫會自動上線,不用再點選線上工作~
終於不用記那些落落長的指令了(灑花)
2018年12月28日 星期五
2018年12月13日 星期四
[SQL] ISNULL:當值為 NULL 時以他值取代
有時候 DBNULL 真的很討厭
想要讓它以我們想要的預設值出現
又或者
當 DBNULL 的時候傳回別欄的值
這時候 ISNULL函數就非常好用了
例:
SELECT ISNULL(總成績, 0) , ISNULL(數甲成績, 數乙成績) FROM 成績總表
這時候第一欄當總成績為NULL時,就會代出0,
而第二欄是當數甲成績為NULL時,就會代出數乙成績。
想要讓它以我們想要的預設值出現
又或者
當 DBNULL 的時候傳回別欄的值
這時候 ISNULL函數就非常好用了
例:
SELECT ISNULL(總成績, 0) , ISNULL(數甲成績, 數乙成績) FROM 成績總表
這時候第一欄當總成績為NULL時,就會代出0,
而第二欄是當數甲成績為NULL時,就會代出數乙成績。
[SQL] IF EXISTS
有些在進行動作前會想要得知某條件是否符合或是否有值
這時候 EXISTS 就非常好用了
程式碼如下:
IF (EXISTS(SELECT * FROM Employee WHERE ID = '1234'))
BEGIN
DELETE FROM info WHERE ID = '1234' ;
INSERT INTO unit VALUES('1234','5678');
END;
大意為假如 EXISTS 後的指令有傳回值
則進行 BEGIN 與 END 間的指令
這時候 EXISTS 就非常好用了
程式碼如下:
IF (EXISTS(SELECT * FROM Employee WHERE ID = '1234'))
BEGIN
DELETE FROM info WHERE ID = '1234' ;
INSERT INTO unit VALUES('1234','5678');
END;
大意為假如 EXISTS 後的指令有傳回值
則進行 BEGIN 與 END 間的指令
2018年12月6日 星期四
[MS SQL] 變數宣告與使用
以前還不覺得需要變數的時候,都是自己手動乖乖打上那些字串們 ~
算是輕鬆愉快也不覺得辛苦 ~
直到最近遇見了大魔王...
要用同一個參數查十多張表,還要由A表搜出的欄位當做變數去搜B.C.D.E表
再這樣複製貼上我就要崩潰啦!!
有句話說得好 ~
科技來自於人性(懶惰)
所以我只好習得本技能 - SQL指令的變數宣告與使用
首先你要宣告變數(@EmployeeID )、設定變數型態與值
接下來就是呼叫它啦 ~ 有沒有很簡單
真是讓人太開心了!
以下程式請參考 ~
算是輕鬆愉快也不覺得辛苦 ~
直到最近遇見了大魔王...
要用同一個參數查十多張表,還要由A表搜出的欄位當做變數去搜B.C.D.E表
再這樣複製貼上我就要崩潰啦!!
有句話說得好 ~
科技來自於人性
所以我只好習得本技能 - SQL指令的變數宣告與使用
首先你要宣告變數(@EmployeeID )、設定變數型態與值
接下來就是呼叫它啦 ~ 有沒有很簡單
真是讓人太開心了!
以下程式請參考 ~
2018年11月30日 星期五
[GridView]無框線
很直覺的把border設為0之後,發現GridView還是有框線!
雖然只剩下border-bottom還是讓我崩潰,怎樣都弄不掉!!
最後發現是GridView自己的屬性在搞鬼,
想要無框線直接設GridLines="None"就好了,
還在那邊border: none或border: 0的我真像是笨蛋...
可惡 ~~~~
雖然只剩下border-bottom還是讓我崩潰,怎樣都弄不掉!!
最後發現是GridView自己的屬性在搞鬼,
想要無框線直接設GridLines="None"就好了,
還在那邊border: none或border: 0的我真像是笨蛋...
重點只有短短一行:GridLines="None"
可惡 ~~~~
2018年11月21日 星期三
TextBox 按下 Enter 鍵不要觸發 Postback 事件
在 TextBox 輸入完值之後總是會不小心按下 Enter 的人實在不在少數...
(感謝 Excel 的普及讓我們崩潰)
總之無論 Enter 是觸發預設按鈕還是整頁 Postback 都不要慌,
除了重新 Binding 資料外你還有個選擇,
就是讓 TextBox 中的 Enter 無效化!
(說得那麼好聽也不過就是讓 TextBox 中的 Enter 不做任何事)
直接來看Code吧!
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'避免輸入成績後按Enter觸發Postback
TextBox1.Attributes.Add("onkeypress", "if( event.keyCode == 13 ) { return false; }")
End Sub
總之無論 Enter 是觸發預設按鈕還是整頁 Postback 都不要慌,
除了重新 Binding 資料外你還有個選擇,
就是讓 TextBox 中的 Enter 無效化!
(說得那麼好聽也不過就是讓 TextBox 中的 Enter 不做任何事)
直接來看Code吧!
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'避免輸入成績後按Enter觸發Postback
TextBox1.Attributes.Add("onkeypress", "if( event.keyCode == 13 ) { return false; }")
End Sub
參考資料來源
2018年11月20日 星期二
[VB] 四捨五入 Math.Round
一般而言Math.Round沒帶 MidpointRounding.AwayFromZero參數時,
是四捨六入,也就是捨入至最接近值。
但只要加上MidpointRounding.AwayFromZero參數,就是我們一般認為的四捨五入。
Math.Round(0.625, 2) → 0.62
Math.Round(0.625, 2, MidpointRounding.AwayFromZero) → 0.63
關於這個問題推薦一個 網頁,
想要知道詳細狀況的可以參考一下喔~
是四捨六入,也就是捨入至最接近值。
但只要加上MidpointRounding.AwayFromZero參數,就是我們一般認為的四捨五入。
Math.Round(0.625, 2) → 0.62
Math.Round(0.625, 2, MidpointRounding.AwayFromZero) → 0.63
關於這個問題推薦一個 網頁,
想要知道詳細狀況的可以參考一下喔~
2018年10月24日 星期三
[CSS] !important CSS優先權問題
TextBox MultiLine狀態下關閉垂直捲軸
最近發現TextBox 設定MultiLine狀態下如果出現全半形混雜的狀況,會出現水平捲軸。
雖然增加字數後仍會自動換行,但會水平跟垂直捲軸會同時出現,搞得畫面很醜= =
這時候真的很想直接關閉水平捲軸,但又找不到TextBox內建的屬性來設定,
只好直接改寫CSS了!
.textarea
{
overflow-x: hidden; //水平捲軸
}
同理可證,要設定垂直捲軸就設定overflow-y的屬性;
如果想狠一點把水平跟垂直捲軸都關掉,就直接設定overflow的屬性就好了。
至於overflow系列各屬性設定出來的結果可以參考 w3schools
PS.w3schools 真是大家的良師益友啊 ~ 只不過要知道關鍵字會比較好找就是了!
雖然增加字數後仍會自動換行,但會水平跟垂直捲軸會同時出現,搞得畫面很醜= =
這時候真的很想直接關閉水平捲軸,但又找不到TextBox內建的屬性來設定,
只好直接改寫CSS了!
.textarea
{
overflow-x: hidden; //水平捲軸
}
同理可證,要設定垂直捲軸就設定overflow-y的屬性;
如果想狠一點把水平跟垂直捲軸都關掉,就直接設定overflow的屬性就好了。
至於overflow系列各屬性設定出來的結果可以參考 w3schools
PS.w3schools 真是大家的良師益友啊 ~ 只不過要知道關鍵字會比較好找就是了!
2018年10月19日 星期五
[bootstrap]頁籤功能
基本上這個功能只要編輯.aspx頁面就可以了,其中只要留意:
<%--頁籤列--%>
<ul class="nav nav-tabs" style="clear: both; margin-bottom: 10px;">
<li class="active"><a data-toggle="tab" href="#menu1">頁籤1</a> </li>
<li class=""><a data-toggle="tab" href="#menu2">頁籤2</a> </li>
<li class=""><a data-toggle="tab" href="#menu3">頁籤3</a> </li>
</ul>
<div class="tab-content">
<%--頁籤 1 內容--%>
<div id="menu1" class="tab-pane fade in active">
1
</div>
<%--頁籤 2 內容--%>
<div id="menu2" class="tab-pane fade">
2
</div>
<%--頁籤 3 內容--%>
<div id="menu3" class="tab-pane fade">
3
</div>
</div>
- "active"/"in active"要設給預設顯示的頁籤/內容
- li href 與 div id 要互相對應
這樣就可以了,其他的都很直覺 ~ 真是太感人了OQ
<%--頁籤列--%>
<ul class="nav nav-tabs" style="clear: both; margin-bottom: 10px;">
<li class="active"><a data-toggle="tab" href="#menu1">頁籤1</a> </li>
<li class=""><a data-toggle="tab" href="#menu2">頁籤2</a> </li>
<li class=""><a data-toggle="tab" href="#menu3">頁籤3</a> </li>
</ul>
<div class="tab-content">
<%--頁籤 1 內容--%>
<div id="menu1" class="tab-pane fade in active">
1
</div>
<%--頁籤 2 內容--%>
<div id="menu2" class="tab-pane fade">
2
</div>
<%--頁籤 3 內容--%>
<div id="menu3" class="tab-pane fade">
3
</div>
</div>
2018年10月16日 星期二
[LINQ] LEFT JOIN / GROUP JOIN
GroupJoin 可以得到與Left Join相似的結果,接下來只要使用 Select過濾GroupJoin 中的內容就可以得到想要的結果。
(使用DefaultIfEmpty 因匿名型別無法輸出NULL(無法轉換成強型別),需特別注意Null的處理)
例:
Dim Query = _
From oe In dt1.AsEnumerable _
Group Join i In dt2.AsEnumerable _
On oe.Field(Of String)("employeeid") Equals i.Field(Of String)("employeeid") Into Group _
From p In Group.DefaultIfEmpty() _
Select 部門 = oe.Field(Of Int32)("Dep"), _
員工 = oe.Field(Of String)("employeeid"), _
早餐 = If(p Is Nothing, "", p.Field(Of String)("早餐")), _
午餐 = If(p Is Nothing, "", p.Field(Of String)("午餐")), _
晚餐 = If(p Is Nothing, "", p.Field(Of String)("晚餐"))
或
From oe In dt1.AsEnumerable _
Group Join i In dt2.AsEnumerable _
On oe.Field(Of String)("employeeid") Equals i.Field(Of String)("employeeid") Into Group _
From p In Group.DefaultIfEmpty() _
Select 部門 = oe.Field(Of Int32)("Dep"), _
員工 = oe.Field(Of String)("employeeid"), _
早餐 = If(p Is Nothing, "", p.Field(Of String)("早餐")), _
午餐 = If(p Is Nothing, "", p.Field(Of String)("午餐")), _
晚餐 = If(p Is Nothing, "", p.Field(Of String)("晚餐"))
或
//array1 LEFT JOIN array2
var q = array1
.Join(array2,
a1 => ID,
a2 => a2.id,
(a1, a2) => new{
A= a1.ID,
B= a1.employee_id,
a2
})
.Where(x => x.Date < DateTime.Now)
.Select(x => x);
2018年10月11日 星期四
SQL 取得異動資料列數
ExecuteNonQuery 方法只會返回整數值來表示成功或受影響的資料列數目。
所以要計算實際影響的資料列時,只要將ExecuteNonQuery 方法轉換成數值來計算就好了。
畢竟有時候會寫一些IF NOT EXISTS之類的指令,實在懶得先查詢要影響的列數,就可以使用這個方式直接計算就好了!
Dim intReturn As Integer = Convert.ToInt16(myCommand.ExecuteNonQuery())
If intReturn > 0 Then
counter += 1
End If
所以要計算實際影響的資料列時,只要將ExecuteNonQuery 方法轉換成數值來計算就好了。
畢竟有時候會寫一些IF NOT EXISTS之類的指令,實在懶得先查詢要影響的列數,就可以使用這個方式直接計算就好了!
Dim intReturn As Integer = Convert.ToInt16(myCommand.ExecuteNonQuery())
If intReturn > 0 Then
counter += 1
End If
2018年9月27日 星期四
判斷是否為空值(Is Nothing、IsDBNull)
C#似乎只能用等於某值來做判斷= =;;
VB
控制項 Is Nothing
IsDBNull(資料欄位)
C#
控制項 == null
資料欄位 == DBNull.Value
2018年9月26日 星期三
For Each / foreach
嗯....這寫法算是有點不一樣!
...
Next
VB
For Each row As DataRow In GridView1.Rows...
Next
C#
foreach (GridViewRow gvRow in gvAssignEmp.Rows)
{
...
}
Try Catch
除大小括弧外,大小寫也是容易錯的地方!
Try
...
Catch ex As Exception
...
End Try
VB
Try
...
Catch ex As Exception
...
End Try
C#
try
{
...
}
catch (Exception ex)
{
...
}
2018年9月13日 星期四
DropDownList 一直跳回某個選項(亂跳)
今天發生一個很弔詭的狀況
就是在沒有指定SelectIndex、也沒有重新繫結DropDownList的狀況下
DropDownList 一直跳回某個選項
後來發現原來是因為ListItem的Value重複的關係
2018年9月12日 星期三
清除GridView資料
VB
Gridview1.DataSource = nothing
Gridview1.DataBind()
C#
Gridview1.DataSource = null;
Gridview1.DataBind();
顯示行號
沒有行號真的很難除錯,沒想到換個語言開發要重新設定的時候熊熊忘記怎麼做,趁還記得趕快紀錄下來XD
步驟如下:
1.
在功能表列上選擇 [工具] > [選項] 。
2.
展開 [文字編輯器] 節點,然後選取所使用語言的節點。
3.
找不到所使用語言可勾選視窗左下角 [顯示所有設定]。
4.
在顯示區塊勾選 [行號]。
RowDataBound 的 RowType
用 RowType分門別類處理Row的事件可以避免很多莫須有的問題喔 !
protected void gvRowDataBound(object sender, GridViewRowEventArgs e)
{
switch (e.Row.RowType)
{
//資料列
case DataControlRowType.DataRow:
RowControllerDataBinding(e);
break;
}
}
protected void gvRowDataBound(object sender, GridViewRowEventArgs e)
{
switch (e.Row.RowType)
{
//資料列
case DataControlRowType.DataRow:
RowControllerDataBinding(e);
break;
}
}
2018年9月7日 星期五
SELECT CASE (SWICH CASE)
switch (e.CommandName)
{
case "1":
Console.WriteLine("Case 1");
break;
case
"2":
case
"3":
Console.WriteLine("Case 2.3");
break;
default:
Console.WriteLine("Case Else");
break;
}
記得要加break....(淚)
If(一般/簡寫)
[VB]
一般寫法
If menuType = 0 Then
result = "成立"
Else
result = "不成立"
End if
Else
result = "不成立"
End if
簡寫
result = If( menuType = 0 ,"成立","不成立")
[C#]
一般寫法
if(menuType == 0){result = "成立";
}else{
result = "不成立";
}
簡寫
result = menuType == 0 ? "成立": "不成立";result = (menuType == 0 ) ? "成立": "不成立";
從 GridView 中找到 Row
RowCommand事件
GridViewRow row = (GridViewRow)(((Control)e.CommandSource).NamingContainer);用同Row中的控制項
GridViewRow row = (GridViewRow)(((Control)sender).NamingContainer);
GridViewRow row = (GridViewRow)(Label1.NamingContainer);
VB轉型,C#泛型(FindControl)
VB
Ctype(row.FindControl("lblManager3"), Label).Text = string.EmptyC#
((Label)row.FindControl("lblManager3")).Text = string.Empty;
訂閱:
文章 (Atom)
[Excel] 日期(數值)轉文字
Excel的日期格式真的常常使人抓狂, 在使用者輸入日期後該欄位真正的值會被Excel轉換成一串數字, 這串數字代表著自1900/1/1到該日期的總天數。 但程式或使用者真正要的,就不是這串數字, 他們就是要日期!要日期!! So, 為了取得真正的值只好使用TEXT函數來解決了 ...
-
還原資料庫的時候,忘記斷開所有連結而出現這個錯誤訊息真的很.........啊雜 雖然可以下指令Kill多餘連線,或改為單一使用者模式, 但懶惰如我,真的不是很喜歡那些方式。 所以在這裡提供一個方法,就是直接讓資料庫離線再還原。 它還有一個好處,就是還原完資料庫會自動上...
-
以前還不覺得需要變數的時候,都是自己手動乖乖打上那些字串們 ~ 算是輕鬆愉快也不覺得辛苦 ~ 直到最近遇見了大魔王... 要用同一個參數查十多張表,還要由A表搜出的欄位當做變數去搜B.C.D.E表 再這樣複製貼上我就要崩潰啦!! 有句話說得好 ~ 科技來自於人性 ...
-
當使用者使用上傳功能出現超奇怪的錯誤,像是 無法顯示網頁~ 伺服器應用程式無法使用~ 已傳回類型 System.OutOfMemoryException 的例外狀況~ 饒了我吧.... 這種Debug模式下斷點也攔不到,讓人想一頭撞死的錯誤 就可以測測看是不...