Re: [問題] 轉型錯誤
※ 引述《Uihc (我 有我的倔強...)》之銘言:
: 我想計算某一白色商品庫存,目前已賣出件數Query如下:
: "SELECT Sum(Amount欄位) FROM 銷售資料表 WHERE Color欄位 = 'white'";
: 假設原商品數有10件,利用DataSet存放上述Query結果,
: 將已銷售總計後的結果取出相減
: int White = 10 - Convert.ToInt16(myDataset.Tables["white"].Rows[0][0]);
: 現在的問題就是,當商品一件都沒有賣出時,也就是
: int White = 10 - Convert.ToInt16(myDataset.Tables["white"].Rows[0][0]);
: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
: 已銷售件數為0
: 會出現 物件不可以從 DBNull 轉換成其他型別 的錯誤
: 想了半天,不曉得該怎麼做修正?
: 雖然利用 try/catch 處理InvalidCastException例外狀況
: 但也只是讓畫面秀出有錯誤發生
: 我想做的是,就算是銷售件數是"0",也能計算出庫存哪...
: 所以想請大家給我一點方向或意見,謝謝 <(_ _)>
其實不用這麼麻煩,去多加那麼多判斷在程式裡…
只要改成:
SQL Server:SELECT IsNull(Sum(Amount欄位),0) FROM ....(略)
Oracle:SELECT NVL(Sum(Amount欄位),0) FROM ....(略)
即可。其實我覺得這問題是出在sum這個函式,當無資料時,不會自動顯示成0,
所以直接在sql裡解決掉會比較簡潔。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.250.84.22
推
03/30 10:33, , 1F
03/30 10:33, 1F
推
03/30 10:33, , 2F
03/30 10:33, 2F
討論串 (同標題文章)
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章