Access 97 - внешние dll получают устаревшие данные - что я могу сделать? - PullRequest
0 голосов
/ 29 ноября 2009

В моей текущей работе мне нужно исправить некоторые проблемы в старом Access97-приложении. Моя последняя проблема заключается в следующем: некоторые отчеты создаются с использованием внешней библиотеки DLL, а иногда они ошибочны. Они содержат данные предыдущего звонка или отсутствуют подробные данные и так далее. Если я начну тот же отчет без каких-либо изменений в данных, отчеты будут правильными.

Причина этого в моем мнении, что внешняя dll получает устаревшие данные от доступа вместо текущих данных, которые записываются непосредственно перед вызовом dll. Есть ли какой-либо документированный способ освободить внутренние буферы от доступа, или мне нужно добавить цикл ожидания в надежде, что в большинстве случаев это позволит избежать этой проблемы?

1 Ответ

0 голосов
/ 30 ноября 2009

Есть несколько настроек уровня доступа, которые управляют этим. ExclusiveAsyncDelay и SharedAsyncDelay. Значение по умолчанию для ExclusiveAsyncDelay составляет 2000 миллисекунд или 2 секунды. Таким образом, если ваше приложение является единственным, которое обращается к базе данных, скорее всего, это ваша проблема.

Вы можете найти в справке Access 97 эти ключевые слова или инструкции по внесению этих изменений в реестр навсегда. Это потребует прав администратора.

Или, что еще лучше, используйте dbengine.SetOption для временного переопределения настроек вашей базы данных. Обратите внимание, что вам придется выполнить метод dbengine.setoption в начале вашего кода, который обновляет базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...