Таблица доступа, которая будет связываться с таблицей на SQL Server, обновляться при изменении данных доступа - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть база данных Access, которая связана с несколькими файлами Excel, а также подключена к Google Analytics.

Я создал Unison Query, чтобы объединить все файлы и таблицы в одну таблицу.

Мне нужно, чтобы эта таблица была доступна и могла обновляться несколькими другими пользователями, обычно через таблицу Excel PowerPivot. Я установил SQL-сервер Azure и сделал мастер экспорта, чтобы переместить данные, который работает, но я не могу обновить его новыми данными (что мне нужно делать ежедневно). Простое разделение базы данных доступа не сработает, так как не у всех файлов одинаковые структуры.

Как получить таблицу в Access для ссылки на SQL, чтобы при обновлении в Access таблица в SQL обновлялась?

1 Ответ

0 голосов
/ 05 сентября 2018

После экспорта таблицы вручную в Azure SQL Server просто свяжите эту таблицу с приложением MS Access, а затем выполните запросы действий вручную или автоматически с помощью кода для вашего ежедневного обновления.

  1. Таблица связанных SQL-серверов

    Это хорошо известная функция MSAccess.exe, способная подключаться практически к любому ODBC / OLEBD-совместимому источнику данных от Oracle и SQL Server до Quickbooks и Salesforce. Требования включают в себя:

    • Драйвер ODBC для SQL Server Azure или ранее созданный Имя источника данных (DSN)
    • Убедитесь, что подключенный пользователь имеет права на чтение / запись таблицы (назначается на сервере)
    • Обход мастера для начальной настройки (см. Параметр базы данных ODBC в разделе «Внешние данные»)


    enter image description here

  2. Запросы действий

    SQL (сохранить как сохраненный запрос MS Access, можно дважды щелкнуть объект для запуска вручную)

    Количество столбцов должно быть эквивалентно в предложениях INSERT и SELECT, и каждый соответствующий тип должен совпадать (не указывать автономные номера).

    INSERT INTO mySQLServerTable (Col1, Col2, Col3, ...)
    SELECT e.Col1, e.Col2, e.Col3, ...
    FROM myExcelTable AS e
    

    В качестве альтернативы, если вам нужно выполнить запрос UPDATE, требующий сопоставления столбцов между двумя источниками таблицы.

    UPDATE mySQLServerTable s
    INNER JOIN myExceltable e ON e.MatchColumn = s.MatchColumn
    SET s.Col1 = e.Col1, s.Col2 = e.Col2, s.Col3 = e.Col3, ...
    

    VBA (автоматический запуск хранимого запроса в MS Access)

    ' WARNS USER OF NUMEBR OF ROWS TO BE INSERTED/UPDATED
    DoCmd.OpenQuery "myActionQuery"
    
    ' DOES NOT WARN USER
    CurrentDb.Execute "myActionQuery", dbFailOnError
    

И наоборот, вы можете запустить запрос SQL Server, который вставляется в вашу таблицу из внешнего источника MS Access, используя OPENROWSET . Это предполагает, что база данных доступна из того места, где находится SQL Server.

INSERT INTO INSERT INTO mySQLServerTable (Col1, Col2, Col3, ...)
SELECT e.Col1, e.Col2, e.Col3, ... 
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
                'C:\path\to\myDatabase.accdb', 'admin', '', myExcelTable) AS e
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...