MS Access Tips/Sample and VBA and Blog customize etc...

AC2007のバグ?書式プロパティの和暦設定(ee/mm )で

Access2007で、フォーム上の日付データの書式に"ee/mm"を設定しています。その日付データをクリックして選択後、コピーして貼り付けると日付が変わってしまいます。

コピー前 23/3
コピー後 22/3

テーブルに格納されたデータを見ると以下のようになっているようです。

コピー前 2011/03/01
コピー後 2010/03/23

コピー前の23/3がシステムで3月23日と解釈され「2010/03/23」となったようです。

Access2000の場合は、日付データをクリックすると表示が"yyyy/mm/dd"に変わったのでそれをコピーして貼り付ければ日付は変わらずコピーできました。

Access2007の場合では、日付データをクリックした場合に"yyyy/mm/dd"に変わるのですが例外としてdd="01"の場合、つまり月初めのデータの場合は表示が変わりません。

というような質問が掲示板でありました。確認してみると、当方の環境でも再現しました。gee/mm や ggge年m月 とかでも発生します。e が含まれていて、日(d)を非表示にしていると発生するようです。

これは、yy/mmだと発生しないので、日本語版特有のバグっぽいですね。MSのサポート情報を探してみて見つからないので、MSはまだ認識してないかもしれません。

追記: AC2010以降では改善されているようです。

このブログではいいまでAC2007での日本語関係のバグをいくつか取り上げてますが、いっこうに対策される気配がないので、とりあえずの対処法を紹介します。

難易度:

単票フォームでの対処法

日付テキストボックスに下記のイベントプロシージャを設定。

フォーカス取得時に書式をyyyy/mm/ddに変更して、フォーカス喪失後に元に戻すという対処法です。

帳票フォームでの対処法

現在の日付のテキストボックスの上にピッタリ重なるようにテキストボックスを配置して、

プロパティ設定値
コントロールソース日付
書式ee/mm
タブストップいいえ
名前txt日付

とします。

フォーカス取得時のイベントプロシージャに、下記のコードを記述します。

日付 テキストボックスのプロティを下記に変更します。

プロパティ設定値
書式yyyy/mm/dd

このテクニックは、テキストボックスを重ねて配置して、前面は表示用、背面は入力用としておいて、フォーカスがあたると背面のコントロールが浮き出てくるというAccessの仕様を利用してます。いろいろ、使い道のあるテクニックですので覚えておくといいですよ。

データシートでの対処法

データシートでは現状通りの仕様での対処法は難しいですね。

書式を、ee/mm でなく、gee/mm にする。これだと、H22/12 と表示されるので、コピーしても、2010/12/01 で登録されます。

書式は、ee/mm でないとダメという場合は、、、、

登録する値は必ず一日(ついたち)ならば、(ee/mm表示と言うことはその可能性が高いと思われますが)書式プロパティは、ee/mm のままで、定型入力プロパティを下記のように設定する。

プロパティ設定値
定型入力0000/00/"01";0;_

ただし、入力するときは、例えば2010年12月なら、201012 と6桁で入力することになります。逆にこの方が一日(ついたち)以外を登録してしまうと言うミスを防げるので、ユーザーインタフェイスとしては優れていると思います。

拍手する

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/283-110eb4a6
該当の記事は見つかりませんでした。