Q&A

  • 정렬문제로 질문올립니다. 꼭좀 답변 부탁 드리겠습니다.
정렬 문제로 질문 올립니다.



현재 예제.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값이 적용될수 있도록 할수 있는 방법이 없나요?



질문의 요지를 제대로 설명했나 모르겠네요.

암튼 고수님들은 제질문을 이해했으리라 믿으며 답변좀 꼭 부탁 드리겠습니다.





0  COMMENTS