Показать сообщение отдельно
  #4  
Старый 09.04.2007, 18:14
Аватар для mav_c
mav_c mav_c вне форума
Активный
 
Регистрация: 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 медленнее, а быстрым называется только потому, что воткнуто быстро. =)

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

Есть мнения?
Опиши полностью задачу. Может быть можно обойтись без локального датасэта
__________________
---------------------------------------------
Программирование - не профессия, а стиль жизни
Ответить с цитированием