Re: [問題] 轉型錯誤

看板C_Sharp (C#)作者 (天劍流星)時間18年前 (2007/03/28 13:36), 編輯推噓2(200)
留言2則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《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
嗯,愈上源解決愈好。甚至,該欄位本就該設定not null預值0
03/30 10:33, 1F

03/30 10:33, , 2F
我以前跟人家合作,超討厭那種db定義不嚴謹,導致下游if連篇
03/30 10:33, 2F
文章代碼(AID): #162VxZGT (C_Sharp)
討論串 (同標題文章)
本文引述了以下文章的的內容:
2
2
完整討論串 (本文為第 2 之 2 篇):
2
2
文章代碼(AID): #162VxZGT (C_Sharp)