Я начал конвертировать мое приложение для использования опции Strict On. Я делаю CStr, Ctype и т. Д., И все идет хорошо.Опция Strict On и DBNull.Value
SQLCommand.Parameters.AddWithValue("@TERMINATE", If(IsNothing(txtEarningsTerminated.DateValue), DBNull.Value, txtEarningsTerminated.DateValue))
Тогда я ударил это. txtEarningsTerminated.DateValue - это настраиваемое текстовое поле с маской. Когда это значение Nothing, я не хочу ничего хранить в базе данных. Однако в нем указано
Cannot infer a common type, and Option Strict On does not allow 'Object' to be assumed.
Когда я изменяю DBNull.Value на «" или ничего, ошибка исчезает. Однако, как ничто, он не работает во время работы, заявив
The parameterized query '(@CONTROL int,@CLIENTCODE nvarchar(10),@NoBill int,@TERMINATE nv' expects the parameter '@TERMINATE', which was not supplied.
Я хочу поместить в базу данных NULL. Это значение может быть датой, а затем стать NULL.
Как это сделать, чтобы не создавать ошибки в опции Strict On?
попробуйте установить значение null по умолчанию в хранимой процедуре для этого параметра. – McNets
'DbNull' - это не то же самое, что' Nothing'. Не знаю, что такое 'txtEarningsTerminated', так как оно имеет свойство' DateValue', но я сомневаюсь, что оно Nullable – Plutonix
txtEarningsTerminated.DateValue - это дата? – Kayot