09.04.2007, 18:14
|
|
Активный
|
|
Регистрация: 26.03.2007
Адрес: Москва
Сообщения: 287
Репутация: 30
|
|
Цитата:
Сообщение от Holy
Конечно есть. Собственно из-за этого он и ругается.
Но у меня задача клонировать в наборе запись вместе с ее ключом. Сохранять в базу я это дело не буду.
"Быстрым" решением стало, заменить присвоение Data := Date на тупую пробежку по всему набору источнику и вставку записей в приемник Insert, Post. Структура приемника идентична, но формируется ручками:
Код:
for i := 0 to Source.FieldDefs.Count - 1 do
Dest.FieldDefs.Add(Source.FieldDefs[i].Name,
Source.FieldDefs[i].DataType,
Source.FieldDefs[i].Size);
Dest.CreateDataSet;
with Source do
begin
Source.First;
while not Eof do
begin
Dest.Insert;
for i := 0 to Fields.Count - 1 do
Dest.Fields[i].Value := Fields[i].Value;
Dest.Post;
Source.Next;
end;
end;
Работает это процентов на 80 медленнее, а быстрым называется только потому, что воткнуто быстро. =)
Как красиво выйти из сложившейся ситуации, я и ломаю голову. Хочется быстро поместить данные в локальный набор и иметь возможность организовать контроль вводимой пользователем информации, когда с сервера, когда на клиенте. Короче самому рулить набором как вздумается.
Есть мнения?
|
Опиши полностью задачу. Может быть можно обойтись без локального датасэта
__________________
---------------------------------------------
Программирование - не профессия, а стиль жизни
|