0

Windowsフォームにテキストボックスがあります。それらのいくつかについては、最初に保存される日付がありません。テキスト ボックスにバインドされた SQL フィールドの型は日付です。新しいレコードを保存しようとすると、System.Data.SqlTypes.SqlTypeException が発生します。

SqlDateTime オーバーフロー。1753 年 1 月 1 日 12:00:00 AM から 9999 年 12 月 31 日 11:59:59 PM の間である必要があります。

日付フィールドに入力する日付がまだない場合、このレコードを保存するにはどうすればよいですか?

これは私が使用しているコードです

public static bool UpdateEngOrd(EngOrd oldEngOrd, EngOrd newEngOrd)
    {

        SqlConnection cnn = SqlDB.GetConnection();
        string strsql =
            "UPDATE EngOrd SET " +
            "filetype = @newfiletype, reqmeetdue = @newreqmeetdue " +               
            "WHERE eo = @oldeo";
        SqlCommand cmd = new SqlCommand(strsql, cnn);
        cmd.Parameters.AddWithValue("@newfiletype", newEngOrd.FileType);
        if (newEngOrd.ReqMeetDue == DateTime.MinValue)
            cmd.Parameters.AddWithValue("@newreqmeetdue", DBNull.Value);
        else
            cmd.Parameters.AddWithValue("@newreqmeetdue", newEngOrd.ReqMeetDue);
          cmd.Parameters.AddWithValue("@oldeo", oldEngOrd.EO);

        try
        {
            cnn.Open();
            int count = cmd.ExecuteNonQuery();
            if (count > 0)
                return true;
            else
                return false;
        }
        catch (SqlException ex)
        {
            throw ex;
        }
        finally
        {
            cnn.Close();
        }
    }
4

4 に答える 4

0

これを新しい DateTime に設定しています。デフォルトは DateTime.MinValue で、これは 1/1/0000 です。代わりに DBNull を渡してみてください。

于 2013-10-08T15:57:04.750 に答える