Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Копирование таблицы [D7]


Страницы:   1 2

Demiurg ©   (2004-04-20 10:13:00) 

Копирую таблицу из одной базы в другую. В одной записи этой таблицы есть очень длинное текстовое поле. И на этой записи вылетает ексепшн с сообщением что-то типа "Invalid BLOB hanlde". Походу такая длинная строка как blob рассматривается. Прбовал копировать разными способами - то же самое... Что это может быть и как лечить? Помогите, плиз.
 Да, база InterBase. К исходной таблице обращаюсь через BDE, к результирующей напрямую.


Demiurg   (2004-04-20 11:49:00) [21]

Ну блин :)

 sDDicti это TIBSQL
 qSDicti - TQuery (указывает на исходную таблицу) в его SQL записано select * from dicti


   sDDicti.SQL.Clear;
   sDDicti.SQL.Add('insert into Dicti (ISN, PARISN, CHILD, CODEINT, CODE, SNAME, CODE2, CODE3, FNAME, FLTR,');
   sDDicti.SQL.Add('TNAME, CNAME, ACTIV, SYNISN, NCHILD, UPDATED, UPDATEDBY, DESCRIPTION)');
   sDDicti.SQL.Add('values');
   sDDicti.SQL.Add('(:ISN, :PARISN, :CHILD, :CODEINT, :CODE, :SNAME, :CODE2, :CODE3, :FNAME,');
   sDDicti.SQL.Add(':FLTR, :TNAME, :CNAME, :ACTIV, :SYNISN, :NCHILD, :UPDATED, :UPDATEDBY,');
   sDDicti.SQL.Add(':DESCRIPTION)');

   qSDicti.Close;
   qSDicti.Open;
   qSDicti.FetchAll;
   rc := qSDicti.RecordCount;
   qSDicti.First;

   while not qSDicti.Eof do
   begin
     for i := 0 to qSDicti.FieldCount - 1 do
     begin
       sDDicti.Params[i].Value := qSDicti.Fields[i].Value;
     end;
     sDDicti.ExecQuery;
     qSDicti.Next;
     Inc(rn);
     pr.Position := Round(100 * rn / rc);
     Application.ProcessMessages;
   end;
   dmMain.trAgency.CommitRetaining;


 Прбовал и другими способами копировать, например как в следующем куске:


   while not qSRate.Eof do
   begin
     qDRate.Append;
     for i := 0 to qSRate.FieldCount - 1 do
       qDRate.Fields[i].Assign(qSrate.Fields[i]);
     qDRate.Post;
     qSRate.Next;
     Inc(rn);
     pr.Position := Round(100 * rn / rc);
     Application.ProcessMessages;
   end;
   dmMain.trAgency.CommitRetaining;


Ega23   (2004-04-20 11:40:00) [22]

Тогда дело не в BlobSize.
Код давай! :о)


Demiurg   (2004-04-20 11:30:00) [23]


> Но меньше, например,  1000?

Да. Больше 400 нету.


Demiurg   (2004-04-20 11:30:00) [24]


> Но меньше, например,  1000?

Да. Больше 400 нету.


Ega23   (2004-04-20 11:20:00) [25]

Но меньше, например,  1000?


Demiurg   (2004-04-20 11:06:00) [26]


> А очень длинное - это на сколько?

 Ну больше 300 символов.


Ega23   (2004-04-20 11:01:00) [27]

А очень длинное - это на сколько?


Demiurg   (2004-04-20 10:44:00) [28]


> Соловьев ©   (20.04.04 10:42)

 Нет. А что, может помочь?


Соловьев   (2004-04-20 10:42:00) [29]


> Demiurg   (20.04.04 10:13)  

через поток не пробовал?


Demiurg   (2004-04-20 10:39:00) [30]

По-умолчанию 32. Blob to cash 64. Только что поэкспериментировал с ними в большую сторону - то же самое... Может уменьшить их? :)


Ega23   (2004-04-20 10:15:00) [31]

Blob Size у алиаса чему равен?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо