2011-04-17 43 views
1

任何人都可以协助这个错误吗?
SqlDateTime溢出。必须介于1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之间。需要帮助解决SQLDateTime溢出错误

这里是我的代码:

<DataObjectMethod(DataObjectMethodType.Update)> _ 
    Public Shared Sub UpdateIncident(_ 
            ByVal DateClosed As DateTime, _ 
            ByVal Description As String, _ 
            ByVal original_IncidentID As Integer, _ 
            ByVal original_ProductCode As String, _ 
            ByVal original_DateOpened As DateTime, _ 
            ByVal original_DateClosed As DateTime, _ 
            ByVal original_Title As String, _ 
            ByVal original_Description As String, _ 
            ByVal IncidentID As Integer, _ 
            ByVal ProductCode As String, _ 
            ByVal DateOpened As DateTime, _ 
            ByVal Title As String) 
     Dim con As New SqlConnection(GetConnectionString) 
     Dim up As String = "UPDATE Incidents " _ 
      & "SET DateClosed = @DateClosed, " _ 
      & "Description = @Description" _ 
      & "WHERE IncidentID = @original_IncidentID " _ 
      & "AND ProductCode = @original_ProductCode " _ 
      & "AND DateOpened = @original_DateOpened " _ 
      & "AND (DateClosed = @original_DateClosed " _ 
      & "OR DateClosed IS NULL " _ 
      & "AND @original_DateClosed IS NULL) " _ 
      & "AND Title = @original_Title " _ 
      & "AND Description = @original_Description" 
     Dim cmd As New SqlCommand(up, con) 
     If DateClosed = #12:00:00 AM# Then 
      cmd.Parameters.AddWithValue("DateClosed", DBNull.Value) 
     Else 
      cmd.Parameters.AddWithValue("DateClosed", DateClosed) 
      cmd.Parameters("DateClosed").DbType = DbType.DateTime 
     End If 
     cmd.Parameters.AddWithValue("Description", Description) 
     cmd.Parameters.AddWithValue("original_IncidentID", original_IncidentID) 
     cmd.Parameters.AddWithValue("original_ProductCode", original_ProductCode) 
     cmd.Parameters.AddWithValue("original_DateOpened", original_DateOpened) 
     cmd.Parameters("original_DateOpened").DbType = DbType.DateTime 
     If original_DateClosed = #12:00:00 AM# Then 
      cmd.Parameters.AddWithValue("original_DateClosed", original_DateClosed) 
     Else 
      cmd.Parameters.AddWithValue("original_DateClosed", original_DateClosed) 
      cmd.Parameters("original_DateClosed").DbType = DbType.DateTime 
     End If 
     cmd.Parameters.AddWithValue("original_Title", original_Title) 
     cmd.Parameters.AddWithValue("original_Description", original_Description) 
     con.Open() 
     cmd.ExecuteNonQuery() 
     con.Close() 
    End Sub 

回答

0

,当你有,你有没有设定一个DateTime发生。 .NET DateTime.MinValue是'01/01/0001 00:00',SqlDateTime最小值是1753值。在将数据发送到数据库之前,只要确保没有任何DateTime仍未设置。

UPDATE:

在已定义的方法,添加一些逻辑来查找并修复DateTime.MinValue的传递给你。请接受我的C#,

if (theDateTime < SqlDateTime.MinValue) 
{ 
    theDateTime = SqlDateTime.MinValue; 
} 
+0

嗨埃德...谢谢,但问题是,有些我正在使用的数据库中的记录必须保持空白r登录并在其上放置一个DateClosed ...我不知道如何修改我的代码来解释这个......任何想法......我是一个新手!不知道如何解决...这是我的第一个ASP类 – 2011-04-17 07:01:36

+0

对不起...不知道我明白...不是我在这里做的... – 2011-04-17 07:49:54

+0

哎呀!点击输入太快...是不是我在这里做的...查看代码:如果DateClosed =#12:00:00 AM#然后 cmd.Parameters.AddWithValue(“DateClosed”,DBNull.Value) 否则 cmd.Parameters.AddWithValue( “DateClosed”,DateClosed) cmd.Parameters( “DateClosed”)。DbType之= DbType.DateTime2 结束如果 – 2011-04-17 07:50:27

0

SQL Server日期时间数据类型都有范围:1753年1月1日,经过12月31日,9999

.NET datetime数据类型具有范围:12:00:00午夜1月1日, 0001公元(共同的时代)通过下午11:59:59,12月31日,公元9999

您可以使用SQL Server 2008的新数据类型:datetime2

+0

试过了......仍然得到错误...使用Visual Studio 2010 ...任何其他想法? – 2011-04-17 07:09:21

+0

试过了什么?将表列更改为datetime2? – 2011-04-17 07:11:01