Добрый день.
Возникла мистическая ситуация:
При записи данных в БД все поля кроме BLOB (ArrayOfCRC указан как WideString т.к. заношу в него строку) заносятся нормально, а данные в BLOB поле заносятся непонятно по каким правилам.
Например: Заношу 6 записей в БД, у некоторых BLOB заполнен, а у некоторых - нет.
Помогите разобраться
Работаю через FIB+ компоненты. В частности TpFIbDataBase, TpFiBDataSet и TpFIbTransaction.
Приведённым ниже кодом я заполняю БД (Interbase, созданная в InterBase & FireBird Manager'e 3.3.0.2).
Функции ExtractFileNameEx и CteateCRCArray работают корректно.
P.S. в View дебагера смотрел "ParamByName('ArrayOfCRC').AsWideString" тоже все работает нормально.
Код:
procedure TMainForm.InsertIntODBClick(Sender: TObject);
var
vTextLengh : Word;
begin
with DataModuleX.DataSet do
try
close;
if not prepared then
Prepare;
with DataModuleX.DataSet.QInsert do
Try
ParamByName('NameOfText').AsString := (FileOpen.Dialog.FileName, True);
ParamByName('ArrayOfCRC').AsWideString := CteateCRCArray(GlobalCanonizedText, 980, Configuration.WordsInShingle.Value, Configuration.NormalDoc.Checked);
ParamByName('TextLength').AsInteger := vTextLengh;
ExecQuery;
finally
QInsert.Params.ClearValues;
DataModuleX.MainTransaction.Commit;
end;
Except
on E : Exception do
ShowMessage(E.ClassName+' Ошибка'+E.Message);
End;
End;
Структура БД:

TextId - Первичный ключ.
NameOfText - Уникальный.
Нужели никто не знает в чём может быть причина?