Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Перебор записей  [new]
Philin
Member

Откуда: г. Иркутск
Сообщений: 162
Я работаю в VFP6. Есть таблица, у которой установлена оптимистическая буферизация:
CURSORSETPROP("buffering", 5, 'mytable')
и индекс по одному числовому полю:
INDEX ON structidx TO mytableindex
Когда я добавляю запись, то "устанавливаю ее в нужное место", поставив ей соответствующее значение индексного поля. При этом у всех "нижестоящих" записей нужно так же изменить индесное поле.
Допустим у новой записи индексное поле new_id, тогда по идее должно работать:
UPDATE mytable SET structidx = structidx + 1 WHERE structidx >= new_idx
или
scan all
 if structidx >= new_idx
  REPLACE structidx WITH structidx + 1
 endif
endscan
НО! с помощью вышеуказанного кода ИНОГДА перебираются НЕ ВСЕ записи....
При этом все прекрасно работает так:
for i = 1 to reccount()
 go i
 if structidx >= new_idx
  REPLACE structidx WITH structidx + 1
 endif
endfor
Может у кого-нибудь было когда-нибудь что-нибудь подобное?
11 ноя 04, 06:58    [1096838]     Ответить | Цитировать Сообщить модератору
 Re: Перебор записей  [new]
Hel!Riser
Member

Откуда: Нижний Новгород
Сообщений: 972
перед началом REPLACE сначала отключи индекс, а затем снова его подключи
11 ноя 04, 08:30    [1096948]     Ответить | Цитировать Сообщить модератору
 Re: Перебор записей  [new]
Philin
Member

Откуда: г. Иркутск
Сообщений: 162
а как отключить индекс?
и потом... не приведет ли это к тому, что работать будет все это чересчур медленно?
11 ноя 04, 11:50    [1097819]     Ответить | Цитировать Сообщить модератору
 Re: Перебор записей  [new]
Hel!Riser
Member

Откуда: Нижний Новгород
Сообщений: 972
после фстафки SET ORDER TO и тормозить не будет, потому што фс:е равно перебирать фсе записи
11 ноя 04, 11:57    [1097865]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить