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.

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top