Обновление столбца с нулевым значением - PullRequest
2 голосов
/ 24 января 2011

У меня есть поле даты (smalldatetime) в таблице, и в отдельных случаях мне нужно установить поле даты на ноль. В настоящее время при установке для свойства sqlparameter.value даты

endDateParam.Value = "5/15/2011"

поле обновлено с правильной датой. Однако, установив его на

endDateParam.Value = System.DbNull.Value

не обновляет поле.

Код:

Protected Sub ...
    For Each r As GridViewRow In gvEmployees.Rows
        SqlDataSource1.UpdateCommand = "<stored proc>"
        SqlDataSource1.UpdateCommandType = SqlDataSourceCommandType.StoredProcedure
        setParameters(r)
        gvEmployees.UpdateRow(r.RowIndex, False)
    Next
End Sub

Private updateParameters As New List(Of SqlParameter)()

Protected Sub setParameters(ByVal r As GridViewRow)
    updateParameters.Clear()

    Dim endDate As TextBox = TryCast(r.FindControl("txtEndDate"), TextBox)

    Dim endDateParam As New SqlParameter("@enddate", SqlDbType.SmallDateTime)
    endDateParam.Direction = ParameterDirection.Input
    endDateParam.Value = System.DBNull.Value
    updateParameters.Add(endDateParam)
End Sub

Protected Sub Sqldatasource1_Updating(ByVal source As Object, ByVal e As SqlDataSourceCommandEventArgs)
    e.Command.Parameters.Clear()
    For Each p As SqlParameter In updateParameters
        e.Command.Parameters.Add(p)
    Next
End Sub

Обновление

endDateParam.Value = System.Data.SqlTypes.SqlDateTime.Null

По-прежнему не обновляет поле. Ошибки не возвращаются.

Ответы [ 3 ]

1 голос
/ 24 января 2011

Вместо этого используйте SqlDateTime.Null .

0 голосов
/ 25 января 2011

Я бы порекомендовал вам использовать Sql Profiler, чтобы точно узнать, что отправляется на сервер. Это должно помочь вам сузить проблему

0 голосов
/ 24 января 2011

Попробуйте SqlDateTime.Null вместо system.dbnull.value

...