Actualización de columna con valor nulo
-
24-10-2019 - |
Pregunta
Tengo un campo de fecha (SmallDateTime) en una tabla y, en casos particular, necesito establecer el campo Fecha en NULL. Actualmente, al configurar la propiedad SQLParameter.Value a una fecha
endDateParam.Value = "5/15/2011"
El campo se actualiza con la fecha adecuada. Sin embargo, configurarlo
endDateParam.Value = System.DbNull.Value
no actualiza el campo.
Código detrás:
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
Actualizar
endDateParam.Value = System.Data.SqlTypes.SqlDateTime.Null
Todavía no parece actualizar el campo. No se devuelven errores.
Solución
Usar Sqldatetime.null en cambio.
Otros consejos
Pruebe sqldatetime.null en lugar de system.dbnull.value
Le recomendaría que use SQL Profiler para ver exactamente lo que se está enviando al servidor. Que debería ayudarte a reducir el problema