好きなおでんの具材ドラフト会議しましょう

すみません、どなたか教えて下さい。

下記ソースで、日付の差Date1とDate2の間隔が長くなると「Number:6,Description:オーバーフローしました。」というエラーが出てしまいます。
日付の間隔は30日くらいでもエラーになります。

atime = CLng(DateDiff("n",CDate(Date1),CDate(Date2)))
'60で割って100倍後、少数第1位を4捨5入する
atime=atime / 60 * 100
atime=Fix(atime + 0.5)

なぜエラーになってしまうのか、どなたかアドバイスをお願い致します。

A 回答 (2件)

お世話になります。



ASP でしょうか?
> 「Number:6,Description:オーバーフローしました。」
これは DateDiff 関数を実行しているところ?

以下に 30 日以上の 日付間隔を持つ値で
DateDiff を実行しましたが特に Overflow は起こりません。

CDate 関数実行あたりがあやしいです。
CDate 関数に渡している値が日付に確かに型変換できるものかどうか、
Response.write 等を使って確認してみてはいかがでしょうか。

以下、検証につかった ASP です。
<%@ Language=VBScript %>
<%
Dim date1
Dim date2

date1 = #10/1/2007# '2007/10/01
date2 = #12/1/2007# '2007/12/01

' 日単位で時間の間隔を求める
Dim days
days = DateDiff("d", date1, date2)

' 分単位で時間の間隔を求める
Dim minutes
minutes = DateDiff("n", date1, date2)

Response.write("日:" & CStr(days) & "<br>")
Response.write("分:" & CStr(minutes))
%>

参考URL:http://msdn.microsoft.com/library/ja/default.asp …
    • good
    • 0
この回答へのお礼

アドバイスありがとうございました。
根本的なミスをしておりました。
投稿した内容の後にCInt関数を使っており、そこで型を越えたようです。
御世話になりました。

お礼日時:2007/10/30 16:19

CDateに与えた日付はどのようなものでしょう


Date1,Date2を一度 CDateで日付型に変換しておき
CDblかCSngなどで実数型にします
これで変換した値が Long型で表現できる上限を超えていませんか

一度でやるならCLngをCDblまたはCSngなどに変更してみましょう
    • good
    • 0
この回答へのお礼

アドバイスありがとうございました。
根本的なミスをしておりました。
投稿した内容の後にCInt関数を使っており、そこで型を越えたようです。
御世話になりました。

お礼日時:2007/10/30 16:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報