我正在将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