Прерывания цикла LOOP

ОАР>> Ну кто-же использует в Виндах обычные циклы для обработки
ОАР>> больших массивов данных?!

ВД> А что надо пользовать?
ВД> Если есть база данных на фоксе, мне надо выбрать из нее записи
ВД> удовлетворяющие определенному условию и поместить записи в мою базу.
ВД> Подсчитать исходя из моей базы некоторые данные и поместить в другие базы.
ВД> Как правильно организовать? Организовал на окне,
ВД> по Ок срабатывает цикл, который обрабатывет первую базу и помещает
ВД> записи в мою. Обыкновенный цикл LOOP. Его нужно прервать в любой
ВД> момент по нажатию Esc.( ну хотелось бы).
ВД> Может правильней было бы пользоваться виртуальными файлами.
ВД> Но я ими никогда не пользовался. И не знаю, где объявлять.
ВД> А потом как виртуальный файл загнать в реальный?
ВД> А пока получается что обработка идет довольно долго.
ВД> Если не сложно всем кто может помочь мне в моей проблеме.
ВД> Можно мылом на меня.

Во-первых, необходимо определиться с использованием ключей. Если есть подходящий ключ, который позволит сузить область сканируемых записей, то следует использовать его. Если мне не изменяет память, то ты писал, что другая програ, написанная на Фоксе, довольно шустро делает необходимую выборку. Если это так, то, скорее всего, подходящий ключ есть.

Ну, а дальше — стандартная выборка. Простенький пример с использованием View и моего класса организации Виндовых циклов.

ScanView  VIEW(FoxFile)
          END
Process   BasicProcessType

Clear(GLO:Order_PaySum)
BIND(‘FirstDate’,GLO:FirstDate)
BIND(‘LastDate’,GLO:LastDate)
BIND(‘MinSum’,GLO:MinSum)
BIND(‘MaxSum’,GLO:MaxSum)

Process.Init(True,’Выборка…’,,,,True,50,Records(FoxFile))
ScanView{PROP:Filter} = ‘(FOX:Date => FirstDate) AND ‘& |
‘(FOX:Date MinSum) AND (FOX:PaySum