База данных в памяти в Excel - PullRequest
       22

База данных в памяти в Excel

2 голосов
/ 29 апреля 2010

Я ищу способ импортировать данные из Access в переменную Excel и затем выполнять запросы через эту переменную, чтобы ускорить процесс. Я пытаюсь перейти с C # .NET, где я читаю таблицу данных из базы данных доступа в память, а затем использую LINQ для запроса этого набора данных. Это НАМНОГО быстрее, чем то, как я сейчас его кодирую в VBA, где я должен делать много обращений к реальной базе данных, что медленно. Я видел упомянутый QueryTable, но, похоже, это требует вставки данных в таблицу Excel. Я хотел бы сохранить все в памяти и максимально сократить взаимодействие между таблицей Excel и кодом VBA.

Хотелось бы, чтобы нам не нужно было использовать Excel + VBA для этого, но мы пока застряли на этом. Спасибо за помощь!

Ответы [ 2 ]

2 голосов
/ 30 апреля 2010

Я не знаю ничего подобного LINQ для VBA.

Если вы оставите параметр ADO Connection в области действия, сделав его общедоступным, вы можете использовать для него команды Excecute. Это не так быстро, как LINQ, но определенно быстрее, чем создание и уничтожение объектов Connection для каждого вызова.

Если таблицы не слишком большие, я склонен читать таблицы в пользовательские классы в VBA с установленными соответствующими отношениями Parent / Child. Очевидным недостатком этого является то, что вы не можете использовать SQL для получения набора данных из ваших классов. Я должен использовать много циклов, когда мне нужно более одной конкретной записи. А это значит, что если у вас есть 1 млн записей, это будет быстрее вызвать базу данных.

Если вас интересует последний, вы можете прочитать кое-что из написанного мной здесь http://www.dailydoseofexcel.com/archives/2008/12/07/vba-framework/

http://www.dailydoseofexcel.com/archives/2008/11/15/creating-classes-from-access-tables/

http://www.dailydoseofexcel.com/archives/2007/12/28/terminating-dependent-classes/ (см. Комментарий Роба Брюса)

1 голос
/ 30 апреля 2010

Я бы просто прочитал его в набор записей ADO, а затем получил нужные мне данные из набора записей, когда мне это нужно. Конечно, это будет зависеть от размера таблицы, которую вы хотите прочитать.

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