Aktualisieren der Spalte mit Nullwert
-
24-10-2019 - |
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.
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