Критическая ошибка #-2147217887 Ошибка многоэтапной операции OLE DB
Я преобразовал базу данных доступа в базу данных SQL Express, используя встроенный в MS Access мастер увеличения размера. Но теперь я получаю сообщение об ошибке, когда пытаюсь программно добавить запись в таблицу сервера SQL:
Критическая ошибка #-2147217887 В результате многоэтапной операции OLE DB возникли ошибки.
Поле, в котором это не удается, - это когда я устанавливаю поле SQL [notes]. Я пытаюсь установить его в строку vbnullstring (используя VB6).
Мастер изменения размера доступа создал поле как nvarchar(255), и для всех значений null установлено значение true, изначально оно представляло собой текстовое поле длиной 255 мс с доступом.
Есть ли проблема при установке поля nvarchar в sql в строку vbnullstring?
Буду очень признателен за любые предложения о том, что может пойти не так!
Set RS = OpenRecordsetSQL("SELECT TOP 1 * FROM AvailabilityBlocks WHERE BlockID=-1")
' ' Add a specific entry to the Availability DB Table '
RS.AddNew
RS("Begin") = wblock.BeginTime
RS("Type") = wblock.BlockType
RS("OCampus") = wblock.Campus
RS("End") = wblock.EndTime
RS("LocationID") = wblock.LocationID
RS("ResourceID") = wblock.ResourceID
RS("RecurringSetNumber") = wblock.RWWSetNumber
RS("Notes") = wblock.Notes
RS("InternalNotes") = wblock.InternalNotes
RS.Update
1 ответ
Вы должны использовать Null, а не vbNullString. vbNullString - это константа, предназначенная для использования при передаче данных в API. Нуль - это VB-представление нулевого значения. NULL в смысле базы данных.
Одна из проблем, с которой вы столкнулись, заключается в том, что в VB строка не может быть нулевой. Вы, конечно, можете использовать вариантный тип данных VB, поэтому объявите Notes как
Notes as Variant
Тогда либо
wblock.Notes = "some text"
или же
wblock = Null