Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как убрать все индексы у таблиц программно (VFP 8) ? / 17 сообщений из 17, страница 1 из 1
21.01.2005, 09:59
    #32876289
Vladimir M Sklyar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как убрать все индексы у таблиц программно (VFP 8) ?
...
Рейтинг: 0 / 0
21.01.2005, 10:10
    #32876312
alexFV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как убрать все индексы у таблиц программно (VFP 8) ?
DELETE TAG ALL может поможет?
...
Рейтинг: 0 / 0
21.01.2005, 10:11
    #32876316
AleksMed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как убрать все индексы у таблиц программно (VFP 8) ?
См. help по alter table
...
Рейтинг: 0 / 0
21.01.2005, 10:42
    #32876418
Vladimir M Sklyar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как убрать все индексы у таблиц программно (VFP 8) ?
Спасибо всем.

PS чего-то туплю уже под конец недели

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
27.02.2006, 08:14
    #33566672
Как убрать все индексы у таблиц программно (VFP 8) ?
Здравствуйте!
Подскажите пожалуйста как удалить индексы из таблицы, ну например, которые начинаются на "А1". Delete tag здесь не прокатывает, т.к. можно удалить только перечисленные индексы (имена индексов) или сразу все ALL.
Буду очень благодарен, кто подскажет как тут быть! Спасибо.
...
Рейтинг: 0 / 0
27.02.2006, 10:12
    #33566944
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как убрать все индексы у таблиц программно (VFP 8) ?
Код: plaintext
ATAGINFO(ArrayName [,cCDXName [, nWorkArea | cTableAlias]])

Дальше разберешься или код рисовать.
...
Рейтинг: 0 / 0
27.02.2006, 11:46
    #33567298
Как убрать все индексы у таблиц программно (VFP 8) ?
PaulWist
Код: plaintext
ATAGINFO(ArrayName [,cCDXName [, nWorkArea | cTableAlias]])

Дальше разберешься или код рисовать.


Что то, к сажалению, не совсем получается! У меня дело в том, что идексы эти создаются программно, когда я выполняю сортировку,

if .not.empty(j)
i=loc_main+substr(sys(2015),2)
x_recno=recno()
this.del_index = i
if empty(x_kuda)
index on &j tag (i)
This.Columns[u_order].Text1.Tag='@'+j+';'+i
else
index on &j tag (i) DESCENDING
This.Columns[u_order].Text1.Tag=This.Columns[u_order].Text1.Tag+';'+i
ENDIF
ENDIF
А удалять мне его нужно при Destroy, т.е. при выходе из объкта!
_del=this.del_index
SELECT (this.RecordSource)
DELETE TAG &_del
удаляется, только последний, используемый индекс.
Напиши, если сможешь поподробнее
...
Рейтинг: 0 / 0
27.02.2006, 12:12
    #33567428
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как убрать все индексы у таблиц программно (VFP 8) ?
Стоп-стоп, зачем удалять индексы после сортировки, они ведь могут понадобится в следующий раз, это во первых, во вторых на табличке в пару млн записей представляешь сколько будет занимать времени новое индексирование, если используешь LV/RV/CURSOR/SELECT SQL, то это занятие бессмысленное, поскольку индексы удалятся сами.

Если очень хочется, то вот код

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
CREATE CURSOR test (fld1 i, fld2 i)

INDEX ON fld1 TAG ('a' + SUBSTR(SYS( 2015 ), 2 ))
INDEX ON fld2 TAG ('b' + SUBSTR(SYS( 2015 ), 2 ))

? 'Index number = ' + TRANSFORM(ATAGINFO(Arr))

FOR i =  1  TO ATAGINFO(Arr)
	? 'Index ¹ ' + TRANSFORM(i)
	? 'Name =' + TRANSFORM(Arr(i))
* обращаю внимание, что ATAGINFO возвращает строку в верхнем регистре
	IF LEFT(Arr(i), 1 ) == 'A'
		DELETE TAG (Arr(i)) 
	ENDIF 
ENDFOR 

? '----------- after deleting'
? 'Index number = ' + TRANSFORM(ATAGINFO(Arr))

FOR i =  1  TO ATAGINFO(Arr)
	? 'Index ¹ ' + TRANSFORM(i)
	? 'Name =' + TRANSFORM(Arr(i))
ENDFOR 

?ATAGINFO(Arr)
...
Рейтинг: 0 / 0
27.02.2006, 12:25
    #33567480
Как убрать все индексы у таблиц программно (VFP 8) ?
Большое спасибо! Сейчас попробую!
А индексы мне действительно нужно удалить, т.к. при каждой сортировке, у меня они заново создаються.
...
Рейтинг: 0 / 0
27.02.2006, 12:44
    #33567563
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как убрать все индексы у таблиц программно (VFP 8) ?
Попов АнатолийБольшое спасибо! Сейчас попробую!
А индексы мне действительно нужно удалить, т.к. при каждой сортировке, у меня они заново создаються.

Ну упёртый ты, так проверь наличие индекса перед тем как его создавать, если он уже есть, то зачем его создавать просто используй его.
...
Рейтинг: 0 / 0
27.02.2006, 13:47
    #33567811
