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

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

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

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

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

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

19
задан APrough 16 March 2012 в 12:18
поделиться