Открытие таблиц старых версий и индексация

MapInfo, MapBasic
Ответить
Qwe1
Интересующийся
Сообщения: 36
Зарегистрирован: 28 мар 2009, 20:02
Репутация: 0

Открытие таблиц старых версий и индексация

Сообщение Qwe1 »

При открытии таблиц, созданных в версиях 8 и ниже, МапИнфо 9 (и 10) выдает сообщение, что файл индексов был создан для другого языка и предлагает переиндексировать таблицу. Можно ли перед открытием таблицы (средствами MapBasic) определять версию и как-то автоматически переиндексировать таблицы?
reasonat
Завсегдатай
Сообщения: 257
Зарегистрирован: 10 июн 2009, 12:21
Репутация: 0
Откуда: Екатеринбург
Контактная информация:

Re: Открытие таблиц старых версий и индексация

Сообщение reasonat »

Перед открытием, это что - перехватывать событие что ли? Мне думается, проще запустить спецутилиту MapBasic для переиндексации указанных таблиц, например, всех таблиц в выбранной папке, или всех таблиц из указанного рабочего набора. А утилита будет проходить по колонкам каждой таблицы, смотреть признак индексировния колонки через ColumnInfo(), затем удалять имеющийся индекс и создавать его снова, в текущей версии MapInfo, через Drop Index и Create Index
Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Открытие таблиц старых версий и индексация

Сообщение Boris »

Вообще-то это сообщение выдается всегда, когда есть индексированные текстовые поля, при смене версии или языка Mapinfo. Т.е. в последних версиях практически всегда, а не только при переходе к 9 или 10. В 10 опять сменились принципы индексации, так что и таблицы 9.х не гарантированы от этого.
Кроме выше приведенного совета такое поведение хорошо лечиться упаковкой таблицы.
reasonat
Завсегдатай
Сообщения: 257
Зарегистрирован: 10 июн 2009, 12:21
Репутация: 0
Откуда: Екатеринбург
Контактная информация:

Re: Открытие таблиц старых версий и индексация

Сообщение reasonat »

сообщение-то выдается, просто неудобно каждый раз по 50 нажимать "ok" на эти сообщения, когда открывается много таблиц. Поэтому тянет что-то сделать на MapBasic. Я просто жму на клавиатуре "enter" не отрывая пальца, пока все таблицы не откроются. Тоже выход )
А упаковывать, зачастую, опасно - когда открывается рабочий набор с растащенными подписями, упаковка чревата порчей настроенной картинки
Qwe1
Интересующийся
Сообщения: 36
Зарегистрирован: 28 мар 2009, 20:02
Репутация: 0

Re: Открытие таблиц старых версий и индексация

Сообщение Qwe1 »

Именно эти сообщения и нужно убрать, чтобы пользователь не держала зажатый "Enter". Утилиты и аналогичные средства есть, но они подразумевают, что в начале нужно прогнать ими слои, а потом без сообщений уже открывать. Для пользователя не всегда это удобно.
Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Открытие таблиц старых версий и индексация

Сообщение Boris »

так давайте вернемся к задаче. раз утилиты есть, то в чем собственно тогда состоит задача? сколько раз в день таблицы открываются на машинах с разной кодировкой таблиц?
reasonat
Завсегдатай
Сообщения: 257
Зарегистрирован: 10 июн 2009, 12:21
Репутация: 0
Откуда: Екатеринбург
Контактная информация:

Re: Открытие таблиц старых версий и индексация

Сообщение reasonat »

Ну вот у меня есть любимая версия, 8.5. Под ней работает много необходимого, что не работает в других. А у заказчика принимается только в 9.0, либо у организации, поставляющей исходный материал, только 7.8. Вот и гоняем туда-сюда материалы. Плюс собственные огромные рабочие наборы двух-трехлетней давности. Причем открывают их в разных отделах разные пользователи в разных версиях, и даже не пересохранить несколько папок в одну новую версию, потому что кому-то в старой надо. Такая вот бывает ситуация.. Но именно в таком случае никаких утилит не нужно, лучше жать Enter. А если надо все же пересохранить с новыми индексами, то проще раз открыть нужные таблицы и запустить утилиту. И дальше не думать.
Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Открытие таблиц старых версий и индексация

