Страница 1 из 1
Открытие таблиц старых версий и индексация
Добавлено: 28 апр 2010, 16:50
Qwe1
При открытии таблиц, созданных в версиях 8 и ниже, МапИнфо 9 (и 10) выдает сообщение, что файл индексов был создан для другого языка и предлагает переиндексировать таблицу. Можно ли перед открытием таблицы (средствами MapBasic) определять версию и как-то автоматически переиндексировать таблицы?
Re: Открытие таблиц старых версий и индексация
Добавлено: 29 апр 2010, 12:52
reasonat
Перед открытием, это что - перехватывать событие что ли? Мне думается, проще запустить спецутилиту MapBasic для переиндексации указанных таблиц, например, всех таблиц в выбранной папке, или всех таблиц из указанного рабочего набора. А утилита будет проходить по колонкам каждой таблицы, смотреть признак индексировния колонки через ColumnInfo(), затем удалять имеющийся индекс и создавать его снова, в текущей версии MapInfo, через Drop Index и Create Index
Re: Открытие таблиц старых версий и индексация
Добавлено: 30 апр 2010, 00:40
Boris
Вообще-то это сообщение выдается всегда, когда есть индексированные текстовые поля, при смене версии или языка Mapinfo. Т.е. в последних версиях практически всегда, а не только при переходе к 9 или 10. В 10 опять сменились принципы индексации, так что и таблицы 9.х не гарантированы от этого.
Кроме выше приведенного совета такое поведение хорошо лечиться упаковкой таблицы.
Re: Открытие таблиц старых версий и индексация
Добавлено: 30 апр 2010, 07:00
reasonat
сообщение-то выдается, просто неудобно каждый раз по 50 нажимать "ok" на эти сообщения, когда открывается много таблиц. Поэтому тянет что-то сделать на MapBasic. Я просто жму на клавиатуре "enter" не отрывая пальца, пока все таблицы не откроются. Тоже выход )
А упаковывать, зачастую, опасно - когда открывается рабочий набор с растащенными подписями, упаковка чревата порчей настроенной картинки
Re: Открытие таблиц старых версий и индексация
Добавлено: 30 апр 2010, 14:47
Qwe1
Именно эти сообщения и нужно убрать, чтобы пользователь не держала зажатый "Enter". Утилиты и аналогичные средства есть, но они подразумевают, что в начале нужно прогнать ими слои, а потом без сообщений уже открывать. Для пользователя не всегда это удобно.
Re: Открытие таблиц старых версий и индексация
Добавлено: 30 апр 2010, 21:01
Boris
так давайте вернемся к задаче. раз утилиты есть, то в чем собственно тогда состоит задача? сколько раз в день таблицы открываются на машинах с разной кодировкой таблиц?
Re: Открытие таблиц старых версий и индексация
Добавлено: 04 май 2010, 13:47
reasonat
Ну вот у меня есть любимая версия, 8.5. Под ней работает много необходимого, что не работает в других. А у заказчика принимается только в 9.0, либо у организации, поставляющей исходный материал, только 7.8. Вот и гоняем туда-сюда материалы. Плюс собственные огромные рабочие наборы двух-трехлетней давности. Причем открывают их в разных отделах разные пользователи в разных версиях, и даже не пересохранить несколько папок в одну новую версию, потому что кому-то в старой надо. Такая вот бывает ситуация.. Но именно в таком случае никаких утилит не нужно, лучше жать Enter. А если надо все же пересохранить с новыми индексами, то проще раз открыть нужные таблицы и запустить утилиту. И дальше не думать.
Re: Открытие таблиц старых версий и индексация
Добавлено: 05 май 2010, 02:27
Boris
Не в плане ответа на исходный вопрос, а в плане совета из личного опыта: нажимать Enter при этих и других сообщениях в MI - небезопасно. "Пробел" действует так же, но попав в ненужное место может только затереть несколько символов, а Enter может привести к более разрушительным действиям.
Re: Открытие таблиц старых версий и индексация
Добавлено: 06 май 2010, 11:16
reasonat
спасибо

Re: Открытие таблиц старых версий и индексация
Добавлено: 06 май 2010, 16:08
Kharlamov
Qwe1 писал(а):При открытии таблиц, созданных в версиях 8 и ниже, МапИнфо 9 (и 10) выдает сообщение, что файл индексов был создан для другого языка и предлагает переиндексировать таблицу. Можно ли перед открытием таблицы (средствами MapBasic) определять версию и как-то автоматически переиндексировать таблицы?
Упакуй таблицы и все.
Re: Открытие таблиц старых версий и индексация
Добавлено: 06 май 2010, 16:28
reasonat
Kharlamov писал(а):
Упакуй таблицы и все.
не универсальный способ
Re: Открытие таблиц старых версий и индексация
Добавлено: 06 май 2010, 16:42
Qwe1
Boris писал(а):<...> раз утилиты есть, то в чем собственно тогда состоит задача? <...>?
Дело в том, что утилита должна в любом случае открыть таблицу: при этом сообщение, естественно, выдается. Все равно надо нажимать много раз "Enter" (или пробел) - неудобства те же. Идея с открытием всех (или заданных) таблиц в папке ясна, но все равно нужно использовать "Open Table имя_слоя". Упаковка слоя мне не помогла.
Re: Открытие таблиц старых версий и индексация
Добавлено: 06 май 2010, 17:44
Boris
есть утилиты, которые экспортируют таблицы TAB в MIF или SHP. В том числе и идущий в комплекте Universal Translator. Сама MI в этом случае таблицы не открывает и не ругается. Обратный импорт создаст таблицы в той версии, в которой будет открыт.
---
Пришлите таблицу на пробу. У меня всегда упаковка срабатывала.
Re: Открытие таблиц старых версий и индексация
Добавлено: 19 июл 2011, 22:15
Boris
Только что пришлось самому столкнуться с массовой "руганью" на индексы в присланных со стороны таблицах. Пришлось написать скрипт на VBS ( Visual Basic Script - есть на всех Winows машинах). Скрипт надо запускать - из командной строки. Для работы по созданию удалению индекса требуется запущенная MapInfo, в которой НЕТ открытых таблиц, которые надо поправить. В идеале - просто пустая MapInfo.
Обрабатываются таблицы "родного" формата MapInfo, а так же в смешанном формате MapInfo-Access, когда атрибутика храниться в БД Accrss.
Порядок индексов сохраняется: т.е. если первое поле имело индекс 3, а второе - индекс 1, то этот порядок сохраниться и после воссоздания индексов.
Проверено на MapInfo 9.5.1.
Замечания и пожелания - приветствуются.