Критическая ошибка #-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
Другие вопросы по тегам