.NET TIPS DateTimePickerコントロールでDBNullを扱うには?[C#、VB]デジタルアドバンテージ 岸本 真二郎2008/01/31 |
|
|
Windowsアプリケーションで日付の表示や指定などを行う際によく利用されるDateTimePickerコントロール(System.Windows.Forms名前空間)だが、データベースのNULL値をセットすると例外が発生する。つまりDateTimePickerコントロールではコントロールが保持する値としてNULLは許されていない。
考えてみればNULLという日付はあり得ず、それはそれでもっともな話であるが、無効な日付や、値が未入力であることを表すためにデータベースのDATETIME型のカラムにNULL値をセットする場合もあり得る。このような場合に、DateTimePickerコントロールにそのままデータセット(テーブル)をバインドすると、カラムの値がNULLの場合にコントロールで例外が発生してしまう。そこで本稿では、NULLを許容するDateTimePickerコントロールの実装を紹介する。
なお.NET Frameworkでは、データベースにおけるNULL値はDBNullクラス(System名前空間)のインスタンスとして表され、このインスタンスはDBNullクラスの静的フィールドであるValueフィールドを使って「DBNull.Value」と記述する。
NULL値を許容するDbDateTimePickerクラス
ここではDateTimePickerコントロールを継承したクラス(DbDateTimePicker)を作成することにより、DateTimePickerコントロールに機能を追加する。DbDateTimePickerクラスのコードは次のようになる。
| ||
NULL値を許容するDbDateTimePickerクラス(上:C#、下:VB) |
このDbDateTimePickerクラスでは、コントロールにセットされた日付を示すValueプロパティにDBNull.Valueがセットされた場合に、DateTimePickerコントロールに含まれるチェックボックスをオフにする(Checkedプロパティ)。なお、Checkedプロパティの状態がUIに反映されるようにするため、IDEのプロパティ ウィンドウでコントロールのShowCheckBoxプロパティをTrueにしておく。つまり日付が有効な場合は、チェックボックスがオンで日付が表示(修正可能)され、DBNull.Valueがセットされた場合はチェックが外れて日付部分がグレーアウトする。
また、コントロールから値を取り出すときにチェックボックスがオフになっている場合は、ValueプロパティでDBNull.Valueを返すようにしている。なお、DBNull.Valueを返すために、Valueプロパティの型をDateTime型ではなくObject型に変更している点に注意されたい。
カテゴリ:Windowsフォーム 処理対象:DateTimePickerコントロール 使用ライブラリ:DateTimePickerコントロール(System.Windows.Forms名前空間) 使用ライブラリ:DBNullクラス(System名前空間) |
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|