Как убрать все индексы у таблиц программно (VFP 8) ?
Впринципе, ты прав! Потом тормоза полезут, лучше оставлю я эти индексы, просто я давно с foxom не общался, а сейчас пришлось! Всеравно спасибо огромное!
Вот у меня еще один вопрос, по созданию отчетов!
Я форму отчета накидал, все вроде круто, данные беру сразу из базовой таблицы, но возникла такая проблема, что когда таблица открыта он выдает ошибку, что таблица используется, впринципе все правильно! Я думаю здесь сделать по-другому, через select, тем более, мне как раз придется накладывать условия на таблицу, так то бы пришлось через фильтр, а так думаю еще проще, темболее условия не сильно замудренные! ну вот например
SELECT * from child_data WHERE pol = 'Ж' ORDER BY fam INTO CURSOR rep1
Только я плохо представляю как связать мою готову форму отчета с этим курсором! Т.е. форма одна на 8 отчетов (одинаковая структура) только разные данные (всмысле запросы). Как это реализовать, чтобы вызывались эти отчеты из меню, наверное думаю надо писать это в Prg-ке!
Может у вас есть какие лучше предложения как это вообще все реализовать. Я думаю что это не сложно, просто я недавно стал работать с FoxPro. Кстати у меня 8-ка!
Заранее огромное спасибо!
...
Рейтинг: 0 / 0
27.02.2006, 14:03
    #33567887
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как убрать все индексы у таблиц программно (VFP 8) ?
Попов Анатолий Вот у меня еще один вопрос, по созданию отчетов!
Я форму отчета накидал, все вроде круто, данные беру сразу из базовой таблицы, но возникла такая проблема, что когда таблица открыта он выдает ошибку, что таблица используется, впринципе все правильно!

Да чего уж тут правильного если таблица занята, надо сделать в форме настройку SET EXCLU OFF

Попов Анатолий Я думаю здесь сделать по-другому, через select, тем более, мне как раз придется накладывать условия на таблицу, так то бы пришлось через фильтр, а так думаю еще проще, темболее условия не сильно замудренные! ну вот например
SELECT * from child_data WHERE pol = 'Ж' ORDER BY fam INTO CURSOR rep1
Только я плохо представляю как связать мою готову форму отчета с этим курсором! Т.е. форма одна на 8 отчетов (одинаковая структура) только разные данные (всмысле запросы). Как это реализовать, чтобы вызывались эти отчеты из меню, наверное думаю надо писать это в Prg-ке!

1. Надо отчету указать сессию данных с которой будет работать отчет SET DATASESSION TO, если хочешь через фильтр, либо передать отчету условие фильтрации или выборки (но это отдельный разговор)
2. В init-e DE отчета сделать необходимый SELECT .... INTO CURSOR, а отчет построить на основе курсора
3. Если хочешь через меню, то можно , правда там есть свои особенности.
3.
...
Рейтинг: 0 / 0
28.02.2006, 08:19
    #33569528
Как убрать все индексы у таблиц программно (VFP 8) ?
Спасибо, попробую! А не подскажете как проверить существует ли индекс!
...
Рейтинг: 0 / 0
28.02.2006, 08:44
    #33569569
Как убрать все индексы у таблиц программно (VFP 8) ?
Кстати, если конечно можешь, подробнее опишите:

2. В init-e DE отчета сделать необходимый SELECT .... INTO CURSOR, а отчет построить на основе курсора
3. Если хочешь через меню, то можно , правда там есть свои особенности.

Т.е. я как понял сам select прописывается в inite event, а как именно построить на основе этого курсора?
И по 3-му пунку, если можно поподробнее!

Можно даже примерчик скинуть, буду просто очень-очень благодарен!
...
Рейтинг: 0 / 0
01.03.2006, 07:16
    #33572376
Как убрать все индексы у таблиц программно (VFP 8) ?
Привет всем! У меня вот такая проблемка, вроде и не сложная, но что-то дадуть не могу как это сделать, используя стандартные функции для работы с датами! Проблема: есть дата рождения day и дата смерти day_out. По мед. стандартом, если ребенок умер до года то это значит, что day_out - day <= 11 месяцев 29 дней! И только так, переводить месяцы в дни нельзя! :( Если знает как это сделать подскажите пожалуйста!
Заранее благодарен!
...
Рейтинг: 0 / 0
03.03.2006, 02:17
    #33578620
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как убрать все индексы у таблиц программно (VFP 8) ?
Hi Анатолий!

ATAGINGO() или для старых версий фокса TAGCOUNT()+TAG() и получая таким
образом списко тегов уже составить список для удаления.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
03.03.2006, 07:56
    #33578760
Как убрать все индексы у таблиц программно (VFP 8) ?
Igor Korolyov
Hi Анатолий!

ATAGINGO() или для старых версий фокса TAGCOUNT()+TAG() и получая таким
образом списко тегов уже составить список для удаления.

Posted via ActualForum NNTP Server 1.3

Спасибо Игорь! У меня получилось!
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как убрать все индексы у таблиц программно (VFP 8) ? / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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