Delphi World - Как добавить копию текущей записи
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Как добавить копию текущей записи

Автор: Андрей Никитин


procedure AppendCurrent(Dataset:Tdataset);
var
  aField: Variant ;
  i: Integer ;
begin
  // Создаём массив
  aField := VarArrayCreate([0,DataSet.Fieldcount-1],VarVariant);

  // считываем значения в массив
  for i := 0 to (DataSet.Fieldcount-1) do
    aField[i] := DataSet.fields[i].Value ;

  DataSet.Append ;

  // помещаем значения массива в новую запись
  for i := 0 to (DataSet.Fieldcount-1) do
    DataSet.fields[i].Value := aField[i] ;
end;

При использовании приведенного алгоритма не удается скопировать поля типа BLOB. Можно просто вставить в 1-м и 2-м циклах проверку на тип поля, например так:

procedure TMainForm.AppendCurrent(Dataset: Tdataset);
var
  aField: Variant;
  i: Integer;
begin
  // Создаём массив
  aField := VarArrayCreate([0, DataSet.Fieldcount - 1], VarVariant);

  // считываем значения в массив
  for i := 0 to (DataSet.Fieldcount - 1) do
    if not DataSet.Fields[i].IsBlob {// <- Проверяем на BLOB} then
      aField[i] := DataSet.fields[i].Value;

  DataSet.Append;

  // помещаем значения массива в новую запись
  for i := 0 to (DataSet.Fieldcount - 1) do
    if not DataSet.Fields[i].IsBlob {// <- Проверяем на BLOB} then
      DataSet.fields[i].Value := aField[i];
end;

Этот способ хорош, когда поля типа BLOB не используются, или информация, хранящаяся в них несущественна. Я, например, в BLOB храню фотографии абонентов адресной книги.

Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования