정렬 문제로 질문 올립니다.
현재 예제.db 에서 a 필드와 b 필드가 있고 a필드가 인덱스되어 있어
a값에의해 정렬이 되며 그값은 다음과 같습니다.
a b
1 10
3 20
5 30
질문은 다음과 같습니다.
with table do
begin
i := 0;
last;
while not table.bof do
begin
if fieldbyname('a').asinteger = 5 then
fieldbyname('a').asinteger :=2;
fieldbyname('b').asinteger := inc(i);
prior;
end;
end;
위와 같은 코딩을 하였을경우
제가 원하는 결과 값 --> 인덱스 정렬에 의한 최종결과값
a b a b
=========== ============
1 3 1 3
3 2 2 1
2 1 3 2
================ ============
그러나 prior 란 놈때문에 b의 값을 집어넣은후 prior 란놈을 만나면
테이블이 인덱스에 의해 정렬되면서 a의 3 에해당되는 b가 적용이 안되고
건너 뛰게되죠.
코딩에 의한 결과값
a b
===========
1 2
2 1
3 20
==========
위처럼 a 5값이 2로 바뀌고 그다음 이전레코드인
a의 3 row로 레코드 포인터가 이동되게끔 해야 되는데
5가 2로 바뀌면서 prior를 시키면 인덱스에 의해 정렬이 되면서
레코드 포인터가 a의 1 값으로 이동이 되죠.
결국 a의 3값 레코드는 while 문에의한 b값 처리가 되지않고 건너
뛰게 됩니다..
어떻게 a의 3 레코드도 b값이 적용될수 있도록 할수 있는 방법이 없나요?
질문의 요지를 제대로 설명했나 모르겠네요.
암튼 고수님들은 제질문을 이해했으리라 믿으며 답변좀 꼭 부탁 드리겠습니다.