Взаимодействие Access и MapInfo
-
- Новоприбывший
- Сообщения: 13
- Зарегистрирован: 29 мар 2009, 15:17
- Репутация: 0
Взаимодействие Access и MapInfo
Здравствуйте! Задача такая:
Таблица база данных Access заполняется с помощью формы. Эту таблицу геокодировали с картой в MapInfo. Т.о. при щелчке по объекту карты появляется информация из таблицы Access. Можно ли сделать так, что бы при щелчке по объекту карты MapInfo появлялась форма Access, в которой заполненна информацией о данном объекте?
Таблица база данных Access заполняется с помощью формы. Эту таблицу геокодировали с картой в MapInfo. Т.о. при щелчке по объекту карты появляется информация из таблицы Access. Можно ли сделать так, что бы при щелчке по объекту карты MapInfo появлялась форма Access, в которой заполненна информацией о данном объекте?
-
- Интересующийся
- Сообщения: 22
- Зарегистрирован: 13 мар 2009, 10:06
- Репутация: 0
Re: Взаимодействие Access и MapInfo
hotlink может поможет...
он привязывает к обьекту МапИнфо файлы и действует как гиперссылка
он привязывает к обьекту МапИнфо файлы и действует как гиперссылка
-
- Новоприбывший
- Сообщения: 13
- Зарегистрирован: 29 мар 2009, 15:17
- Репутация: 0
Re: Взаимодействие Access и MapInfo
Что такое "hotlink"?
Как им пользоваться? Напишите поподробнее, пожалуйста.

