null値で列を更新します
-
24-10-2019 - |
質問
テーブルには日付フィールド(SmallDateTime)があります。特に、日付フィールドをnullに設定する必要があります。現在、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
まだフィールドを更新していないようです。エラーは返されません。
解決
使用する SQLDATETIME.NULL 代わりは。
他のヒント
system.dbnull.valueの代わりにsqldatetime.nullをお試しください
SQL Profilerを使用して、サーバーに送信されているものを正確に確認することをお勧めします。それはあなたが問題を絞り込むのに役立つはずです
所属していません StackOverflow