Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с копированием BLOB поля в MS SQL 
V
    Опции темы
Pakshin A. S.
  Дата 28.7.2011, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 2
Всего: 61



Доброго времени суток! Пишу функцию по копированию BLOB поля из одной базы одной таблицы в другую базу другой таблицы.

Код

procedure CopyBLOB(DataSet: TDataSet);
var
  vADOTable: TADOTable;
  vFileName: string;
begin
  vFileName := ExtractFilePath(ParamStr(0)) + 'TempFile.tmp';

  vADOTable := TADOTable.Create(nil);

  with vADOTable do
    try
      ConnectionString := FDBConnectionString;
      EnableBCD := True;
      TableName := DataSet.Name; // здесь имя таблицы как раз
      ReadOnly := False;
      Open;
      Edit;
      DataSet.First;
      while not Eof do
        begin
          if DataSet.Eof then
            begin
              Close;
              exit;
            end;

          try
            TBlobField(DataSet.FieldByName('BLOBField')).SaveToFile(vFileName);
            TBlobField(FieldByName('BLOBField')).LoadFromFile(vFileName);
          except
            on e: exception do
              ShowMessage(e.message);
          end;

          DeleteFile(PChar(vFileName));

          Next;
          DataSet.Next;
        end;
      Post;
      Close;
    finally
      Free;
    end;
end;


Первая итерация... Из эталонного DataSet забирается поле и сохраняется в файл. У меня в тесте этот файл пустой. Пустой файл в таблицу загружается. Переходим на вторую итерацию. Создается новый заполненный данными файл. Но при вызове LoadFromFile функция без всяких ошибок просто "сворачивается". Try...Except также ничего не ловит. Визуальных сообщений нет.

Подумалось, что система не хочет писать заполненный файл. Подсунул всегда заполненный файл. Первая итерация прошла нормально, а вторая также вылетела.

Вставил Post после каждой записи в таблицу. Не помогло: вторая итерация вылетела.

Через Inspect поле в таблице просматривается, Eof нету, AV нету...

Подскажите в какую сторону копать дальше... 

Дополнение:
Вставил перед 
   while not Eof do
установку на первую запись:
   First;

Падает с теми же симптомами но уже прямо на первой записи...

Это сообщение отредактировал(а) Pakshin A. S. - 28.7.2011, 13:54
PM   Вверх
Pakshin A. S.
Дата 28.7.2011, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 2
Всего: 61



Нашел где сваливается...

Не может создать TADOBlobStream. Валится в конструкторе:

Код

    if not (FDataSet.State in [dsEdit, dsInsert]) then
      DatabaseError(SNotEditing, FDataSet);


FDataSet.State получается равным dsBrowse => DatabaseError, которая по всей видимости где-то перехватилась...

Что не так с кодом?
PM   Вверх
Pakshin A. S.
Дата 28.7.2011, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 2
Всего: 61



Тьфу... Вот я ступил... Edit же вызывается для каждой строки...  smile 
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0669 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.