2011-12-30 2 views
2

Я унаследовал приложение Access, внесенное некоторыми изменениями. Когда я запускаю его, я получаю несколько ошибок, которые, как представляется, ссылаются на на старые таблицы или запросы. Ничего, что в настоящее время действительно является частью приложения , неверно.удаление старых артефактов доступа из MSysObjects

Вот сообщение:

The record source `~sq_cEmployee Certification Tracking ~sqclstAlerts` specified on this form does not exist. 

я нашел что-то в Интернете, который показал, как получить доступ к дамп каждый объект SQL, и в этом выходе, я вижу, что я думаю, что куча мусора запросов которые НЕ отображаются в обозревателе объектов.

Вот пример того, что я имею в виду:

имя SQL (4):

~sq_cEmployee Certification Tracking~sq_clstAlerts----------------------------------------------- 
SELECT CertificationAlertsRaw.Alert AS Expr1 
FROM CertificationAlertsRaw 
WHERE (((CertificationAlertsRaw.Alert)="Yes")); 

В этом случае CertificationAlertsRaw запрос был удален, по крайней мере, насколько обозреватель объектов показывает. Это старый запрос, который был переименован.

Обратите внимание на странное имя с тильдой.

Это почти похоже на то, что это артефакты из крушения или, возможно, ошибка доступа?

Их около 30+.

Если это так, как я подозреваю, вызывает эти сообщения об ошибках при запуске, как я могу их от них избавиться, так как они не отображаются в окне обозревателя объектов ?

Я также попытался сделать «Компакт и ремонт», но это ничего не изменило. Вот несколько из «Name» свойств из этих записей в MSysObjects:

~sq_cEmployee Certification Tracking Old~sq_ccboCertifications 
~sq_cEmployee Certification Tracking Old~sq_clstHistory 
~sq_cRoutineAssignments~sq_clstMaxTaskID 

Спасибо,

Митч

ответ

4

запросов, которые начинаются с тильды взяты из форм и отчетов. Например, если вы используете строку sql для формы, она будет отображаться в коллекции Queries с тильдой.

Sub ListQueries() 
For Each qdf In CurrentDb.QueryDefs 
    Debug.Print qdf.Name 
Next 
End Sub 

Вы можете удалить их, но вы должны быть осторожны.

Возможно, вам лучше открыть новую базу данных и импортировать все, что вы видите.

1
~sq_cEmployee Certification Tracking~sq_clstAlerts 

Это означает, что lstAlerts объект (ListBox?) На отслеживании форма Сотрудник сертификации ссылается на указанный SQL заявление:

SELECT CertificationAlertsRaw.Alert AS Expr1 FROM CertificationAlertsRaw WHERE (((CertificationAlertsRaw.Alert)="Yes")); 

Вы бы нужно изменить источник записи в lstAlerts указать к другой таблице с CertificationAlertsRaw больше не существует в базе данных.

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