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