powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Пересоздание индекса
3 сообщений из 3, страница 1 из 1
Пересоздание индекса
    #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
Пересоздание индекса
    #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
Пересоздание индекса
    #33605727
332_john
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да все получилось спасибо
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Пересоздание индекса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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