В WPF Core App происходит сбой при записи данных в Access DB из-за автоматического входа в Office 365 - PullRequest
0 голосов
/ 17 марта 2020

В моем C# основном приложении WPF, используя OLEDBConnection, я могу читать данные из моей базы данных Access без подключения к той же сети, в которой находится мой сайт SharePoint. Моя цель - записать данные в базу данных Access, когда она не подключена к сети, а затем выполнить синхронизацию на более позднем этапе, когда я подключен к сети. Ниже приведено исключение AccessViolationException, вызванное попыткой подключения Office 365. WPf Access error

Проблема не в соединении OLEDBC. Я могу успешно читать из БД, и мой SQL успешно генерируется при обновлениях. Как я могу обойти эту функцию входа в систему Sharepoint automati c, чтобы записывать в мою базу данных доступа (но не синхронизироваться с главной базой данных)?

1 Ответ

1 голос
/ 18 марта 2020

Проблема здесь в том, что вы пытаетесь использовать oleDB для подключения к локальной базе данных Access, но эта база данных НЕ ТОЛЬКО локальная, но подключена и синхронизирована с SharePoint. И вход в систему по частям, syn c частей и автономный режим, он-лайн режим является ВСЕ ЧАСТЬ доступа, а не просто oleDB.

Другими словами: вам нужно написать свое приложение в Access, если вы хотите бесплатно загрузить все эти модные дополнительные части, такие как вход в SharePoint, и Access синхронизировать c с таблицами и всеми этими модными компонентами Access.

Если вы собираетесь использовать. net? Затем приложение. net должно обращаться к веб-службам SharePoint и использовать + для непосредственного использования списков SharePoint, а не для того, чтобы Access выполнял всю эту дополнительную работу. . net обладает всеми возможностями для попадания в SharePoint, и вызовы веб-службы могут быть REST, но я думаю, что большинство из них на самом деле SOAP. (но SOAP и WSDL для SharePoint хорошо документированы и поддерживаются).

Если вам нужен автономный режим, то какая система syn c онлайн? Затем вы должны свернуть свой собственный или использовать устаревшую среду syn c для. net (она устарела, но все еще может использоваться. И есть / есть поставщики syn c для SharePoint. Итак, вы можете по-прежнему есть локальный accDB (файл данных Access), но таблицы данных не будут связаны с SharePoint. Ваше. net приложение должно будет выполнить syn c.

Вы пытаетесь нажать таблиц через oleDB, но вы ТОГДА хотите, чтобы все эти входы в SharePoint и все эти ОЧЕНЬ СПОСОБЫ ОХЛАЖДЕНИЯ SharePoint syn c были встроены в Access (который НЕ является просто частью механизма базы данных и oleDB, а представляет собой биты и части, принадлежащие Access .).

Вы могли бы рассмотреть и попытаться автоматизировать ВЕСЬ работающую копию Access. Но опять же, вы больше не будете использовать oleDB, а на самом деле, точно так же, как вы можете создать экземпляр Word или Excel. или произнесите Outlook в. net? Таким образом, вы будете создавать полную работающую копию Access.

Имейте в виду, что Access как COM-объект не совсем корректен. Вы можете использовать опции off-line, on-line и syn c с хорошим набором чистых методов и свойств. Я знаю, что это так, поскольку даже из VBA вы не можете реально контролировать автономный режим по сравнению с онлайн-режимом. Что вы можете сделать, это «проверить» и «знать», если вы в данный момент отключены. Затем вы можете выполнить команду refre sh tables.

VBA:
DoCmd.RunCommand acCmdRefreshSharePointList

Тем не менее, приведенное выше попытается обновить sh, и если пользователь отключен, приложение останется в автономном режиме, но Скажу пользователю. Затем пользователю предоставляется эта опция:

enter image description here

Таким образом, они должны нажать на эту опцию. После повторного подключения они увидят следующее:

enter image description here

Итак, приведенный выше acCmdRefreshSharePointList действительно запускает полный refre sh (и syn c) данных ПОСЛЕ того, как пользователь нажал на пользовательский интерфейс выше. К сожалению, насколько мне известно, пользовательский интерфейс является ЕДИНСТВЕННЫМ способом для пользователя иметь дело с подключенным SharePoint или нет (вы можете тестировать / проверять в VBA, но вы не можете его контролировать). После повторного подключения пользователя, как указано выше, вы можете вызвать команду refre sh, как указано выше, но это не очень помогает, так как вы не можете переключать, управлять выключенным / включенным или включенным / line mode из VBA (и, следовательно, с помощью автоматизации COM-объектов из. net, вы тоже не можете).

Таким образом, мясо и детали, необходимые для управления входом в систему et c. является частью Access, а НЕ частью объектной модели oleDB.

Как уже отмечалось, даже модель Access не предоставляет возможности управления автономным / онлайн-режимом и онлайн-режимом. Но это лучше, чем то, что у вас есть. net.

Если вы используете. net? Как уже отмечалось, нажмите веб-службы SharePoint, чтобы взаимодействовать со списками, и, если вам нужен локальный автономный режим, вам придется развернуть собственную систему syn c или использовать. net syn c рамки.

...