Excel — лучший способ подключения к данным Access

Вот такая у нас ситуация:

а) У меня есть база данных/приложение Access, которое записывает значительный объем данных. Значимыми полями будут часы, количество продаж, количество неотвеченных звонков и т. д.

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

В настоящее время файл Excel имеет кнопку «Обновить», которая загружает новые данные. Данные загружаются в большую сводную таблицу. Затем основная «визуальная форма» использует функцию ВПР для получения результатов из формы на основе соответствующих часов.

Эта операция выполняется медленно (~10 секунд) и кажется излишней и неэффективной. Есть лучший способ это сделать?

Я готов пойти практически по любому маршруту - только нужно направление.

Заранее спасибо!

Обновление: я подтвердил (благодаря полезным комментариям/ответам), что проблема связана с самой загрузкой данных. удаление всех ВПР заняло всего одну-две секунды времени загрузки. Таким образом, вопросы заключаются в том, как я могу быстро и надежно получить данные, не затрачивая так много времени (в сводные таблицы загружается около 3000 записей).


person Craig Hooghiem    schedule 13.01.2011    source источник
comment
Есть ли причина, по которой вы работаете со стороны Excel, а не со стороны Access?   -  person Fionnuala    schedule 13.01.2011
comment
Отчет создается в Excel, поэтому его можно отправить различным членам команды, и они могут запустить файл и просмотреть результаты из удаленной базы данных.   -  person Craig Hooghiem    schedule 13.01.2011
comment
Я имею в виду, почему бы не использовать конец доступа, чтобы поместить данные в Excel? Это должно быть намного быстрее.   -  person Fionnuala    schedule 13.01.2011
comment
Возможно ли/лучше сделать это с различными файлами? Я думаю, что для нас было бы идеально иметь возможность отправлять файл каждому человеку, а не открывать его удаленно. Его также необходимо обновлять по запросу ИЛИ обновлять в режиме реального времени (последнее, если возможно, просто потрясающе).   -  person Craig Hooghiem    schedule 13.01.2011


Ответы (1)


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

Если это VLOOKUP, вы обычно можете ускорить это. (подсказки см. на http://www.decisionmodels.com/optspeede.htm)

Если это обновление сводной таблицы, то это зависит от того, какой метод вы используете для получения данных (Microsoft Query, ADO/DAO,...) и сколько данных вы передаете. Один из способов ускорить это — свести к минимуму объем данных, считываемых в сводной кэш, за счет уменьшения количества столбцов и/или предварительного определения запроса для подмножества строк.

person Charles Williams    schedule 13.01.2011
comment
Я использую реализацию данных Excel по умолчанию. Было настроено просто использовать запрос доступа в качестве внешнего источника данных - я еще не определил, какой это метод подключения. - person Craig Hooghiem; 13.01.2011
comment
Я удалил все ВПР. Время примерно одинаковое - может быть разница в секунду или две. Я предполагаю, что это мое подключение к данным, которое обращается к внешнему (и удаленному) источнику данных - вероятно, проблема. Тем не менее, я предполагаю, что есть лучший метод подключения. - person Craig Hooghiem; 13.01.2011
comment
Итак, проверьте, сколько времени требуется для запуска запроса доступа из вашей системы. - person Charles Williams; 13.01.2011
comment
Это занимает несколько секунд. Запрос занимает около 6 секунд для загрузки в Access. Означает ли это, что Excel выполняет запрос, а ПОТОМ собирает данные и вводит их? (имеется в виду, что может быть лучше загружать необработанные данные вместо запроса) или мне пора обедать? - person Craig Hooghiem; 13.01.2011
comment
Хорошо, похоже, вам нужно посмотреть, какой именно метод используется для получения данных в сводной таблице. возможно, вы хотите прочитать данные из запроса, хранящегося в базе данных Access, прямо в сводную таблицу. - person Charles Williams; 13.01.2011
comment
Ну да, это, по сути, то, что мы делаем. «Источником данных», выбранным в настройке внешних данных по умолчанию (Excel 2010), была база данных Access и этот конкретный запрос. Вероятно, мы делаем 3 отдельных запроса (Продажи, Обслуживание, Месяц до даты). Я знаю, что это изрядное количество запросов, поэтому я хотел посмотреть, есть ли более эффективный способ сделать это. Это то, чего вы пытаетесь добиться? Есть ли более прямой путь? - person Craig Hooghiem; 13.01.2011
comment
Если у вас нет вычисляемых элементов или большого количества формул (проверяли ли вы эффект переключения вычислений на ручной), время чтения запроса непосредственно в сводном кеше должно быть таким же, как и выполнение запроса с вашего ПК. Но 6 секунд не равны 30 секундам, так что должно быть что-то еще. - person Charles Williams; 13.01.2011
comment
Я пробовал поставить «Расчеты» как «Вручную» — все шло так же медленно, если не еще медленнее. Я понятия не имею, почему он такой медленный, но, возможно, его просто нужно перестроить с нуля. - person Craig Hooghiem; 14.01.2011
comment
Если в запросах и сводках есть общность, возможно, вы можете разработать один запрос, который считывается в один кэш сводок, который питает несколько сводок? - person Charles Williams; 14.01.2011