1

QTP(したがってVBScript)を使用していますが、CDate関数に問題があるようです。

マレーシアの同僚が使っているときは問題ありません。ここスペインで使用すると、次のエラーが発生します。

ここに画像の説明を入力してください

今私が尋ねているのは、この関数または異なるロケール間でFormatDateTimeのような他の関連する問題に既知の問題があるかどうかだけです。

誰もがこれを知っていますか?

前もって感謝します。

4

2 に答える 2

4

エラーは問題を示しています。CDateが日付として認識しないtodateObject.GetROProperty("value")値が含まれています。

まず、によって返されるものを判別してtodateObject.GetROProperty("value")から、日付に変換できることを確認する必要があります。

文化の違いから生じる問題を回避するために、CDateの代わりにDateSerialを使用して日付を作成することを検討することをお勧めします。その場合、状況によっては、順序が常に正しいことを確認するために、日、月、年に別々のフィールドを指定する必要がある場合があります。

于 2013-01-03T15:21:13.283 に答える
4

CDate()は、ロケール設定を考慮して、入力を日付に変換しようとします。見る:

>> SetLocale "en-us"
>> WScript.Echo GetLocale()
>> WScript.Echo 1, CDate("1 dec 2011")
>> WScript.Echo 2, CDate("1 dez 2011")
>>
1033
1 01.12.2011
Error Number:       13
Error Description:  Type mismatch
>> SetLocale "de"
>> WScript.Echo GetLocale()
>> WScript.Echo 3, CDate("1 dez 2011")
>> WScript.Echo 4, CDate("1 dec 2011")
>>
1031
3 01.12.2011
Error Number:       13
Error Description:  Type mismatch
>>

「en-us」の下のCDate()は「dec」を理解しますが、「dez」でチョークします。「de」は「dez」では機能しますが、「dec」では機能しません。

問題を解決するための最小限の影響戦略は、SetLocale()といくつかの大きな棒(入力検証)を使用して、ずさんなデータ入力者に対して「すべてに1つのロケール」を適用することです。

于 2013-01-03T15:43:05.867 に答える