- PR -

■DateTimePickerでNull値の表示内容について。

1
投稿者投稿内容
One.net
大ベテラン
会議室デビュー日: 2008/03/01
投稿数: 202
投稿日時: 2008-06-09 10:34
WindowsXP VB2005EEでDbはAccess2003を使ってWindowsアプリケーションを作っています。
【状況】
20人前後の会社で、社員情報の詳細を社員マスターtable の社員BindingSourceにバインド
させて表示せせています。表示方法は表示画面をSplitContainerで左右に分割し右SplitContainer
に社員名をリスト表示させ、このリストで選択した社員の詳細を左SplitContainerに表示させています。

その表示項目に入社年月日及び退職年月日があり、これらをDateTimePickerにバインドして表示
させていますが、入社年月日は登録時から設定されていますが、退職年月日は何も設定されて
いない状態が一般的です。

問題は退職年月日の画面に表示される年月日のことで、何も設定されていない社員の退職年月日
にも日付が表示され、表示日付の内容は直近に表示した退職年月日が設定されている社員の内容
が表示されています。言い換えますと退職年月日の設定された社員の後に表示させる社員の退職
年月日は、何も設定されていない社員の場合は前に表示された退職年月日が表示されてしまいます。

【質問内容】
何も設定されていない社員の場合は何も表示されないのが理想と考えますが、何かいい対処方法
があれば教えていただきたくよろしくお願いいたします。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2008-06-09 10:39
japan.internet.com デベロッパー - Nullを許容するDateTimePickerコントロール
http://japan.internet.com/developer/20050822/25.html
One.net
大ベテラン
会議室デビュー日: 2008/03/01
投稿数: 202
投稿日時: 2008-06-09 11:40
burton999さん、ありがとうございました。
早速紹介いただいたサイトを読みました。まだ全てを理解できていませんが、がんばります。
ところでこの現象は常識化されているようですね。不勉強で申し訳ありません。
「NULL値を許容するDbDateTimePicker」のキーワードで検索しますといろんな方が解説していたたいています。先に検索するべきでした。


[ メッセージ編集済み 編集者: One.net 編集日時 2008-06-09 11:43 ]
One.net
大ベテラン
会議室デビュー日: 2008/03/01
投稿数: 202
投稿日時: 2008-06-11 18:00
自己回答です。
burton999さんにご提示いただいたサイトや色々試してみました
◆内容は理解できましたが、C# のため未対応
http://japan.internet.com/developer/20050822/25.html

◆@ITの.NET TIPS はエラー発生
http://www.atmarkit.co.jp/fdotnet/dotnettips/702nullpicker/nullpicker.html

◆MSDN の対応は1800/01/01等と表示される。
http://support.microsoft.com/kb/313513/ja

色々検索しましたが結局上記の方法が代表的なサイトでしたが、今回の社員情報などで誕生日や
入社日、退職日等が羅列されて設定する場合は不向きであり、色々とテストしているうちに
次のようにして解決いたしました。
1.DateTimePickerの上にTextBox(退職日)を重ねて配置
2.DateTimePickerからバインドは外して、TextBoxにバインドを設定
3.DateTimePickerのValueChanged イベントに次のコードを記載
Me.TextBox.Text = DateTimePicke.Value.ToString("yyyy/MM/dd")

この対応によって退職年月日が設定されていない場合は空白で表示され、退職日を設定する場合は
他のDateTimePickerと同様にカレンダーボタンをクリックし年月日指定することによって設定表示
されデザイン的にも他のDateTimePickerとの統一が図れました。
以上、閲覧者の参考になればと自己回答を投稿しました。


[ メッセージ編集済み 編集者: One.net 編集日時 2008-06-11 18:07 ]
1

スキルアップ/キャリアアップ(JOB@IT)