Access VBA Ошибка 2486 DoCmd.Save - PullRequest
1 голос
/ 12 мая 2009

Мы импортируем некоторые программные модули в приложение Access 2002, используя следующую строку в VBA

Application.VBE.ActiveVBProject.VBComponents.Import (strFileName)

Эта часть работает нормально, строка сразу после попытки сохранить новый класс в проекте. Единственный способ сделать это - использовать DoCmd:

DoCmd.Save acModule, strModuleName

ИНОГДА, это приводит к

Ошибка 2486: Вы не можете выполнить это действие в настоящее время.

Более длинная версия ошибки дает следующее:

Вы не можете выполнить это действие в настоящее время. Вы пытались запустить макрос или использовали объект DoCmd в Visual Basic для выполнения действия. Однако Microsoft Access выполняет другое действие, которое препятствует выполнению этого действия.

Тот факт, что здесь написано Access is performing another activity, кажется, имеет смысл, поскольку мы иногда получаем ошибку. Есть ли способ узнать, чем занят занят и ждет, пока он не закончится? Или есть лучший способ реализовать импорт модулей?

Я думал о том, чтобы написать что-то, что будет, пока module.Saved свойство имеет значение true, но этот код достаточно противный без этого ....

Ответы [ 3 ]

0 голосов
/ 13 мая 2009

Начиная с Access 2000, проект VBA сохраняется как одно поле BLOB в одной записи в одной из системных таблиц. Это означает, что вы выполняете код из того же проекта, который пытаетесь сохранить, и я не уверен, что это возможно. Это звучит концептуально очень проблематично.

0 голосов
/ 14 мая 2009

Можно попробовать использовать недокументированные команды Application.SaveAsText и Application.LoadFromText.

0 голосов
/ 12 мая 2009

Попробуйте позвонить в DoEvents непосредственно перед сохранением. Это может помочь Access завершить все, что он делает.

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