Лучший способ поменять две записи в TDataset Delphi?
Новичок в 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 ответ
Похоже, вы используете набор данных в памяти, такой как TClientDataset. Если вы просто поместите индекс в набор данных, он сохранит порядок для вас, поэтому вам не придется переставлять их вручную. Просто настройте индекс на основе любых критериев, которые вы хотите использовать.