Почему Access сообщает, что не может получить команду для своей программы?

9

Я только что обновился до Windows 7, и после переустановки MS Office у меня возникает интересная ошибка. Когда я щелкаю по базе данных, я получаю всплывающее сообщение «При отправке команды в программу возникла проблема», но файловое приложение все равно запускается, и соответствующая база данных действительно открывается.

Кто-нибудь видел что-нибудь подобное?

Как бы я занялся расследованием, а затем решением этой проблемы?

Примечание: я не использую Zone-Alarm. Большинство онлайн-поисков по этой проблеме возвращают различные сайты и статьи MSKB, обсуждающие проблемы с использованием Zone-Alarm.

РЕШЕНО: Благодаря Mihi --- После переименования ключа реестра из ddexec в NOddeexec проблема исчезла - до сих пор не уверен, почему DDE сломан, но работает достаточно хорошо для меня сейчас

Ной
источник
Вы нажимаете на сам файл базы данных или ярлык к нему?
JohnFx
Я нажимаю на сам файл базы данных.
Ноя
Вы используете какой-либо другой брандмауэр?
Harrymc
Только в стандартную Win-7 включен брандмауэр. Кроме того, файл находится на моем локальном диске в подкаталоге MyDocuments
Noah
Вы вошли как администратор? Вы пытались полностью отключить UAC?
Harrymc

Ответы:

2

Если бы эта проблема возникла, но только с конкретными офисными продуктами (т. Е. Excel и Word работали бы, но Access не получал сообщение).

Вот как я исправил проблему в Windows 7 - 64-битной версии (возможно, будет работать и для Vista).

ПРИМЕЧАНИЕ. Это решение включает редактирование системного реестра. Пожалуйста, будьте осторожны, так как неправильное редактирование реестра может повредить вашу операционную систему!

Использование редактора реестра, поставляемого с Windows 7 (Regedit)

  • Проверьте ключ расширения в реестре для текущей ассоциации
  • HKEY_CLASSES_ROOT\.mdb (Я имел дело с Office 2007, но просто найдите нужную запись расширения файла) .
  • Проверьте (Default)значение записи, а затем найдите ключ, на который HKEY_CLASSES_ROOTон ссылается (в моем случае это Access.MDBFile) .
  • Найдите дополнительный ключ shellи удалите его (см. Предупреждение выше)
  • Вернитесь и найдите файл, который вы хотите открыть, теперь вам будет предложено выбрать программу для открытия. На этом этапе найдите офисную программу, которую вы хотите использовать, чтобы открыть файл и все готово.

Проверив мои настройки после этого, заметил, что Access.MDBFileключ в реестре изменился, теперь у него есть CLSIDключ, указывающий на новый дом ассоциации файлов.

  • Ключ к югу CLSID (в моем случае HKEY_CLASSES_ROOT\Access.MDBFile\CLSID, (Default)значение было {73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}) .
  • Использовал find для поиска CLSID (исключая фигурные скобки) , не забудьте проверить под Look at-> Keysперед выполнением поиска (в моем случае найден ключ, HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}но это может отличаться, мой пример для 64-битной системы, обрабатывающей 32-битную версию Office 2007) .
  • Это ссылка на «Приложение Microsoft Office Access», которое использует внутрипроцессный сервер для запуска приложения, с помощью этого метода исправлены мои ассоциации файлов Access.
Lankymart
источник
6

По сути, эта ошибка появляется, если тип файла настроен на использование DDE (старый протокол связи в стиле Windows-3.x между приложениями, работающими на одном компьютере) для открытия файла.

Вы найдете его в типах файлов в параметрах папок проводника (может быть, где-то еще в Windows 7, но там будет место, где администратор может настроить, какие файлы открывать какими программами).

Когда этот параметр «Использовать DDE» установлен, Windows сначала проверит, запущена ли уже программа, а затем (если она это сделает) отправит ей сообщение DDE (состоящее из 3 текстов: «Приложение», «Тема» и «Сообщение»). ). Таким образом, можно избежать повторного открытия программы, даже если она уже запущена. Когда программа не запущена, она просто запускается нормально. В случае сбоя соединения DDE появится упомянутое вами диалоговое окно, и оно просто запустит программу снова в обычном режиме.

Итак, самое простое решение - просто отключить «Использовать DDE» для расширения файла вашей базы данных (я думаю, .mdb). Единственный недостаток: когда вы открываете базу данных и Access уже запущен, Windows откроет второй экземпляр Access, который, в свою очередь, заметит первый, отправит сообщение DDE и выйдет после этого. И. е. вы без необходимости запускаете Access, чтобы он мог снова закрыться. Но в наше время с быстрыми процессорами и жесткими дисками, я думаю, это приемлемо :-)

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

РЕДАКТИРОВАТЬ: Согласно этому сайту , эта вкладка была удалена в Vista. Вы всегда можете сделать это вручную в реестре: найдите HKEY_CLASSES_ROOT\.mdbего значение по умолчанию (скажем, оно есть mdbfile), а затем посмотрите на это значение по умолчанию ( HKEY_CLASSES_ROOT\mdbfile\shell\open\ddeexec).

