Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

InterBase и Oracle

286
14 февраля 2006 года
misha_turist
572 / / 28.11.2005
Есть компоненты работы с Oracle, Арефьева, есть копоненты работы с InterBase родны (которые в Дельфи, специальные для InterBase).
Требуется переносить данные из полей InterBase в поля Oracle, В ТОМ ЧИСЛЕ И BLOB.
Я решил задачу так, но:
Код:
function OpenParam(paramin: TOciParam; paramout: TField) : boolean;
var BlobBuffer:TBlobField;
begin
 try
  OpenParam:=true;
  if paramout.IsBlob
  then begin
        BlobBuffer.Create(nil);
        BlobBuffer.NewValue:=paramout.Value;
        paramin.AssignField(BlobBuffer);
        BlobBuffer.Free;
       end
  else paramin.AssignField(paramout);
 except
  OpenParam:=false;
 end;
end;

В ней, при любом поле кроме Blob всё работает нормально, но если Blob, то начинается:
во первых оказывается создаваться BlobBuffer, выдовая ошибку адрисации при первом же обращении (именно при обращении, в Create он так и не входит, я проверял)
во вторых переноситься значение поля отказывается из-за внутрених проверок TOciParam.

Собственно вся проверка paramout.IsBlob делалась из за второго пункта.

Если просто написать value:=value или Assign или AssignField, то при выполнении запроса возникает ошибка т.к. поля переносятся, как обычные, а это нелзя.

TOciParam параметр в запросе, компонентов Oracle, Арефьева.
TField поле в запросе, компонентов InterBase.


Сзаранее спасибо.:)
7.8K
15 февраля 2006 года
DrCoder
106 / / 27.01.2006
У тебя элементарная ошибка
-ты обращаешься не к классу объекта при создании (Create), а к (якобы) его экземпляру, который еще не существует, а указывает хз на какой адрес (в том числе и nil)...
Чтобы исправить эту ошибку трэба делать

BlobBuffer := TBlobField.Create(nil), но работать скорее всего твоя реализация не будет.

Советую использовать на входе TField и для переноса BLOBа TBLOBStream, тогда можно будет использовать данную функцию для разных СУБД.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог