Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Пересоздание индекса / 3 сообщений из 3, страница 1 из 1
16.03.2006, 00:19
    #33603776
332_john
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пересоздание индекса
При удалении записей во view c индексами требует закрыть их но при их закрытии удаляется файл индекса.
Что придется снова создавать индексы?

В событии Load формы создаются индексы для view
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
[/src]CURSORSETPROP("Buffering",  3 , lcAlias)
INDEX ON vocabview1.num1 TAG num1 OF vocabtmp1 FOR !DELETED("vocabview1")
INDEX ON vocabview1.num2 TAG num2 OF vocabtmp1 FOR !DELETED("vocabview1") ADDITIVE
INDEX ON STR(vocabview1.valnum,  4 ) TAG valnum OF vocabtmp1 ADDITIVE
INDEX ON vocabview1.xvalue1 TAG xvalue1 OF vocabtmp1 ADDITIVE

SET ORDER TO
CURSORSETPROP("Buffering",  5 , lcAlias)
[src]

Затем в методе удаление
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
[/src]
ThisForm.LastIndex = SET("Index")

CURSORSETPROP("Buffering",  3 , ThisForm.Alias)
 SET INDEX TO
CURSORSETPROP("Buffering",  5 , ThisForm.Alias)

DELETE
BEGIN TRANSACTION
IF TABLEUPDATE(.F., .T., lcAlias) = .T.
  END TRANSACTION
....  
ELSE
  ROLLBACK
....
ENDIF
CURSORSETPROP("Buffering",  3 , ThisForm.Alias)
 SET INDEX TO (ThisForm.lastIndex)          &&Индекса уже нет
CURSORSETPROP("Buffering",  5 , ThisForm.Alias)

[src]
...
Рейтинг: 0 / 0
16.03.2006, 01:28
    #33603806
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пересоздание индекса
Создавай структурные индексы. Их закрывать не обязательно.

Дело в том, что vocabtmp1 - это алиас, а не имя файла DBF. Поэтому, хотя у тебя и получаются мультииндексные, но НЕ структурные файлы. Такие действительно надо удалять.

Т.е. синтаксис должен быть такой:

Код: plaintext
1.
2.
3.
4.
5.
6.
CURSORSETPROP("Buffering",  3 , lcAlias)
select (m.lcAlias)
INDEX ON num1 TAG num1 FOR !DELETED()
INDEX ON num2 TAG num2 FOR !DELETED() 
INDEX ON STR(valnum,  4 ) TAG valnum
INDEX ON xvalue1 TAG xvalue1 

Нигде в выражении индекса не надо упоминать алиас. Структурный индексный файл не мешает работе. Допустим внутри транзакции. Нет необходимости его отключать. После перезапроса (Requery()) автоматически обновляется. При закрытии View автоматически будет уничтожен.
...
Рейтинг: 0 / 0
16.03.2006, 15:32
    #33605727
332_john
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пересоздание индекса
да все получилось спасибо
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Пересоздание индекса / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]