Frage

Ich habe ein Datumsfeld (SmallDatetime) in einer Tabelle und in bestimmten Fällen muss ich das Datumfeld auf null festlegen. Derzeit stellen Sie die Eigenschaft SQLParameter.Value auf ein Datum

endDateParam.Value = "5/15/2011"

Das Feld wird mit dem richtigen Datum aktualisiert. Einstellen es jedoch auf

endDateParam.Value = System.DbNull.Value

Aktualisiert das Feld nicht.

Code hinter:

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

Aktualisieren

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

Es scheint das Feld immer noch nicht zu aktualisieren. Es werden keine Fehler zurückgegeben.

War es hilfreich?

Lösung

Verwenden Sqldatetime.null stattdessen.

Andere Tipps

Versuchen Sie es mit sqldatetime.null anstelle von System.dbnull.Value

Ich würde empfehlen, dass Sie SQL Profiler verwenden, um genau zu sehen, was an den Server gesendet wird. Das sollte Ihnen helfen, das Problem einzugrenzen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top