Разница между ADO и DAO - PullRequest
       35

Разница между ADO и DAO

17 голосов
/ 16 марта 2012

Это не вопрос о том, что лучше, а вопрос о том, почему они отличаются функционально.Проблема, с которой я столкнулся, была решена, но мне любопытно, почему это происходит.

Справочная информация - использование Excel vba для извлечения данных из базы данных Access.Когда пользователь нажимает кнопку, из Access извлекается набор записей, и он добавляет различные данные в электронную таблицу.Затем другой набор записей извлекается из другого запроса для заполнения другой части электронной таблицы.

Что делает ADO - ADO отлично работает для моего первого набора записей.Однако мой второй набор записей идет к запросу в Access, выполняется и не возвращает строк.Если я запускаю этот запрос в Access, он открывается (примерно через 3-4 секунды).Этот запрос имеет несколько объединений, вычисляемых элементов, ограничений и, возможно, запросов на объединение (я пробовал много разных способов, с объединением / без и т. Д.).Я попытался закрыть и снова открыть соединение ADO.Я попытался изменить значения тайм-аута, и я даже протестировал использование команды ADO для запуска запросов таблицы к этим данным, а затем извлекал их из таблицы (это, кстати, работает, но не в лучшем случае, так как данные постоянно меняютсяи я не хочу запускать запрос make table каждый раз, когда кто-то использует этот инструмент).

Итак, я изменил второй запрос данных на DAO, и вот, это работает.Первое извлечение данных - это все еще ADO (который я обычно предпочитаю использовать), но сейчас я рассматриваю вопрос об изменении его на DAO, потому что я предпочел бы иметь один метод доступа к данным в коде.

Итак, кто-то может объяснитьмне почему ADO не будет тянуть данные в одном случае, а DAO будет?Опять же, это чисто для информационных целей.

Ответы [ 3 ]

12 голосов
/ 16 марта 2012

DAO - это собственный метод доступа к данным для таблиц данных Jet (Ms-Access).ADO "Active X Data Objects" - это дружественное к отрасли соединение практически со всеми типами баз данных.

При стандартном запросе в этом случае нет причин, по которым ADO не должен возвращать записи, где это делает DAO, я подозреваю, чтозапрос также должен содержать параметры, относящиеся к элементам в базе данных Access.Если это так, то ADO не будет работать, так как у него не будет возможности использовать указанные параметры, так как это всего лишь внешняя ссылка на Excel. Использование метода DAO приведет к тому, что Access выполнит запрос, а не Excel, и поэтому будет работатьиметь возможность доступа к собственным параметрам / ссылкам.

4 голосов
/ 23 июля 2012

Я думаю, что на этот вопрос уже был получен очень хороший ответ, но я хочу добавить еще один отличный (хотя и довольно трудно найти) ресурс для сравнения DAO и ADO.Он нацелен прежде всего на приложения Access с формами и отчетами Access, но большая часть приведенной здесь информации относится к решению, написанному в Excel.

Статья вики UtterAccess: выбор между ADO и ADO

1 голос
/ 29 октября 2013

В Visual Basic вам доступны три интерфейса доступа к данным: объекты данных ActiveX (ADO), удаленные объекты данных (RDO) и объекты доступа к данным (DAO).Интерфейс доступа к данным - это объектная модель, которая представляет различные аспекты доступа к данным.Используя Visual Basic, вы можете программно контролировать соединение, построители операторов и возвращаемые данные для использования в любом приложении.

Почему в Visual Basic три интерфейса доступа к данным?Технология доступа к данным постоянно развивается, и каждый из трех интерфейсов представляет собой современное состояние.Последним является ADO, который имеет более простую, но более гибкую объектную модель, чем RDO или DAO.Для новых проектов вы должны использовать ADO в качестве интерфейса доступа к данным.

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