この資料は以下のエディションについて説明したものです。
Introductory、Enterprise、Learning、Standard、Professional
Editions
データの対応期間
下
2
桁の西暦を使用する場合の既定値は
1930
〜
2029
です。(詳細は後述)
日付の処理
Visual
Basic
6.0
内部では、日付は
4
桁の西暦で保存されます。
下
2
桁の西暦の処理
Visual
Basic
6.0
における日付処理は、OLE
オートメーションにより行われます。1998
年秋に出荷された
Visual
Studio
6.0
ファミリ製品に付属するオートメーション
ライブラリはバージョン
2.30
であり、下
2
桁の西暦を解析する
100
年の範囲をユーザーやシステム管理者が設定することができます。デフォルトの設定は、上記の
1930
年〜
2029
年です。詳細は、OLE
オートメーションテクノロジ製品ガイド
を参照してください。
Outlook
Express
4.01
の問題
Visual Basic
6.0
には
Outlook
Express
4.01
SP1
が含まれていますが、この製品には既知の問題があり、アップデートモジュールが公開されています。詳細は、Outlook
Express
4.01
-
32ビット
Win
製品ガイドを参照してください。
西暦
2000
年に対応したアプリケーションを開発するための望ましい方法
この製品には、日付を文字列として保存すると問題が生じることがあります。日付の保存には、文字列ではなく、DATE
データ型を使用することをお勧めします。
ユーザー定義関数は、日付処理に関するエラーの最大要因です。関数が正しく定義されていないと、問題が生じることがあります。
日付を文字列で保存した場合、情報に誤りがあると問題を引き起こします。「年/月/日」の順番を変更しても有効な日付形式になる場合は、Visual
Basic
が文字列を日付として解釈します。
たとえば、「年/月/日」の順番を変更しても、3/30/98
(1998
年
3
月
30
日)
と
87/3/1
(87
年
3
月
1
日)
は日付として有効と見なされます。日付変換エラーの可能性がある場合の詳細な情報については、
OLE
オートメーションテクノロジ製品ガイド
を参照してください。
より詳細な情報については、ホワイト
ペーパー
"
Microsoft
Visual
Basic
での西暦
2000
年対応アプリケーションの開発" および
"Visual
Basic
アプリケーションの
2000
年への対応"
を参照してください。
プログラム開発における一般的な西暦2000年問題について
ホワイト
ペーパー
"Microsoft
Visual
Basic
での西暦
2000
年対応アプリケーションの開発" および
"Visual
Basic
アプリケーションの
2000
年への対応"
を参照してください。
このツールを使用したプログラム開発におけるその他の問
次に示す製品やテクノロジがインストールされている場合は、アップデートを行い正しく動作することを確認してください。
Oracle
利用時の注意
Oracle
と
Visual
Studio
Query
Designer
では、下
2
桁の西暦の解釈の方法が異なります。
Visual
Studio
6.0
Query
Designer
と
Oracle
データベースを使用する場合は、[コントロール
パネル]
の
[地域]
の設定で、YYYY/MM/DD
などの
4
桁の西暦形式に設定しておくことを強くお勧めします。これにより、間違った検索結果や、予想外の検索結果によるデータの損失を防ぐことができます。Query
Designer
の
[グリッド]
ペインに日付が入力されると、[地域]
の設定に従ってフォーマットされます。再フォーマットされた日付は
Oracle
データベースに渡され、そのサーバーの設定に応じて日付の文字列が処理されます。[グリッド]
ペインの
[基準]
セルに入力された西暦が
2000
年から
2029
年
(西暦
2000
年以降の日付のデフォルト対応期間)
の場合は、その日付が
SQL
ペインに解析されて表示されるとき、OLEAUT32
によって下
2
桁の値に変換されます。Oracle
データベースでは、この日付を
1900
年から
1929
年の範囲の西暦として処理します。
例
:ユーザーが、"2001/1/1"
という日付を
[グリッド]
ペインの
[基準]
セルに入力したとします。下
2
桁の西暦表示に設定されている場合、この日付は
"01/1/1"
に再フォーマットされます。Oracle
は、この文字列を受け取ると、この日付
"01/1/1"
を
"1901/1/1"
と解釈します。UPDATE
クエリーまたは
DELETE
クエリーの基準として日付が使用されていると、データの損失が発生する可能性があります。
この問題は、Visual
Studio
6.0
Service
Pack
3
の適用により
Query
Designer
をアップデートすることで対応できます。
テスト時のガイドラインと推奨事項
ユーザー定義関数
:
多くのアプリケーションで、日付をさまざまな方法で操作するために
Visual
Basic
で記述されたユーザー定義関数が使われています。これらの関数の多くは、日付値を文字列で保存しています。これらの値の操作が不適切であると、マイクロソフトが実施した
2000
年問題対応テストの範囲を超える日付処理上の問題が発生することがあります。
|
日付の不正入力を捕捉するエラー処理ルーチンがあると、上記の日付使用のエラーが問題を引き起こすことがあります。文字列形式の日付が入力されても
Visual
Basic
はめったにエラーを生成しないので、エラー処理ルーチンが呼び出されることはほとんどありません。このような場合は、不正な日付であることを通知するランタイム
エラーに頼るのではなく、コードを使用して、データを検証するためのプログラミングが必要になります。
|
コード例
次のコードは、各種の入力日付を表示する日付ウィンドウの例です。
Sub
TestDate()
Dim
MyDate
As
Date
MyDate
=
"1/1/00"
Format
MyDate,
"mm/dd/yyyy"
MsgBox
MyDate
End
Sub
MyDate
の入力値
|
期待される表示内容
|
00/1/1 |
2000/1/1 |
1/1/1 |
2001/1/1 |
9/1/1 |
2009/1/1 |
2000/1/1 |
2000/1/1 |
98/4/1 |
1998/4/1 |
29/10/24 |
2029/10/24 |
30/7/4 |
1930/7/4 |
00/2/29 |
2000/2/29 |
1900/2/29 |
エラー
型の不一致
(1900
はうるう年ではない) |
より詳細な情報については、ホワイト
ペーパー
"Microsoft
Visual
Basic
での西暦
2000
年対応アプリケーションの開発" および
"Visual
Basic
アプリケーションの
2000
年への対応"
を参照してください。