.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名前空間) |
TechTargetジャパン
Insider.NET フォーラム 新着記事
- srcObjectによる動画表示/ゼロ幅の画像などを解説 (2017/3/3)
HTMLMediaElementインタフェースに追加されたsrcObjectプロパティ、メタデータ付与の観点からHTML 5.1で復活したrevプロパティなどを紹介する - Listに要素を追加/挿入するには? (2017/3/1)
List<T>オブジェクトの作成時に要素を追加する方法や、Add/AddRange/Insert/InsertRangeメソッドを使いList<T>コレクションに要素を追加する方法を紹介する - URI (2017/2/28)
URIはさまざまな種類のリソースを統一的に参照するための識別子。URIは、広く使われている「URL」という用語を包含する概念である - Python 3.6で追加された新機能をザックリ理解 (2017/2/24)
2016年12月にPythonの最新版であるバージョン3.6がリリースされた。本稿ではその中でも特徴的な新機能を幾つか紹介していく
Insider.NET 記事ランキング
本日 月間