2009-04-15 2 views
1

Я унаследовал файл ADP доступа 2003, который использует SQL 2000 как источник данных. Это мой первый проект по поддержке доступа и не думал о проблемах, просто открыл его в Access 2007 на моей машине dev. Он, конечно, работал, и я приступил к выполнению требуемой работы.Access 2003 adp, открытый и сохраненный в 2007 году, теперь ведет себя нечетно в 2003 году

Я завершил работу и представил файл клиенту, который он открывает в 2003 году, и продолжает получать несколько ошибок, связанных с не объявляемыми переменными. Именно в этот момент я понимаю, что ни один из файлов кода не имеет Option Explicit. Я снова смотрю проект в Access 2007 - никаких ошибок. Поведение выглядит так, как будто доступ 2007 относится к недостатку Option Explicit и работает как ожидалось, но доступ 2003 «думает» Option Explicit установлен, хотя он никогда не появляется в каких-либо файлах кода.

Я понимаю, что могу просто переделать работу, используя только доступ 2003 года, но это было бы более трудоемким, чем хотелось бы. Может ли кто-нибудь предложить совет или решение?

спасибо.

ответ

0

Странная проблема. Я не вижу, как Access 2003 будет проверять наличие явных объявлений varible без каких-либо Option Explicit. Что-то еще должно продолжаться.

Можете ли вы воспроизвести поведение на вашем компьютере с помощью Access 2003?

Как насчет того, чтобы вы действительно объявляли свои переменные? У вас должен быть Option Explicit установленным независимо.

UPDATE:

Поскольку цель состоит в том, чтобы попытаться получить Access 2003 MDB (сохраненный с 2007 года) работает. Я бы попробовал еще одну вещь.

Использование Access 2003 открыть MDB с помощью переключателя/декомпилировать

  • Сделайте резервную копию MDB
  • Откройте MDB (удерживайте клавишу SHIFT вниз, чтобы остановить любой код от бега) через короткую стрижку : msaccess.exe database.mdb/декомпилировать
  • Откройте модуль и скомпилировать приложение
  • Сохранить и закрыть доступ
  • Open снова (SHIFT снова) без декомпилировать
  • Компактный и восстановление базы данных
  • закрыть доступ
+0

Я создал виртуальную машину XP, установленную в офисе 2003 и смог воспроизвести ошибки. Я начал путь к включению Option Explicit & declaring vars, но быстро столкнулся с проблемами, которые вышли за пределы моего уровня комфорта и решили продолжить другой маршрут. Кроме того, для преобразования требуется как минимум 75 форм. – dontera

+0

Очевидно, этот проект никогда не составлялся для начала - ни 2003, ни 2007 год не будет. Он выбрасывает все строки с помощью ссылки Me. {ComboBox} .ListCount. Будучи новичком в разработке Access, я не понимаю, как этот проект даже работает без возможности компиляции? – dontera

+0

Доступ будет запускать несвязанные проекты, но это не очень хорошо, как вы узнали. В разработке Access ВСЕГДА используйте Option Explicit и ALWAYS, чтобы скомпилировать ваш проект. Удачи, установив этот беспорядок. –

0

Это не поможет вам много, но я очень быстро понял, когда один из моих клиентов перешли на Office 2007, что я никогда не должен работать на 2003 db в 2007 году, а затем попытаться запустить его в 2003 году. Разработка в 2007 году, тогда конвертация в 2003 также не работает. Разработка в 2003 году, а затем запуск db (без преобразования) в 2003 году работает очень хорошо. Большую часть времени.

Возможный ответ для второй части вашего вопроса: 1. Преобразуйте формат 2007 года в формат 2003 года. 2. Откройте новый пустой db в 2003 году 3. Импортируйте все объекты из конвертированной базы данных 2003. Перекомпилируйте и попробуйте на машине вашего клиента.

+1

Как показывает опыт - не пересекайте потоки. – dontera

+0

Я также должен добавить, что у меня была длинная переписка с другим разработчиком Access, чья компания переключилась на Office 2007. Он провел два месяца безуспешно, пытаясь заставить свои dbs 2003 работать в 2007 году и теперь экспериментирует с использованием среды выполнения 2003 года. – dsteele

+0

FWIW, я не много работал с A2007, но у меня не было проблем с запуском A2000/A2003 MDB в A2007 (даже во время выполнения). Но я никогда не пишу больше нескольких строк кода без компиляции, поэтому я всегда знаю, что мои приложения компилируются. И OPTION EXPLICIT всегда должен быть включен, конечно. –

0

У меня тоже была эта проблема. Я занимаюсь разработкой переднего интерфейса Access 2003, который подключается к серверу SQL. Я глупо начал использовать Access 2007, думая, что мне нужно было сохранить формат 2003 года, и все будет хорошо.

Не так. Все мои пользователи все еще используют проблемы с сообщением 2003 года.

Проблема была легко решить в конце. Я фактически не использовал никаких функций 2007 года, поэтому все, что было изменено, было ссылкой на библиотеки. У меня было 2 недостающих ссылки на библиотеки Word и Excel 12.0, которые были автоматически включены только путем открытия базы данных в 2007 году. Спасибо за дело Microsoft.

Взял эти ссылки, и я смог «исправить» мою базу данных, не возвращаясь к более ранней версии, потеряв 2 дня работы.

Надеюсь, это поможет кому-то.

+0

Большинство опытных разработчиков Access не добавляют никаких ссылок за пределы трех ссылок по умолчанию, требуемых Access, то есть VBA, Access и DAO. Позднее привязка используется для любых внешних приложений, что означает, что ваше приложение будет работать с любой версией Word или Excel, установленной на какой-либо конкретной рабочей станции. Внутренние ссылки на доступ будут исправлены во время выполнения, чтобы указать на установленную версию (если у вас нет обеих версий, установленных на одном компьютере, и не разрешили целевой версии полностью перерегистрироваться после запуска другой версии). –

Смежные вопросы