Лучший способ поменять две записи в TDataset Delphi? - PullRequest
1 голос
/ 13 июля 2010

Впервые в Delphi и программировании баз данных, но мне интересно, есть ли лучший способ обмена записями в наборе TDataset? Я прочитал некоторую помощь и не могу найти какие-либо очевидные методы. В настоящее время у меня реализована процедура перемещения записей вниз по набору данных, пока они не достигнут маркера Eof. Однако я получаю некоторые странные ошибки, когда я добираюсь до последней записи в моих данных. Все, что у меня есть, - это реализованная стандартная процедура свопинга в стиле массива, пытающаяся сохранить данные и еще много чего при манипулировании активными записями.

Код пока что

procedure TForm2.btnDownClick(Sender: TObject);
var
   sTmp,sTmp2  : string;
   iTmp,iTmp2  : integer;
begin
   tblMatched.DisableControls;
   if ( tblMatched.Eof <> true ) then
   begin
      // Grab data to swap
      tblMatched.GotoBookmark( tblMatched.GetBookmark );
      iTmp := tblMatched.Fields[0].AsInteger;
      sTmp := tblMatched.Fields[1].AsString;
      tblMatched.Next;
      iTmp2 := tblMatched.Fields[0].AsInteger;
      sTmp2 := tblMatched.Fields[1].AsString;

      // Swap data
      tblMatched.Prior;
      tblMatched.Edit;
      tblMatched.Fields[0].Value := iTmp2;
      tblMatched.Fields[1].Value := sTmp2;

      tblMatched.Next;
      tblMatched.Edit;
      tblMatched.Fields[0].AsInteger := iTmp;
      tblMatched.Fields[1].AsString := sTmp;
   end;
   tblMatched.EnableControls;
end;

1 Ответ

3 голосов
/ 14 июля 2010

Похоже, вы используете набор данных в памяти, такой как TClientDataset.Если вы просто поместите индекс в набор данных, он сохранит порядок для вас, поэтому вам не придется переставлять их вручную.Просто настройте индекс на основе любых критериев, которые вы хотите использовать.

...