DBNULL判定の上手い書き方
投稿者 コロン  (社会人)
投稿日時
2019/12/9 13:10:44
Nullなら0や""を返すという共通関数を
StringやInteger、Doubleなど数種類の型で作ってみてはいかがでしょうか
StringやInteger、Doubleなど数種類の型で作ってみてはいかがでしょうか
投稿者 (削除されました)  ()
投稿日時
2019/12/9 21:05:48
(削除されました)
投稿者 るきお  (社会人)
投稿日時
2019/12/9 21:17:51
DataGridとは次のどれのことでしょうか?
①WPFで使うSystem.Windows.Forms.DataGrid
②Windowsフォームで使うSystem.Windows.Forms.DataGridView
③以前Windowsフォームで使用されていたSystem.Windows.Forms.DataGrid
④その他
はじめ②のことかなと思ったのですが、②には計算機能はなく、自分でロジックを組んで計算することになりますよね?
それから、現状どのようにやっているかも合わせて書いていただければ回答が付きやすくなると思います。
今の情報量だと、やなぎさんが何をつかってどうプログラムしているのか推理するところからはじめなければいけないので、私にはつらいです。(ツーカーでわかるほかの方はいるかもしれません)
①WPFで使うSystem.Windows.Forms.DataGrid
②Windowsフォームで使うSystem.Windows.Forms.DataGridView
③以前Windowsフォームで使用されていたSystem.Windows.Forms.DataGrid
④その他
はじめ②のことかなと思ったのですが、②には計算機能はなく、自分でロジックを組んで計算することになりますよね?
それから、現状どのようにやっているかも合わせて書いていただければ回答が付きやすくなると思います。
今の情報量だと、やなぎさんが何をつかってどうプログラムしているのか推理するところからはじめなければいけないので、私にはつらいです。(ツーカーでわかるほかの方はいるかもしれません)
本題ですが、DataGridを利用して演算を行う際に発生しがちなNULL判定の質問です...。
例としてGridに"A"~"C"までの3列と、それらの値を合算した値を表示するSUM列があります。
行は複数行存在し、A~CにはInt型もしくはNULLがデータベースからFillされて挿入されています。
各列の合計SUMを計算する際、A~CにNULLが存在すると演算エラーが発生します。
これを回避するためには
if ...Cells("A").Value is DBNULL.value Then...
のようなNULL判定を各列に記述するしか方法は無いのでしょうか?
実際のコードでは列数がこれよりかなり多く、NULL判定の多用によるコードの汚さにげんなりしている状態です...
SQLで読み込む際にDECODEでNULLを0にする手法も考えたのですが
表の上で0とNULLでは意味合いが変わってくるため微妙に納得いかず、足踏み状態です。
初心者の質問ではありますがよろしくお願い致します。