- Код: Выделить всё
FBDataSet6.Open; FBDataSet6.FetchAll;
RxMemoryData1.EmptyTable;
while not FBDataSet6.EOF do begin
RxMemoryData1.Append;
RxMemoryData1.FieldByName('ServiceTest_ID').AsString := FBDataSet6.FieldByName('ServiceTest_ID').AsString;
...
FBDataSet6.Next;
end;
в дальнейшем
- Код: Выделить всё
RxMemoryData1.First;
while not RxMemoryData1.EOF do begin
if Trim(RxMemoryData1.FieldByName('flowrate').AsString) = 'X' then begin
p:=p+1;
end
else begin
servicetestcount := servicetestcount + 1;
end;
RxMemoryData1.Next;
end;
Дак вот, если так и оставить, то всё работает. Но если выполнить сортировку:
- Код: Выделить всё
RxMemoryData1.SortOnFields('datetime', true);
то... servicetestcount будет на единицу больше чем реально... на сколько углядел, происходит дублирование одной из записи за счет затирания другой (могло бы быть и наоборот, на один меньше, просто servicetestcount=~1500, а всего записей на 6 больше).
Но, если перед этой сортировкой (или вместо) выполнить
- Код: Выделить всё
FBDataSet6.SortOnFields('datetest,timetest', [true, true]);
то дублирование и затирание происходит других записей, (datetime - это сборное поле из datetest и timetest).
Такое происходит и на нескольких записях и на множестве. При одинаковых запросах комбинации одни и теже, но зависимости их порядкого номера от чего либо не заметил.
Добавлено спустя 10 минут 24 секунды:
а, да: winXP, 0.9.25 (21.11.2008), RxLib из SVN SourceForge (не последний конечно, но не старый)