Я написал довольно сложное приложение, которое использует Excel (2016) в качестве интерфейсного приложения для данных, хранящихся в базе данных MS Access, с использованием библиотеки ADO 6.1.Во время выполнения макрокода я заметил, что транзакции SQL, запускаемые моим приложением Excel, могут занять довольно много времени, и часто выполнение следующей строки кода в моем макросе Excel зависит от того, была ли эта транзакция SQL завершена первой.К сожалению, выполнение кода макроса и транзакции SQL являются асинхронными операциями, что означает, что макрос переходит на следующую строку кода, даже если транзакция SQL еще не завершена.
Мой текущий способ - использоватьФункция Sleep () использует Windows API для вставки фиксированной задержки, но это действительно уродливое решение, поскольку оно снижает производительность моего приложения и очень сильно зависит от нагрузки на процессор, поэтому иногда оно может работать, иногда нет.
Мне пока не удалось найти решение этой проблемы, я также не могу найти никаких подсказок в Интернете.
Использование Application.CalculateUntilAsyncQueriesDone здесь тоже не помогает.
У кого-нибудь есть идея или подсказка, как остановить выполнение макрокода в Excel до завершения транзакции SQL?Есть ли в ADO метод проверки завершения транзакции SQL?