Связь между двумя приложениями MS Access? - PullRequest
1 голос
/ 24 февраля 2012

Я ищу решение для эффективной связи между двумя работающими приложениями MS Access.

Подходы, которые я пробовал до сих пор, - это использовать общую связанную таблицу и использовать службу MSMQ для связи. Оба подхода работают, но нет способа «протолкнуть» данные или команду из одного приложения в другое, и поскольку MS Access не поддерживает многопоточное выполнение кода VBA, очень сложно реализовать опрос без снижения производительности.

В то же время VBA поддерживает оператор addressof (начиная с версии 2000), что означает, что мы также можем теоретически реализовать функции обратного вызова в VBA и MS Access. Но я никогда не видел ни одного примера того, как это можно использовать для межпроцессного взаимодействия, и был бы признателен за любой минимальный пример того, как я могу отправлять строку из одного приложения MS Access в другое без постоянного мониторинга общей таблицы.

Ответы [ 2 ]

1 голос
/ 24 февраля 2012

Вы можете использовать GetObject() для возврата объекта Access.Application из другого запущенного БД.С объектом приложения у вас есть доступ практически ко всему, что вам может понадобиться.Вот надуманный пример открытия формы (но вы можете сделать множество других вещей с объектом Application):

Sub TestInterop()
Const mdbPath As String = "C:\OtherApp.mdb"
Dim OtherApp As Access.Application

    Set OtherApp = GetObject(mdbPath)
    OtherApp.Visible = True
    OtherApp.DoCmd.OpenForm "Accounts"
End Sub

Если программа еще не запущена, вызов GetObject() начнетсяприложение (вам нужно быть осторожным, если у вас установлено несколько версий Access, так как во время выполнения сложно определить, какая версия на самом деле откроет .mdb).Однако, если GetObject() необходимо запустить приложение, оно сделает это с видимостью, установленной в False, поэтому мы явно установим для нее значение True.Если приложение уже запущено, установка его видимости в True не будет иметь никакого эффекта.

0 голосов
/ 24 февраля 2012

Считаете ли вы это дикой идеей, но можно ли поместить все ваши таблицы в sql express и / или sql ce и сделать их похожими на интерфейс этих таблиц?

...