-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: Взаимодействие Access и MapInfo
Это крайне не благодарное занятие пересказывать своими словами достаточно нетривиальный по "выкручиваемости в процессе операций" раздел документации по продукту.
Лучше, чем описание в документации может быть только двух-трех часовое ковыряние в обоих продуктах.
Для начала скажите - вы умеете вызывать форму Access хоть из чего бы то нибыло, желательно стандартными средствами, на пример ссылкой на бочем столе. И почему именно форму Access, есть куча других продуктов - не хуже, которые умеют рисовать формы, линкованные к базам данных Access?
Лучше, чем описание в документации может быть только двух-трех часовое ковыряние в обоих продуктах.
Для начала скажите - вы умеете вызывать форму Access хоть из чего бы то нибыло, желательно стандартными средствами, на пример ссылкой на бочем столе. И почему именно форму Access, есть куча других продуктов - не хуже, которые умеют рисовать формы, линкованные к базам данных Access?
-
- Новоприбывший
- Сообщения: 13
- Зарегистрирован: 29 мар 2009, 15:17
- Репутация: 0
Re: Взаимодействие Access и MapInfo
Ну, возможно, Вы легко разбираетесь в программах, но для меня это сложно. Если бы я знала, как это сделать, я бы не обращалась. Я только учусь и по образованию я не связана с компьютерами, а скорее наоборот...
Я умею вызывать форму только с помощью VBA, работая в Access.
К форме Access обращаемся, т.к. по ходу работы с объектами карты в таблицу Access через форму добавляются данные. К тому же форма стандартная и она готова к использованию. Осталось только связать готовую карту и готовую форму. А я думала, что модуль этой связки не будет большой проблемой для профессиональных программистов, обсуждающих на вопросы форума
Я умею вызывать форму только с помощью VBA, работая в Access.
К форме Access обращаемся, т.к. по ходу работы с объектами карты в таблицу Access через форму добавляются данные. К тому же форма стандартная и она готова к использованию. Осталось только связать готовую карту и готовую форму. А я думала, что модуль этой связки не будет большой проблемой для профессиональных программистов, обсуждающих на вопросы форума
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: Взаимодействие Access и MapInfo
Общий ответ - можно, но это требует программирования.
Для продолжения, ответьте, пожалуйста, на следующие вопросы:
1. Кто будет заниматься программированием для вас? Или необходим вариант исключающий программирование?
2. Как вы обычно открываете форму на НУЖНОЙ записи?
3. Версия вашей MapInfo?
4. Какая степень автоматизации вас устроит?
5. Степень владения программирование для Access?
6. Наличие документации по этим двум продуктам?
7. Наличие документации по MapBasic'у?
-----------
Самый тривиальный вариант:
1. вы выделяете сколько угодно записей (больше нуля)
2. нажимаете кнопку в панели
3. переходите к выполнению программы на MapBasic'е
4. если имеете на заднем фоне уже запущенный Access, получаете в нем запущенную форму с фиксированным именем
5. если атрибутивные данные храните в прилинкованном или том же Access файле, получаете форму, в которой установлен фильтр на ключевые поля, выбранных вами записей.
-----------
Самый менее тривиальный вариант, один из первых в ряду нетривиальных:
1. вы работаете только в Access
2. в Access вы создаете форму с OLE окном к OLE Server MapInfo
3. по нажатию кнопок мыши в этой Access форме на объекте из MapInfo окна вы открываете другую связанную форму
Для продолжения, ответьте, пожалуйста, на следующие вопросы:
1. Кто будет заниматься программированием для вас? Или необходим вариант исключающий программирование?
2. Как вы обычно открываете форму на НУЖНОЙ записи?
3. Версия вашей MapInfo?
4. Какая степень автоматизации вас устроит?
5. Степень владения программирование для Access?
6. Наличие документации по этим двум продуктам?
7. Наличие документации по MapBasic'у?
-----------
Самый тривиальный вариант:
1. вы выделяете сколько угодно записей (больше нуля)
2. нажимаете кнопку в панели
3. переходите к выполнению программы на MapBasic'е
4. если имеете на заднем фоне уже запущенный Access, получаете в нем запущенную форму с фиксированным именем
5. если атрибутивные данные храните в прилинкованном или том же Access файле, получаете форму, в которой установлен фильтр на ключевые поля, выбранных вами записей.
-----------
Самый менее тривиальный вариант, один из первых в ряду нетривиальных:
1. вы работаете только в Access
2. в Access вы создаете форму с OLE окном к OLE Server MapInfo
3. по нажатию кнопок мыши в этой Access форме на объекте из MapInfo окна вы открываете другую связанную форму
-
- Новоприбывший
- Сообщения: 13
- Зарегистрирован: 29 мар 2009, 15:17
- Репутация: 0
Re: Взаимодействие Access и MapInfo
1. Проблема в том, что пограммирование на меня повесили, т.е. им я буду заниматься. И оно обязятельно. Я в этом не вижу ничего ужасного, т.к. год назад писала программу на VBA в Ecxel, в Access, немного Java, но это не прогодится. Я только не выходила из одной программы вдругую
2. Сейчас мы этого не делаем, там в таблице больше 700 записей, поэтому и надо систематизировать. В прошлом поекте для этого сосавлялся ряд последовательны форм, который пользователь заполняет и программа, учитывая отмеченные данные, составляет таблицу необходимых записей.
3. 7,5
4. максимум, чтоб даже не знающий дела пользователь щелкнул по озеру (объекты-озера) и получил всю информацию о нем в форме, а не в таблице, которая появляется при гекодировании
5. Составляла и программировала формы из 2 п. VBA в Ecxel: создала лист, в нем пользователь отмечает группы платильщиков, и др. данные о них, на другом листе появляется квитанции для каждого пользоватля из группы.
6. Достаточно и по Access и по MapInfo, только ни где не написано о привязке форм к MapInfo, только геокодирование, взаимодействие с СУБД и т.д.
7. справочник пользователя MapBasic 7.8 и MapBasic 9,5 (англ)
--------------------------------
Тривиальный вариант подходит больше. А возможно, чтоб до этого Access был закрыт, а открывался при нажатии на озеро (объект MapInfo) (а вообще идиально чтоб только форма откывалась)?
2. Сейчас мы этого не делаем, там в таблице больше 700 записей, поэтому и надо систематизировать. В прошлом поекте для этого сосавлялся ряд последовательны форм, который пользователь заполняет и программа, учитывая отмеченные данные, составляет таблицу необходимых записей.
3. 7,5
4. максимум, чтоб даже не знающий дела пользователь щелкнул по озеру (объекты-озера) и получил всю информацию о нем в форме, а не в таблице, которая появляется при гекодировании
5. Составляла и программировала формы из 2 п. VBA в Ecxel: создала лист, в нем пользователь отмечает группы платильщиков, и др. данные о них, на другом листе появляется квитанции для каждого пользоватля из группы.
6. Достаточно и по Access и по MapInfo, только ни где не написано о привязке форм к MapInfo, только геокодирование, взаимодействие с СУБД и т.д.
7. справочник пользователя MapBasic 7.8 и MapBasic 9,5 (англ)
--------------------------------
Тривиальный вариант подходит больше. А возможно, чтоб до этого Access был закрыт, а открывался при нажатии на озеро (объект MapInfo) (а вообще идиально чтоб только форма откывалась)?
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: Взаимодействие Access и MapInfo
Что бы не растекаться мысль по древу, раз вы сказали, что вас устраивает тривиальный вариант:
Для MS Access
1. надо освоить:
а) http://office.microsoft.com/ru-ru/acces ... 0043151049 и/или support.microsoft.com/kb/209207/ru
б) прочитать раздел в руководстве или справочнике по Access, как создавать БД Access, которые не выводятся на экран. Основное окно MS Access скрывается какой-то командой в VBA, так сразу и не вспомню как называется.
в) создать макрос, который запустит программу VBA, так спрячет все, что не нужно и откроет форму, которая при закрытии закроет и Access, и не забудет передать фокус назад в MapInfo (вот это будет засада и еще какая, MapInfo - предельно непредсказуемо идиотски на это реагирует).
г) Научиться вызывать и обрабатывать строку, выдаваемую функцией VBA Access - Command() - это возможные параметры.
д) Полученные параметры преобразовывать в строку, которая может быть использована для задания фильтра для вызываемой формы.
е) В случае универсальности формы для нескольких таблиц или нескольких прилинкованных БД, надо освоить изменение "источника данных" [Recordset]
2. Принять решение - как будут передаваться номера записей из MapInfo - списком в параметре или файлом. От этого зависит, что именно будет передаваться через параметр /cmd - для передачи номеров или пути к временному файлу с номерами строк.
3. Создать пустую БД Access, которая содержит только код, формы, а таблицы берет из прилинкованной БД. Это позволит избежать конфликта Access - MapInfo, при изменении таблиц или форм
Для MapBasic'a
а) освоить SelectionInfo и TableInfo
б) научитесь создавать кнопку в панели меню для запущенного MapBasic приложения. Это полностью можно содрать из руководства по любому MapBasic'у
в) проверьте как выполняется команда MapBasic Run Program [program_spec]. Обычно работает хорошо. И запускается, и выполняется, и параметры передаются.
г) Для выбранных записей получать номер поля rowID и название таблицы из которой они взяты
Для MapInfo:
а) Опрашиваемые таблицы MI лучше сохранить в формат MI+Access - тогда макросы и VBA в MS Access - будут обращаться к данным самой БД
б) вставить разработанную программу на MB в автозапуск MI или стандартные программы меню Tools. Только тогда необходимая кнопка будет доступна при каждом запуске MI. Иначе эту программу и кнопку придется вызывать в ручную.
------------------
Технология многократно апробирована и использована. По крайней мере до MS Office 2007. Как ведет себя этот зверь - предсказать сложно, но в нем по слухам опять появился Access RunTime, который позволяет создавать приложения-формы даже при отсутствии Access на машине и показывать их в обход самого Access.
------------------
Если получится, как вам хочется, то не забывайте, что некоторым пользователям можно давать БД в режиме ReadOnly, что бы они вам основные данные не попортили. Улучшений основной идеи - может быть море.
И гарантирую, что если получится, то следующим шагом захотите из формы вызывать гео-объект в окне карты MapInfo. Но это уже совсем другая история....
Для MS Access
1. надо освоить:
а) http://office.microsoft.com/ru-ru/acces ... 0043151049 и/или support.microsoft.com/kb/209207/ru
б) прочитать раздел в руководстве или справочнике по Access, как создавать БД Access, которые не выводятся на экран. Основное окно MS Access скрывается какой-то командой в VBA, так сразу и не вспомню как называется.
в) создать макрос, который запустит программу VBA, так спрячет все, что не нужно и откроет форму, которая при закрытии закроет и Access, и не забудет передать фокус назад в MapInfo (вот это будет засада и еще какая, MapInfo - предельно непредсказуемо идиотски на это реагирует).
г) Научиться вызывать и обрабатывать строку, выдаваемую функцией VBA Access - Command() - это возможные параметры.
д) Полученные параметры преобразовывать в строку, которая может быть использована для задания фильтра для вызываемой формы.
е) В случае универсальности формы для нескольких таблиц или нескольких прилинкованных БД, надо освоить изменение "источника данных" [Recordset]
2. Принять решение - как будут передаваться номера записей из MapInfo - списком в параметре или файлом. От этого зависит, что именно будет передаваться через параметр /cmd - для передачи номеров или пути к временному файлу с номерами строк.
3. Создать пустую БД Access, которая содержит только код, формы, а таблицы берет из прилинкованной БД. Это позволит избежать конфликта Access - MapInfo, при изменении таблиц или форм
Для MapBasic'a
а) освоить SelectionInfo и TableInfo
б) научитесь создавать кнопку в панели меню для запущенного MapBasic приложения. Это полностью можно содрать из руководства по любому MapBasic'у
в) проверьте как выполняется команда MapBasic Run Program [program_spec]. Обычно работает хорошо. И запускается, и выполняется, и параметры передаются.
г) Для выбранных записей получать номер поля rowID и название таблицы из которой они взяты
Для MapInfo:
а) Опрашиваемые таблицы MI лучше сохранить в формат MI+Access - тогда макросы и VBA в MS Access - будут обращаться к данным самой БД
б) вставить разработанную программу на MB в автозапуск MI или стандартные программы меню Tools. Только тогда необходимая кнопка будет доступна при каждом запуске MI. Иначе эту программу и кнопку придется вызывать в ручную.
------------------
Технология многократно апробирована и использована. По крайней мере до MS Office 2007. Как ведет себя этот зверь - предсказать сложно, но в нем по слухам опять появился Access RunTime, который позволяет создавать приложения-формы даже при отсутствии Access на машине и показывать их в обход самого Access.
------------------
Если получится, как вам хочется, то не забывайте, что некоторым пользователям можно давать БД в режиме ReadOnly, что бы они вам основные данные не попортили. Улучшений основной идеи - может быть море.
И гарантирую, что если получится, то следующим шагом захотите из формы вызывать гео-объект в окне карты MapInfo. Но это уже совсем другая история....

-
- Новоприбывший
- Сообщения: 13
- Зарегистрирован: 29 мар 2009, 15:17
- Репутация: 0
Re: Взаимодействие Access и MapInfo
Спасибо за ответ. Как будет продвигаться дело я всем обязательно расскажу!
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: Взаимодействие Access и MapInfo
Успехов. Будем ждать отчета. 

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