0

従来の ASP では、変数で DateAdd() を使用できません。これが機能する理由はわかりません。

strTargetDate=DateAdd("d",visitDate,followDate)

visitDate は 30、60、90、180 などの増分値です。 followDate は実際の日付です。ただし、このコードを使用すると型の不一致エラーが発生します。これはいけませんか??

4

1 に答える 1

2

visitDate が数値に変換されない/変換できないか、followDate が日付に変換されない/変換できないかのいずれかです。したがって、入力の TypeName() を確認し、日付形式に注意してください。

@Ken の憶測に反する事実を示すための一部:

>> s = "string"
>> WScript.Echo 0, s, TypeName(s)
>> s = DateAdd("d", 1, Now)
>> WScript.Echo 1, s, TypeName(s)
>> s = DateAdd("d", "1", CStr(now))
>> WScript.Echo 2, s, TypeName(s)
>> s = DateAdd("d", 1, "20/10/2013")
>>
0 string String
1 24.10.2013 17:05:54 Date
2 24.10.2013 17:05:54 Date
>> s = DateAdd("d", 1, "32.13.1")
>>
Error Number:       13
Error Description:  Type mismatch

wrt コメントを更新:

Null を含む計算は Null を伝搬する必要があるため、これは

>> WScript.Echo TypeName(DateAdd("d", 1, Null))
>>
Null
>>

驚くことではありません。アプリケーションに適した方法で DateAdd() の Null を処理する必要がありますが、型の不一致の原因にはなりません。

ただし、空の文字列 ("") が原因である可能性があります。

>> WScript.Echo TypeName(DateAdd("d", 1, ""))
>>
Error Number:       13
Error Description:  Type mismatch
>>
于 2013-10-23T14:58:28.457 に答える