Одновременный доступ к базе данных с Excel в качестве внешнего интерфейса - выполнимо? - PullRequest
7 голосов
/ 19 февраля 2010

Предположим, у вас есть база данных с самыми большими таблицами, содержащая около 200 000 строк, и часто модифицируется. Клиент хочет, чтобы Excel подключался через ODBC к базе данных и работал в качестве интерфейса для управления данными. Данные должны быть модифицируемыми до 25 пользователей одновременно.

Моим первым инстинктом было бы рекомендовать что-то еще, например, веб-интерфейс. Но предположим, что клиент настаивает на решении Excel, считаете ли вы его выполнимым, и какие подводные камни вы увидите в нем?

Мои сомнения будут о:

  1. целостность данных (как управлять пользователями, изменяющими одни и те же данные одновременно)
  2. большие объемы данных перемещаются без необходимости (при открытии книги Excel я предполагаю, что должна быть передана вся база данных)
  3. безопасность (безопасное отображение только частей данных для соответствующих пользователей будет затруднительным - см. Предыдущий пункт)
  4. использование инструмента (Excel) для чего-то, в чем он не превосходит (простите за каламбур)

Ответы [ 2 ]

5 голосов
/ 19 февраля 2010

Я делаю это все время.Нет, вам не нужно вносить всю базу данных или даже всю таблицу.Я использую ADO и VBA и отправляю операторы SQL через объект Command.Например, у меня есть база данных роялти с внешним интерфейсом Excel.

Пользователь вводит номер счета-фактуры, а инструкция SELECT извлекает эту запись и заполняет некоторые пользовательские классы.Пользователь вводит / изменяет некоторые данные и нажимает «Сохранить».Затем в классе есть метод, который записывает запись обратно в базу данных с помощью UPDATE или INSERT в зависимости от ситуации.

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

Используйте транзакции, чтобы вы могли откатиться, если у вас возникнут проблемы с блокировкой записи, но с 25 пользователями вы, вероятно, не будете.

2 голосов
/ 19 февраля 2010

На первый взгляд, я бы посоветовал трактовать Excel немного как веб-страницу, то есть вытащить только необходимые данные и использовать специальную форму для редактирования, которая обновляет по одной записи за раз через ADO.Вам нужно заблокировать только одну запись и это на долю времени, которое требуется для обновления.Вы можете проверить, изменилась ли запись, так как она была открыта для редактирования, и пользователям можно сказать, что они не могут открыть запись для редактирования, а затем оставить ее в форме редактирования, иначе они могут потерять изменения.

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

Не думаю, что у вас будут большие проблемы с 25 одновременными пользователями.

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