描述
回覆文章時出現類似以下的錯誤訊息:Microsoft VBScript runtime ~ '800a000d'
Type mismatch: '[string: "2005/10/21 U 12:19:"]'
/PJblog/blogcomm.asp, C109
解決方案/具體內容
這是因為ASP在執行時所產生的日期與資料庫查詢用的日期格式不符所致。按照以下方式修改即可。1.找到 if DateDiff("s",Request.Cookies(CookieName)("memLastPost"),Now()) 在該行之前加上以下程式碼:
lastTime = Request.Cookies(CookieName)("memLastPost")
dim NowTime,lastTime
NowTime = ConvertDateFormat(Now())
'//檢查上次po文時間是否有紀錄,若無則指定現在的前n秒(n為系統中設定發文的間隔時間)
If IsDate(lastTime) = False Then
lastTime = DateAdd("s",blog_commTimerout * -1,NowTime)
'記錄時間資訊,並強制轉換日期型態
Response.Cookies(CookieName)("memLastPost") = ConvertDateFormat(lastTime)
Else
Response.Cookies(CookieName)("memLastPost") = ConvertDateFormat(lastTime)
End IF
2.將原本的
if DateDiff("s",Request.Cookies(CookieName)("memLastPost"),Now()) 改為
if DateDiff("s",CDate(Request.Cookies(CookieName)("memLastPost")),Now()) 讓IIS確實得知變數型態,以避免誤判
3.將這個函數放入function.asp中
Function ConvertDateFormat(dDate)
Dim d,dt,tm
d = CDate(dDate)
dt = FormatDateTime(d,2)
tm = FormatDateTime(d,4) & ":" & Second(D)
ConvertDateFormat = dt & " " & tm
End Function
lastTime = Request.Cookies(CookieName)("memLastPost")
dim NowTime,lastTime
NowTime = ConvertDateFormat(Now())
'//檢查上次po文時間是否有紀錄,若無則指定現在的前n秒(n為系統中設定發文的間隔時間)
If IsDate(lastTime) = False Then
lastTime = DateAdd("s",blog_commTimerout * -1,NowTime)
'記錄時間資訊,並強制轉換日期型態
Response.Cookies(CookieName)("memLastPost") = ConvertDateFormat(lastTime)
Else
Response.Cookies(CookieName)("memLastPost") = ConvertDateFormat(lastTime)
End IF
2.將原本的
if DateDiff("s",Request.Cookies(CookieName)("memLastPost"),Now())
if DateDiff("s",CDate(Request.Cookies(CookieName)("memLastPost")),Now())
3.將這個函數放入function.asp中
Function ConvertDateFormat(dDate)
Dim d,dt,tm
d = CDate(dDate)
dt = FormatDateTime(d,2)
tm = FormatDateTime(d,4) & ":" & Second(D)
ConvertDateFormat = dt & " " & tm
End Function

