Это не вопрос, который лучше, а вопрос о том, почему они отличаются функционально. Проблема, с которой я сталкивался, была обработана, но мне любопытно, почему это происходит.
Фон - используя Excel vba для извлечения данных из базы данных Access. Когда пользователь нажимает кнопку, набор записей извлекается из Access, и он заполняет различные данные в электронную таблицу. Затем другой набор записей извлекается из другого запроса для заполнения другой части таблицы.
Что делает ADO - ADO отлично работает для моего первого набора записей. Однако мой второй набор записей идет к запросу в Access, запускает и не возвращает строк. Если я запустил этот запрос в Access, он откроется (примерно через 3-4 секунды). Этот запрос имеет несколько объединений, вычисленных элементов, ограничений и, возможно, запросов Union (я пробовал это разными способами, с/без объединения и т.д.). Я попытался закрыть и снова открыть соединение ado. Я попытался изменить значения тайм-аута, и я даже тестировал с помощью команды ADO для запуска Make table query для этих данных, а затем вытащил из таблицы (это сработало, но это не самый лучший вариант, поскольку данные постоянно изменяются, и я не хочу запускать запрос make table каждый раз, когда кто-то использует этот инструмент).
Итак, я изменил второй вывод данных на DAO, и вот, он работает. Первый вывод данных по-прежнему является ADO (который я обычно предпочитаю использовать), но теперь я рассматриваю возможность его изменения в DAO, потому что я предпочел бы иметь один код доступа к данным в коде.
Итак, может кто-нибудь объяснить мне, почему ADO не будет вытаскивать данные в одном случае, но DAO будет? Опять же, это чисто для информационных целей.