Могу ли я создать собственный API MS-Access для взаимодействия с другими приложениями?

Я искал MSDN и несколько других форумов Access для создания пользовательских API доступа, но не видел ничего связанного. Это возможно? Можно ли создавать пользовательские ODBC для Access?


person Frank R.    schedule 16.02.2014    source источник
comment
Является ли этот вопрос просто еще одним более общим повторением вашего другого недавнего вопроса здесь?   -  person Gord Thompson    schedule 16.02.2014
comment
Не совсем, так как он ориентирован на выяснение вообще, какие возможности есть у Access для интеграции с какими-либо приложениями, сервисами и т.д.   -  person Frank R.    schedule 16.02.2014
comment
Наверняка вы видели упоминания о механизмах управления базами данных Access через ODBC и OLEDB, а также об управлении самим приложением Access с помощью автоматизации (объект Access.Application). Если вы имеете в виду какой-то конкретный случай использования, который не охвачен этими параметрами, отредактируйте свой вопрос, чтобы уточнить. Точно так же объясните, пожалуйста, что вы подразумеваете под пользовательским ODBC... для доступа.   -  person Gord Thompson    schedule 16.02.2014
comment
Что касается возможностей API в Access 2013, я увидел только Выберите правильный API с Sharepoint 2013 и Win32.   -  person Frank R.    schedule 17.02.2014


Ответы (1)


Хм, это сбивает с толку, поскольку неясно, говорите ли вы о создании интерфейсов с доступом к ДРУГИМ системам, или вы говорите о создании интерфейса доступа, который могут использовать другие программы?

ODBC — это «драйвер», предоставляемый поставщиками для использования их систем баз данных SQL, и это то, что вы не создаете в Access, FoxPro или в VB, если уж на то пошло. На самом деле я не могу придумать ни одного ориентированного на данные инструмента, который позволил бы вам создать собственный драйвер ODBC. Так что это предполагает некоторую путаницу здесь.

Расширение доступа.

Доступ в течение последних 20 лет имел возможность использовать ActiveX (объекты COM). Таким образом, то, как можно расширить возможности Access для взаимодействия с другим программным обеспечением и системами, ОСТАЕТСЯ выбором COM-объекта. Так, например, можно использовать библиотеку MSXML из Access (объект COM), и это позволяет использовать веб-страницы и указывать XML, который открывает дверь для использования веб-служб. На самом деле я использовал MSXML, например, для использования веб-служб SharePoint.

