AV <-> Access by DDE

0 голосов
спросил 01 Март, 02 от Гость (210,080 баллов) в категории Программные продукты Esri
для тех кто спрашивал. может пригодиться.
Итак, попытаюсь объяснить.

1. Для передачи данных (а точнее команды) из Акцесса в Арквью
   1.1. Арквью
     выполнить скрипт имеющий строчку  
     DDEServer.StartNamed("ArcMyName")
     лучше всего (или может даже обязательно - см. справку)
     это сделать в скрипте автозапуска (см. свойства проекта)
     после этого Арквью станет доступным как DDEServer с именем "ArcMyName"
   1.2. в Акцессе делаем програмку вроде такой

   sub DoItInArcView
    'инициализируем какнал DDE
    chan = DDEInitiate("ArcGeochim", "system")
    If err Then
      ' При возникновении ошибки сообщаем об этом
      MsgBox "Не удалось установить связь с ArcView!", vbOKOnly, "Ошибка!"
      'и выходим из програмки
      Exit Sub
    End If
    'связь установить удалось, посылаем команду
    DDEPoke chan, "string DoAccessCommand", Module1.WorkDir
    'что касается второго аргумента, то слово "string" в нем обяъательно
    '(см. Арквьюшный хэлп) а слово "DoAccessCommand" означает имя скрипта
    'который будет выполнен в Арквью (см. ниже)
    'ну а третий параметр - это некие данные, которые можено передать с
    'этой командой
   
    'теперь закрываем каналы DDE, ибо они ресурсоемки...
    DDETerminateAll
   end sub
      
   1.3. В Арквью, естественно должен существовать вышеупомянутый скрипт
        он может выглядеть примерно так

    '==================================================
        'получили команду от Акцесса, надо обработать

        aString = self
        'как вы поняли, параметр, который мы передали из Акцесса
        'получаем как self...
    'насколько я помню, параметр этот может быть только строковым
        'но, кажется может быть очень длинным, хотя лучше глянуть хэлп

    'делаем что-нибудь с полученной строкой
    msgbox.Info(aString,"Полученно из Акцесса")

        return ("ok")
    'вот это последнее, насколько я помню надо чтобы Акцесс (или
    'другая программа, связывавшаяся с Арквью) понял, что команда
        'принята успешно
    '==================================================


2. Из Арквью в Акцесс  
   2.1. в Арквью имеем скрипт
     
    '==================================================
     'создаем ДДЕ клиент
    aDDE = DDEClient.Make("MSAccess", "System")
        'причем как заставить Акцесс иметь другое имя сервера
    'я не разобрался :(
   
    'передадим Акцессу команду
    aDDE.Execute("[OpenForm myForm]")
    DDETerminate intChan1

    '
    aDDE.Close  
    '==================================================
   2.2. в Акцессе нужно только иметь форму myForm ну чтобы
        он (Акцесс) был запущен

===================================================================
все.... все?... вроде да... :)

Пожалуйста, войдите или зарегистрируйтесь для публикации ответа на этот вопрос.

Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...