В зависимости от используемого оператора SQL (т. Е. Вашей переменной 'tsSQL' выше) ваш набор записей должен открываться мгновенно, ADO или DAO.
Идеи, которые приходят мне в голову: постоянна ли ваша связь? Похоже, что это вызывает большую задержку в 2007 году, чем в 2003 году. Возможно, каждый раз сбрасывается и восстанавливается соединение. С формами это происходит, когда ваш источник записей пуст и задан в коде, поэтому рекомендуется всегда иметь источник данных, такой как «tblBlankTable» (небольшая таблица с одной записью, чтобы постоянно поддерживать соединение в форме, которая всегда открыть). Задержка от 4 до 5 секунд - это то, что вы получаете, когда ее нет на месте. Убедитесь, что у вас есть форма, подключенная к вашей БД все время при запуске rs.open, и посмотрите, работает ли она. Возможно, вам может потребоваться форма с открытым соединением ADO в вашем случае. Об этом на форумах Access написано много.
Быстрее ли вы, когда вы являетесь единственным пользователем, по сравнению с тем, когда у других есть БД с открытым файлом блокировки? Это контрольный знак.
Другая идея заключается в том, правильно ли вы проиндексировали все при обновлении. Базовая база данных осталась прежней или увеличилась с MDB до ACCDB? Вы не указали, что находится в tSQL, поэтому, возможно, вы присоединяетесь к неиндексированным полям или к чему-то, что заставляет этот конкретный tSQL работать медленно и просто нужно добавить первичный ключ.
Если ваш tsSQL включает в себя запросы, я читал, что при обновлении важно перекомпилировать все ваши запросы - перейти в режим разработки с каждым, затем запустить их, а затем сохранить их снова.
Вы можете попробовать подключиться к БД с помощью собственной строки подключения - существует один формат для MDB / Jet и другой для ACCDB / Ace. Существуют поставщики для обоих, которые обычно используются из Excel в MDB или ACCDB, но, возможно, могут работать в Access, по крайней мере, для устранения вашей проблемы.