Не уверен, что для этого есть определенный ответ, но у меня есть приложение Ms Access с SQL Server 2008, так как хранилище данных, все таблицы связаны с SQL Server из приложения Access, приложение размещено на сервере Citrix. Все формы в приложении являются связанными формами. Существует одна конкретная форма, которая в последнее время вызывает проблемы, когда я пытаюсь отредактировать или сохранить данные, форма зависает навсегда, и мне приходится завершать сеанс. Форма связана с таблицей на сервере SQL, и таблица имеет столбец Identity в качестве первичного ключа, что мне кажется странным, так это то, что эта форма даже не так активно используется, как любые другие формы, и в таблице нет даже половины записей, как в любой другие интенсивно используемые таблицы. В форме всего 4 поля, и только одно из них — Nvarchar, в других формах гораздо больше полей Nvarchar с гораздо большим использованием и данными, и они, похоже, не вызывают никаких проблем. Я исключаю проблемы с сетью, поскольку это повлияет на все приложение, а не только на одну форму, а индексы на сервере SQL создаются ежедневно, поэтому я не думаю, что это проблема индексации. Кто-нибудь знает, почему это произойдет.
Форма Ms Access, связанная с SQL Server, не отвечает
Ответы (2)
Если вы подозреваете, что форма повреждена, вы можете использовать методы SaveAsText
и LoadFromText
, чтобы сохранить определение формы в виде текстового файла, а затем перезагрузить его с другим именем.
Application.SaveAsText acForm, "frmMainMenu", "frmMainMenu.txt"
Application.LoadFromText acForm, "frmMainMenu_new", "frmMainMenu.txt"
Эти методы не являются всеобъемлющими, как предлагает Эрик, но они быстрые и простые. Вы также можете попробовать декомпилировать, чтобы исправить повреждение. См. 2 ответа по этой ссылке: КАК декомпилировать и перекомпилировать
Если повреждение не является причиной проблемы, вы можете попробовать выполнить код формы в режиме прерывания (отладки). Поместите временную точку останова в первую исполняемую строку процедуры открытия формы. Если у вас нет процедуры для открытия формы, добавьте ее. Если вы не знакомы с установкой временных точек останова, вы можете просто добавить слово Stop
:
Private Sub Form_Open(Cancel As Integer)
Stop
Затем, после того как вы откроете форму, вы можете выполнять код по одной строке за раз с помощью клавиши F8
. Надеюсь, вы сможете определить строку, из-за которой код зависает.
Попробуйте перестроить внешний интерфейс Access. Создайте новую базу данных, установите соответствующие параметры базы данных (поведение поля, автоматическое отслеживание имен, уровень синтаксиса SQL и т. д.), затем импортируйте все формы, отчеты, макросы, код vb и данные из старого доступа. базу данных в новую. Установите параметры запуска правильно и посмотрите, не станет ли что-то лучше.
Базы данных Access могут быть слегка повреждены, и полная перестройка иногда является единственным способом их исправить.
Обязательно сохраните резервную копию.