Глюк сортировки FBDataSet+RxMemoryData1

Модератор: Модераторы

Ответить
Аватара пользователя
VAshot
постоялец
Сообщения: 128
Зарегистрирован: 01.11.2007 11:31:21
Откуда: Пермь

Глюк сортировки FBDataSet+RxMemoryData1

Сообщение VAshot »

Делаю запрос FBDataSet и заполнение RxMemory.

Код: Выделить всё

  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 (не последний конечно, но не старый)
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Будем искать.
Ответить