Михи
источник
У меня есть доступ к другой рабочей машине. Где бы я посмотрел, чтобы сравнить конфигурацию DDE?
Ноя
@Noah: в проводнике Windows перейдите в Сервис -> Свойства папки. Перейдите на вкладку «Типы файлов». Найдите тип файла MDB. Выберите Дополнительно. Нажмите на действие «Открыть» и выберите «Изменить ...». Имейте в виду, что если вы сравниваете это с другой рабочей станцией, другая рабочая станция может использовать DDE просто отлично, но поскольку ваша рабочая станция не работает, попробуйте снять ее и посмотреть, работает ли она (возможно, после перезагрузки).
Энди
В Windows 7 нет вкладки «Свойства папки»
Noah
Согласно mydigitallife.info/2008/06/20/… , эта вкладка была удалена в Vista. Вы всегда можете сделать это вручную в реестре: найдите в HKEY_CLASSES_ROOT \ .mdb его значение по умолчанию (скажем, это mdbfile), а затем посмотрите на это значение по умолчанию (HKEY_CLASSES_ROOT \ mdbfile \ shell \ open \ ddeexec) ...
mihi
Можете ли вы добавить этот последний комментарий к вашему ответу.
Ноя
2

Вот решение, которое я нашел для Access 2002. Оно будет аналогичным для других версий Access.

  1. Открытый доступ
  2. Нажмите на Инструменты
  3. Нажмите на Опции
  4. Нажмите на вкладку «Дополнительно»
  5. Снимите флажок «Игнорировать запросы DDE»
  6. Закрыть доступ

Это сработало для меня! Нет больше «Не удалось отправить команду в программу». ошибка.

Для разных версий Access опция «Игнорировать запросы DDE» может быть сформулирована немного по-разному, но вы сможете найти что-нибудь совместимое.

Я надеюсь, что это помогает другим, у кого такая же проблема.

Роберт Валентайн
источник
1

В установленной офисной папке. щелкните правой кнопкой мыши на Excel / Winword .exe и выберите свойства. Перейдите на вкладку «Совместимость» и убедитесь, что «запускать эту программу в режиме совместимости для» НЕПРОВЕРЕНО.

Мик
источник
1

Вот исправление для Access 2007:

  • Нажмите на офис «Монета» в левом верхнем углу Access.
  • Выберите «Параметры доступа»
  • Выберите опцию «Дополнительно»
  • Прокрутите до основания и снимите флажок «Игнорировать запросы DDE»

Должен открываться нормально, без необходимости возиться с реестром.

Jam88
источник
0

Кто-нибудь видел что-нибудь подобное?

вероятно, так как ошибка задокументирована в этой статье MSKB . это также было упомянуто в связи с ZoneAlarm.


источник
Я прочитал эти статьи MSKB, но я вообще не использую ZoneAlarm. Это обновление ваниль Win7
Noah
У меня нет решения, я только указываю, что эта ошибка встречается довольно часто. но ответы в лучшем случае расплывчаты, кажется, одна из тех загадок окон. :)
0

Журнал деятельности:

Я использовал Панель управления, чтобы изменить установку Office 2007, удалив Access. Затем с помощью панели управления я добавил Access обратно. Это не повлияло на проблему.

Я использовал Панель управления для восстановления установки Office 2007, затем перезагрузил компьютер. Это не повлияло на проблему.

НОТА:

  • Когда я дважды щелкаю файл, возникает проблема. Когда я щелкаю правой кнопкой мыши, выбираю OpenWith и выбираю Access, проблема не возникает.
  • Эта проблема не возникает с Excel
Ной
источник
0

Я не уверен, но может ли быть так, что при доступе эта опция для прослушивания по DDE-Calls отключена. Я видел эту опцию в Word и Excel тоже, но не помню доступа. Возможно проблема безопасности, чтобы лучше отключить это ...

лед
источник
0

Я не пользуюсь Access, но недавно я столкнулся с той же проблемой с Excel и Word (2007) на Win7 при открытии документов из списка «Недавние» в моем меню «Пуск» (используя стрелку в пункте меню «Ярлык» Word). Решение DDE чекбокс не применимо ко мне, так как оно уже было не проверено (и насколько я знаю, в Word не существует).

Я наткнулся на решение, которое, похоже, устранило проблему для меня: открыв диалоговое окно «Свойства» для ярлыка документа (из контекстного меню; см. Скриншот ниже), я заметил, что поле «Opens With» каким-то образом было изменено на другое приложение, кроме Microsoft Word. Нажатие на кнопку «Изменить» позволило мне повторно связать этот файл с «Microsoft Office Word» (без необходимости связываться с реестром).

введите описание изображения здесь

kmote
источник
0

Если эта ошибка появляется при использовании Office с Windows 7 с файлом Access ADP, возможно, проблема связана с брандмауэром.

Windows XP с Access 2007 использует SMB для связи с сервером MSSQL. Windows 7 с Access 2007 использует TCP (стандартный порт SQL) порт 1433, чтобы попытаться добраться до MSSQL Server. Если у вас установлен брандмауэр Windows или порт 1433, блокирующий аппаратный брандмауэр, он пытается установить соединение 3 раза, а в третий раз при сбое он переключается на SMB и работает нормально.

Откройте TCP-порт 1433 на сервере, на котором работает SQL Server.

Я не выяснил, почему Windows 7 сначала использует TCP-порт 1433 вместо SMB, как XP, и я не выяснил, как это изменить.

Майк Б
источник
каково отношение mysql к этому приложению word / excel? Я не понял, что вы имеете в виду ... извините.
gumuruh