Взаимодействие Access и MapInfo

MapInfo, MapBasic
Ответить
anickalex
Новоприбывший
Сообщения: 13
Зарегистрирован: 29 мар 2009, 15:17
Репутация: 0

Взаимодействие Access и MapInfo

Сообщение anickalex » 27 апр 2009, 18:42

Здравствуйте! Задача такая:
Таблица база данных Access заполняется с помощью формы. Эту таблицу геокодировали с картой в MapInfo. Т.о. при щелчке по объекту карты появляется информация из таблицы Access. Можно ли сделать так, что бы при щелчке по объекту карты MapInfo появлялась форма Access, в которой заполненна информацией о данном объекте?

fati
Интересующийся
Сообщения: 22
Зарегистрирован: 13 мар 2009, 10:06
Репутация: 0

Re: Взаимодействие Access и MapInfo

Сообщение fati » 28 апр 2009, 11:43

hotlink может поможет...
он привязывает к обьекту МапИнфо файлы и действует как гиперссылка

anickalex
Новоприбывший
Сообщения: 13
Зарегистрирован: 29 мар 2009, 15:17
Репутация: 0

Re: Взаимодействие Access и MapInfo

Сообщение anickalex » 28 апр 2009, 14:04

Что такое "hotlink"? :oops: Как им пользоваться? Напишите поподробнее, пожалуйста.

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Взаимодействие Access и MapInfo

Сообщение Boris » 30 апр 2009, 03:37

Это крайне не благодарное занятие пересказывать своими словами достаточно нетривиальный по "выкручиваемости в процессе операций" раздел документации по продукту.
Лучше, чем описание в документации может быть только двух-трех часовое ковыряние в обоих продуктах.
Для начала скажите - вы умеете вызывать форму Access хоть из чего бы то нибыло, желательно стандартными средствами, на пример ссылкой на бочем столе. И почему именно форму Access, есть куча других продуктов - не хуже, которые умеют рисовать формы, линкованные к базам данных Access?

anickalex
Новоприбывший
Сообщения: 13
Зарегистрирован: 29 мар 2009, 15:17
Репутация: 0

Re: Взаимодействие Access и MapInfo

Сообщение anickalex » 01 май 2009, 06:50

Ну, возможно, Вы легко разбираетесь в программах, но для меня это сложно. Если бы я знала, как это сделать, я бы не обращалась. Я только учусь и по образованию я не связана с компьютерами, а скорее наоборот...
Я умею вызывать форму только с помощью VBA, работая в Access.
К форме Access обращаемся, т.к. по ходу работы с объектами карты в таблицу Access через форму добавляются данные. К тому же форма стандартная и она готова к использованию. Осталось только связать готовую карту и готовую форму. А я думала, что модуль этой связки не будет большой проблемой для профессиональных программистов, обсуждающих на вопросы форума

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Взаимодействие Access и MapInfo

Сообщение Boris » 02 май 2009, 02:20

Общий ответ - можно, но это требует программирования.
Для продолжения, ответьте, пожалуйста, на следующие вопросы:
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 окна вы открываете другую связанную форму

anickalex
Новоприбывший
Сообщения: 13
Зарегистрирован: 29 мар 2009, 15:17
Репутация: 0

Re: Взаимодействие Access и MapInfo

Сообщение anickalex » 02 май 2009, 09:03

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) (а вообще идиально чтоб только форма откывалась)?

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Взаимодействие Access и MapInfo

Сообщение Boris » 03 май 2009, 03:00

Что бы не растекаться мысль по древу, раз вы сказали, что вас устраивает тривиальный вариант:
Для 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. Но это уже совсем другая история.... :mrgreen:

anickalex
Новоприбывший
Сообщения: 13
Зарегистрирован: 29 мар 2009, 15:17
Репутация: 0

Re: Взаимодействие Access и MapInfo

Сообщение anickalex » 03 май 2009, 07:46

Спасибо за ответ. Как будет продвигаться дело я всем обязательно расскажу!

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Взаимодействие Access и MapInfo

Сообщение Boris » 03 май 2009, 15:35

Успехов. Будем ждать отчета. :D

Ответить

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

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

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