Однако для использования веб-служб обычно гораздо лучше создавать COM-объект с инструментами, которые могут «уже» использовать веб-службы. Таким образом, можно использовать vb.net для создания COM-объекта, а ЗАТЕМ ссылаться на этот COM-объект из MS Access (так же, как мы устанавливаем ссылку на Outlook или Word из Access, такие COM-объекты не ограничиваются приобретенными вами приложениями, но вы наиболее свободно создавать свои собственные COM-объекты VB6, vb.net, C # или что-то еще).

Access НЕ имеет возможности создавать ActiveX (ком-объекты), но он, безусловно, может использовать те, которые вы создаете на других языках.

ПРИМЕЧАНИЕ. Здесь я использую взаимозаменяемость терминов ActiveX и «COM-объект» — это одна и та же базовая технология.

Итак, если вы когда-либо использовали настольный компьютер и какой-либо инструмент разработки Windows, вы обнаружите, что объекты COM являются выбором и ОСТАЮТСЯ выбором того, как расширить доступ или даже VB6. С управляемым кодом все несколько меняется, но vb.net вполне может создавать COM-объекты, которые хорошо работают с Access.

Хотя Access не может в качестве инструмента создавать объекты ActiveX (com), вы, безусловно, можете скомпилировать код Access в accDE и ЗАТЕМ ссылаться на этот код библиотеки из инструментов VBA->references. Таким образом, вы можете расширять и совместно использовать код VBA в одной библиотеке со «многими» приложениями, но это не объект com.

Таким образом, как и в прошлом для расширения настольных программ, вы можете создавать такие расширения как COM-объекты и использовать их из Access — это стандартный подход к расширению Access для использования веб-сервисов.

Access нельзя использовать для создания отдельных COM-объектов в качестве частей пользовательского интерфейса, но СТАНДАРТНЫЕ средства в нашей отрасли для создания COM-объектов могут использоваться Access.

И последнее, но не менее важное: любое приложение, которое вы создаете в Access, МОЖЕТ БЫТЬ ПОТРЕБЛЕНО как COM-объект другими приложениями. Таким образом, хотя вы не можете создавать отдельные COM-объекты, ваше приложение ПОЛНОСТЬЮ на самом деле является COM-объектом.

Итак, если вы создаете приложение в Access, а затем используете Excel, VB6, FoxPro, другое приложение Access, C++, C# или vb.net? Они ВСЕ МОГУТ потреблять ваше приложение как ком-объект, просто создавая экземпляр Access и ваше приложение.

Таким образом, любой инструмент разработки, поддерживающий «com», может использовать ваше приложение как объект com. Таким образом, любое стандартное средство разработки, статья или система за последние 20 лет могут использовать ваше приложение Access как COM-объект.

Таким образом, хотя Access не может создавать отдельные COM-объекты, результирующие приложения Access фактически являются законными COM-объектами, и ЛЮБОЕ приложение, поддерживающее COM, может создать экземпляр вашего приложения. Это означает, что ваш код, подпрограммы VBA и т. д. можно вызывать из основного приложения, которое создало экземпляр вашего приложения. Таким образом, теоретически любой код VBA, представленный как «общедоступный код», может быть вызван из этой другой программы.

Таким образом, «интерфейсы», доступные для Access, остаются ТАКИМИ ЖЕ, что и почти 20-летняя история БОЛЬШИНСТВА настольных программ, работающих в Windows — этот интерфейс — COM.

Итак, у вас есть 20 лет истории и 20 лет примеров в Интернете, с которыми можно повеселиться — любой пример, показывающий, как создавать и использовать com-объект, должен работать для вашего приложения доступа.

person Albert D. Kallal    schedule 16.02.2014
comment
Прошло много времени с тех пор, как я получил известие от вас. Пожалуйста, пришлите мне свой контактный адрес электронной почты о чем-то еще. Что касается моего вопроса здесь, способность Access интегрироваться/общаться с другими приложениями через API, помимо ODBC и OLEDB, поскольку не каждое другое приложение имеет это! Примером является другой вопрос. Что я использую на стороне Access 2013/SQL-Server для извлечения и хранения содержимого из этого раскрывающегося списка? - person Frank R.; 17.02.2014
comment
Вы просто расширите доступ, используя COM для использования этой веб-службы. Почему бы просто не синхронизировать локальную папку, а затем использовать стандартные команды DIR и файлов, которые существуют в VBA, и тогда вызовы веб-службы не требуются? В Dropbox по какой-то странной причине НЕ открыта веб-служба WSDL. Однако, несмотря на то, что ни один веб-сервис не отображается, они предоставляют функции через HTTP. Таким образом, вы можете легко написать свои собственные операторы get и put: из Access (просто используйте библиотеку MSXML, так как она поддерживает get/puts). Таким образом, два решения, которые я предложил здесь для использования веб-сервисов в Access, на 100% применимы к использованию раскрывающегося списка. - person Albert D. Kallal; 18.02.2014
comment
В Box API я заметил Windows API и SDK для разработки пользовательских API. Но мой пользователь больше заинтересован в интеграции своего приложения Access 2013 с клиентским приложением для управления делами, также разработанным с помощью Access 2007. Итак, лучше ли использовать ODBC с Access to Access или COM все же лучше? Я сказал своим пользователям, что лучше всего автоматизировать ящик для них, а они для своих клиентов, чтобы им не приходилось вручную перемещать контент. - person Frank R.; 18.02.2014
comment
можешь присоединиться ко мне в чате? Я пытался связаться с вами по поводу моего управления ломбардом. Приложение. - person Frank R.; 18.02.2014
comment
Зачем возиться с веб-API, когда все, что вам нужно/хотите, это обрабатывать локальные файлы на вашем компьютере? В VBA есть все команды для захвата и извлечения файлов из локальной папки. Так почему бы просто не синхронизироваться с локальной папкой, а затем использовать обычный VBA Джейн для обработки этих входящих файлов с помощью Access. В настоящее время я использую Dropbox с Access, и таким образом мы обрабатываем 100 входящих файлов PDF в день. Поэтому синхронизируйте с локальной папкой, а затем просто используйте VBA — веб-API не требуется. Я не вижу особых причин для использования веб-API, но использование MSXML с Access, вероятно, является лучшим способом, если вы хотите использовать веб-API. - person Albert D. Kallal; 18.02.2014
comment
И нет, ODBC не поможет, поскольку у Dropbox нет соединения или интерфейса ODBC. Итак, как уже отмечалось, вам нужно использовать что-то, что позволяет вам использовать данные веб-сайта - библиотека MSXML является одним из таких объектов com, если по какой-то причине синхронизация с локальной папкой и простое использование собственных команд VBA для извлечения и обработки файлов в этой папке будет недостаточно. - person Albert D. Kallal; 18.02.2014
comment
В почтовом ящике есть одна папка, в которую попадают все документы в формате PDF для наших ~120 клиентов. Затем мы вручную распределяем эти документы по примерно 120 папкам в нашей системе, отправляем уведомления по электронной почте нашим клиентам о том, что у них появились новые документы в их папке, они входят в систему и извлекают документы из своей папки. Итак, как мне автоматизировать это с помощью VBA, чтобы правильно распределить документы в соответствующие папки cust в нашей системе? Тот же вопрос относится к пересылке документов в приложение Access каждого клиента. - person Frank R.; 18.02.2014
comment
Если вы просто синхронизируете и получаете документ или, в качестве альтернативы, используете веб-службу для извлечения документа, то в этот момент у вас есть документ плана Джейн на локальном диске, который Access может обработать. Таким образом, синхронизация или веб-служба не обязательно означают, что у вас есть информация о клиенте, прикрепленная к этому документу. Вам ДЕЙСТВИТЕЛЬНО лучше проверить, предоставляет ли веб-API эту информацию, поскольку она не задана. Если у вас нет прикрепленной информации о клиенте, когда вы получаете этот документ, автоматическая маршрутизация невозможна. Вы должны создать отдельные входящие папки для каждого клиента или использовать соглашение об именах файлов. - person Albert D. Kallal; 19.02.2014