Сообщение Boris »

Не в плане ответа на исходный вопрос, а в плане совета из личного опыта: нажимать Enter при этих и других сообщениях в MI - небезопасно. "Пробел" действует так же, но попав в ненужное место может только затереть несколько символов, а Enter может привести к более разрушительным действиям.
reasonat
Завсегдатай
Сообщения: 257
Зарегистрирован: 10 июн 2009, 12:21
Репутация: 0
Откуда: Екатеринбург
Контактная информация:

Re: Открытие таблиц старых версий и индексация

Сообщение reasonat »

спасибо :)
Аватара пользователя
Kharlamov
Участник
Сообщения: 57
Зарегистрирован: 06 ноя 2009, 17:20
Репутация: 0
Откуда: Москва
Контактная информация:

Re: Открытие таблиц старых версий и индексация

Сообщение Kharlamov »

Qwe1 писал(а):При открытии таблиц, созданных в версиях 8 и ниже, МапИнфо 9 (и 10) выдает сообщение, что файл индексов был создан для другого языка и предлагает переиндексировать таблицу. Можно ли перед открытием таблицы (средствами MapBasic) определять версию и как-то автоматически переиндексировать таблицы?
Упакуй таблицы и все.
reasonat
Завсегдатай
Сообщения: 257
Зарегистрирован: 10 июн 2009, 12:21
Репутация: 0
Откуда: Екатеринбург
Контактная информация:

Re: Открытие таблиц старых версий и индексация

Сообщение reasonat »

Kharlamov писал(а): Упакуй таблицы и все.
не универсальный способ
Qwe1
Интересующийся
Сообщения: 36
Зарегистрирован: 28 мар 2009, 20:02
Репутация: 0

Re: Открытие таблиц старых версий и индексация

Сообщение Qwe1 »

Boris писал(а):<...> раз утилиты есть, то в чем собственно тогда состоит задача? <...>?
Дело в том, что утилита должна в любом случае открыть таблицу: при этом сообщение, естественно, выдается. Все равно надо нажимать много раз "Enter" (или пробел) - неудобства те же. Идея с открытием всех (или заданных) таблиц в папке ясна, но все равно нужно использовать "Open Table имя_слоя". Упаковка слоя мне не помогла.
Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Открытие таблиц старых версий и индексация

Сообщение Boris »

есть утилиты, которые экспортируют таблицы TAB в MIF или SHP. В том числе и идущий в комплекте Universal Translator. Сама MI в этом случае таблицы не открывает и не ругается. Обратный импорт создаст таблицы в той версии, в которой будет открыт.
---
Пришлите таблицу на пробу. У меня всегда упаковка срабатывала.
Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Открытие таблиц старых версий и индексация

Сообщение Boris »

Только что пришлось самому столкнуться с массовой "руганью" на индексы в присланных со стороны таблицах. Пришлось написать скрипт на VBS ( Visual Basic Script - есть на всех Winows машинах). Скрипт надо запускать - из командной строки. Для работы по созданию удалению индекса требуется запущенная MapInfo, в которой НЕТ открытых таблиц, которые надо поправить. В идеале - просто пустая MapInfo.
Обрабатываются таблицы "родного" формата MapInfo, а так же в смешанном формате MapInfo-Access, когда атрибутика храниться в БД Accrss.
Порядок индексов сохраняется: т.е. если первое поле имело индекс 3, а второе - индекс 1, то этот порядок сохраниться и после воссоздания индексов.
mi_rebuild_Index.vbs.zip
(12.6 КБ) 725 скачиваний
Проверено на MapInfo 9.5.1.
Замечания и пожелания - приветствуются.
Ответить

Вернуться в «MapInfo»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя