Tdataset Delphi에서 두 개의 레코드를 교환하는 가장 좋은 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/3240836

문제

일반적으로 델파이 및 데이터베이스 프로그래밍을 사용하면 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;
.
도움이 되었습니까?

해결책

TCLIENTDATASET와 같은 메모리 내 데이터 집합을 사용하는 것 같습니다.데이터 집합에 색인을 넣으면 단순히 색인을 입력하면 수동으로 재정렬 할 필요가 없으므로 일을 주문할 수 있습니다.사용하려는 기준을 기반으로 인덱스를 설정하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top