Доступ 2007 к загрузке файлов с сервера SQL? - PullRequest
0 голосов
/ 20 сентября 2010

У меня есть база данных Access 2007 с возможностью вложения. В настоящее время клиент может загружать файлы локально, но файлы не могут быть доступны в другом месте. Мне удалось выполнить аналогичную операцию при разработке в веб-системе, однако я не могу выполнить ее в базе данных Access 2007 и не уверен, возможно ли это вообще. По сути, система должна подключиться к SQL-серверу онлайн и загрузить файл, хотя база данных сама по себе не подключена. Буду благодарен за любые указатели!

1 Ответ

0 голосов
/ 05 октября 2010

Я сталкивался с этой ситуацией. Вот ваш выбор:

  1. Используйте поле Access access в общей ACCDB - не будет работать "онлайн" очень хорошо, но вы можете оставить ACCDB в вашей локальной сети и сделать его отдельной внутренней ACCDB, общей для всех. В вашем сообщении не указано, являются ли ваши пользователи локальными или «онлайн», и означает ли «онлайн» сеть.

  2. Используйте поля VarChar (Max) (иначе BLOB) в SQL-Server для хранения вложений. Но вы не можете легко заполнить их из Access. Предполагая, что вы управляете сервером, на котором работает SQL-сервер, вы можете использовать ADO в Access для загрузки VarChar (Max) с помощью команды bulkinsert T-SQL. Это работает очень хорошо, и это легко.

  3. Создать веб-страницу загрузки. Используйте автоматизацию iExplorer (т. Е. Создайте объект iExplorer) в VBA, чтобы перейти на эту страницу, заполнить ее и нажать кнопку загрузки. В целях безопасности нельзя использовать автоматизацию для заполнения элемента управления загрузкой файлов, но вы можете использовать sendkeys. Это не работает идеально - иногда вам нужно повторить процесс один или два раза, но он работает довольно хорошо, если он вызывается пользователем, который может проверить его работу. Вот что я сделал - самое простое решение.

  4. Лучшим решением, вероятно, является создание веб-службы, использующей WCF для обработки загрузки. Существует множество сообщений о том, как кодировать и декодировать байтовые массивы для хранения файлов в формате VarChar (Max). Это работает очень хорошо. К сожалению, Access не может напрямую использовать веб-сервисы, насколько я могу судить, поэтому вам придется написать небольшую программу vb.net для этого и вызвать ее из Access.

  5. Вы можете хранить файлы / вложения вне SQL / Server - только на сервере и хранить только ссылки / URL-адреса для этих файлов в Access. Вы можете сделать каждый из них запускаемым. Это легко, но сложнее контролировать безопасность.

  6. Вы можете использовать Sharepoint для хранения / обмена вложениями. Это может работать довольно хорошо в зависимости от размера вложений и вашего подключения. Он создан для поддержки этого.

Доступ допускает несколько вложений в одной записи. SQL / Server не поддерживает это. Таким образом, если вы можете разделить ACCDB на внешний интерфейс только для программ и внутренний ACCDB, который будет доступен пользователям для хранения данных / вложений, это, безусловно, самый простой ответ.

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