Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  4 485

•  TDictionary Custom Sort  6 514

•  Fast Watermark Sources  6 303

•  3D Designer  9 249

•  Sik Screen Capture  6 638

•  Patch Maker  7 015

•  Айболит (remote control)  7 021

•  ListBox Drag & Drop  5 896

•  Доска для игры Реверси  97 195

•  Графические эффекты  7 226

•  Рисование по маске  6 524

•  Перетаскивание изображений  5 393

•  Canvas Drawing  5 761

•  Рисование Луны  5 473

•  Поворот изображения  5 002

•  Рисование стержней  3 551

•  Paint on Shape  2 817

•  Генератор кроссвордов  3 690

•  Головоломка Paletto  2 974

•  Теорема Монжа об окружностях  3 779

•  Пазл Numbrix  2 492

•  Заборы и коммивояжеры  3 174

•  Игра HIP  2 140

•  Игра Go (Го)  2 077

•  Симулятор лифта  2 453

•  Программа укладки плитки  2 118

•  Генератор лабиринта  2 594

•  Проверка числового ввода  2 271

•  HEX View  2 600

•  Физический маятник  2 212

 
скрыть

Копирование записи в пределах одной и той же таблицы



Автор: OAmiry (Borland)

"Каким образом мне копировать запись в пределах одного и того же TTable? То есть, если я вижу текущую запись на экране и хочу ее скопировать в ту же таблицу с изменением индекса поля(ей), то какие действия мне необходимо предпринять?"

Необходимы два TTable, связанные с одной таблицей. Когда Table1 позиционируется в копируемой строке, с помощью Table2 вы можете выполнить операцию добавления записи. Пример: {только для демонстрации идеи, пример может быть нерабочим}


procedure TForm1.Button1Click(Sender: TObject);
var
  i: Cardinal;
  srcStream: TBlobStream;
begin
  try
    with Table1 do
    begin
      CheckBrowseMode;
      if EOF or BOF then
        raise Exception.Create('Разместите курсор на правильной строке');
    end;
    with Table2 do
    begin
      Append;
      for i := 0 to Table1.FieldCount - 1 do
        if Table1.Fields[i].DataType < ftBytes then
          FieldByName(Table1.Fields[i].FieldName).Assign(Table1.Fields[i])
        else
        try
          srcStream := nil;
          srcStream := TBlobStream.Create(TBlobField(Table1.Fields[i]), bmRead);
          TBlobField(FieldByName(Table1.Fields[i].FieldName)).LoadFromStream(srcStream);
        finally
          if Assigned(srcStream) then
            srcStream.Free;
        end;
      Post;
    end;
  except
    on E: EDBEngineError do
      MessageDlg(E.Message, mtError, [mbOk], 0);
    on E: Exception do
      MessageDlg(E.Message, mtError, [mbOk], 0);
  end;
end;





Похожие по теме исходники

Расчет зубчатой передачи