我正在將ASP經典應用程序移至新服務器。我沒有開發應用程序,我沒有使用ASP的經驗,希望有人能指導我。ASP Classic&SQL日期超出範圍錯誤
一個在應用程序的頁面刪除此錯誤:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
/clientname/Admin/EntregasProcess.asp, line 49
我看了,也許可能是日期格式,所以我將其更改爲YYYY-MM-DD。
現在,它正顯示出這一點:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
/clientname/Admin/EntregasProcess.asp, line 62
數據庫上的日期格式writen這樣的:
2006-07-31 00:00:00.000
,這是ASP文件的代碼:
<%@ Language=VBScript %>
<!--#include file="StrConn.asp"-->
<%
if Session("Role") <> "AD" Then 'AD=Administrador, CG = Consulta Gral.
Response.Redirect "../home.asp"
end if
%>
<%
Dim month_number, year_number, day_number, tituloEntrega, Estatus, idCuestionario, date_number
month_number = Request.Form("month_number")
year_number = Request.Form("year_number")
day_number = Request.Form("day_number")
tituloEntrega = trim(Request.Form("tituloEntrega"))
idCuestionario = Request.Form("idCuestionario")
Estatus = Request.Form("Estatus")
idEntrega = Request.Form("idEntrega")
<!--BITACORA::ESC::Oscar Salgado 20090729-->
bitacora = Request.Form("bitacora")
page = Request.Form("page")
<!--=====================================-->
date_number = dateSerial(year_number,month_number+1,day_number)
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open strConnPortal
<!--BITACORA::ESC::Oscar Salgado 20090729-->
SQL="Delete from dbo.tbBitacoraShow where idCuestionario = " & idCuestionario
conn.execute(SQL)
if bitacora = "1" Then
SQL="Insert into dbo.tbBitacoraShow(idCuestionario) values(" & idCuestionario & ")"
end if
conn.execute(SQL)
<!--=====================================-->
Select Case Request.Form("btnGo")
Case "Agregar"
if trim(tituloentrega) <> "" Then
SQL = "Insert into tbEntregas(TituloEntrega,Date,Estatus,IDCuestionario) values('" & _
tituloEntrega & "','" & date_number & _
"'," & estatus & ",'" & idCuestionario & "')"
conn.Execute sql
end if
'Response.Write SQL
'Response.End
Case "Actualizar"
SQL = "update tbEntregas Set TituloEntrega = '" & tituloEntrega & _
"',Date='" & date_number & " ',Estatus=" & estatus & _
",IdCuestionario='" & idCuestionario & "' Where idEntrega = " & idEntrega
conn.Execute sql
'Response.Write SQL
'Response.End
End Select
Response.Redirect "Entregas.asp?idEntrega="&idEntrega&"&page="&page
%>
檢查舊服務器的日期格式。我懷疑新環境的日期本地化與舊服務器不同。 (具體來說,這是否也是一個新的SQL服務器?連接的默認日期格式看起來像是期望不同的順序) – 2012-07-19 20:04:35
是的,它是一個從2000到2012的新sql服務器 – 2012-07-19 20:40:18
您肯定希望至少更改您的所有請求。用雙引號或空字符串替換單引號的表單,但更好的是,更改代碼以使用存儲過程或參數化查詢,否則任何人都將能夠看到您的數據庫,更新和刪除您的數據 – Rodolfo 2012-07-19 21:32:29