![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Копирование таблицы [D7]
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 у алиаса чему равен?