При запущенном Access ошибка открытия BDE

пользователь
Регистрация: 01.03.2016

На ПК установлена Windows 7 x64.

При запущенном Access документе Инфо-Бухгалтер
выдает ошибку открытия BDE (скрин прикладываю).
Как только закрываю Access,
Инфо-Бухгалтер открывается нормально, ошибок не выдает.

Если сначала открываешь Инфо-Бухгалтер,
а потом базу Access (тот же самый документ),
то они работаю нормально в паре.

Можно как-то исправить, чтобы две программы работали нормально?

Вложения
oshibka.jpg162 КБ
модератор
Регистрация: 06.09.2007

Проделал все манипуляции и сделал все скриншоты. Прикладываю...

Access зачем-то грузит IDAPI32.DLL по адресу 0A2B0000, а не по ожидаемому 4BDE0000.

Вот цитата из документации BDE (BDE32.HLP, статья Initialization), где явно говорится, что некоторые DLL-ки должны быть загружены по фиксированным адресам:

Shared memory loading addresses for DLLs
BDE reserves certain preferred memory addresses for use by its DLLs. In most cases, if a DLL cannot be loaded at its preferred address, it will load at some other address determined by the system.
However the DLLs listed below must be loaded at the same preferred address in all applications using BDE. The native BDE drivers reserve the following addresses:

BDE DLLs Addresses

IDAPI32.DLL 0x4BDE0000
IDPDX32.DLL 0x4CDE0000
IDDBAS32.DLL 0x4DDE0000
IDASCI32.DLL 0x4EDE0000

If these memory locations are already in use by other applications, the BDE DLLs assigned to those locations might not load, in which case an error message would be generated:

If Idapi32.dll cannot load because the address space is already used, then DBIERR_CANTLOADIDAPI is returned.

Из скриншота я не вижу, что ему мешает использовать адрес 4BDE0000.
Других DLL, по крайней мере, в требуемом диапазоне адресов нет.
С помощью VMMap можно посмотреть другие типы памяти (Shared и т.д.) на предмет занятости адресного пространства в диапазоне от 04B00000 до 04F00000.

Еще из скриншота видно, что в адресном пространстве Access присутствуют DLL-ки продукта Crypto Pro.
Для них, также как для BDE, не используется ASLR (динамическое назначение адреса).
Явного занятия желаемых адресов BDE я не вижу, но потенциальный конфликт возможен (опять же надо смотреть другие виды памяти).

Вывод такой, что хулиганит Access. Что его заставляет - из имеющихся данных не понятно.

дилер
Регистрация: 01.12.2005

По-моему, стоит закрыть разбирательство.
Как говорится, овчинка выделки не стоит.
Надо или поменять технику или делать, как работает:

Если сначала открываешь Инфо-Бухгалтер, а потом базу Access (тот же самый документ), то они работаю нормально в паре.

пользователь
Регистрация: 01.03.2016

Проблема так и не решилась.
Провели много манипуляций, но проблему это не решило.
Евгений, техника стоит новая - моноблоку всего 3 месяца.

Я так понимаю, здесь решают нестандартные ситуации, а не просто переписываются.
Смысл тогда форума? Описать проблему и через неделю-две ее закрыть?
Если есть подозрения на Access, попытаюсь обновления поставить на него.
По результатам отпишу.

дилер
Регистрация: 01.12.2005

Если Access загружается по фиксированным адресам BDE, то с ним и надо разбираться.
Возможно это свойство данной версии Access, а возможно и нет.
Может авторы уже забыли о фиксированных адресах BDE.
Некоторые проблемы могут не иметь общего решения.
Поэтому я и предложил использовать рабочую комбинацию.
Сначала ИБ 8, а потом Access.
Можно этой проблемой заниматься до окончательной победы, если есть возможность.

модератор
Регистрация: 06.09.2007

Если Access загружается по фиксированным адресам BDE, то с ним и надо разбираться.
Возможно, это свойство данной версии Access, а возможно и нет.
Может авторы уже забыли о фиксированных адресах BDE.

Там Access не сам грузится на место BDE, а грузит BDE-шные DLL-и в неправильное место.
И Ассess там 2003 года, не такой конечно старый, как BDE.

Некоторые проблемы могут не иметь общего решения.
Поэтому я и предложил использовать рабочую комбинацию.
Сначала ИБ 8, а потом Access.

В качестве костыля можно в автозагрузке прописать какую-нибудь программу, использующую BDE (и грузящую на правильные адреса).
Или службу поставить, например, Инфо-Сервера.
Он также при старте BDE проинициализирует.
При этом, на рабочем столе не будет болтаться всяких ненужных окошек.