Поделиться через


Совместимость областей и имен объектов

Правила области Visual Basic влияют на имена, выбранные для объектов, модулей и процедур.

Модули и другие объекты с одинаковым именем

При присвоении имени модуля избегайте предварительного добавления имен модулей с помощью "Form_" или "Report_". Именование модуля таким образом может конфликтовать с существующим кодом, написанным за формами и отчетами.

Если у вас есть модуль в приложении, созданном в версии 1. x или 2.0 access, который не соответствует этим правилам именования, Access создает ошибку при попытке преобразовать приложение. Например, модуль с именем Form_Orders в Access версии 1. База данных x или 2.0 создаст ошибку, и вам будет предложено переименовать модуль, прежде чем пытаться преобразовать его.

Модули и процедуры с одинаковым именем

Хотя это не рекомендуется, вы можете использовать процедуру с тем же именем, что и модуль. Чтобы вызвать эту процедуру из выражения в любом месте приложения, необходимо использовать полное имя процедуры, включая имя модуля и имя процедуры, как показано в следующем примере:

IsLoaded.IsLoaded("Orders")

Примечание.

Это не будет работать с действием Runcode в макросах. Доступ к процедурам с тем же именем, что и модуль, невозможен с помощью макросов.

Процедуры и элементы управления с одинаковым именем

Если вы вызываете процедуру из формы и имя этой процедуры совпадает с именем элемента управления в форме, необходимо полностью указать для вызова процедуры имя модуля, в котором она находится. Например, если вы хотите вызвать процедуру с именем PrintInvoice, которая находится в стандартном модуле с именем Utilities, и в той же форме есть кнопка с именем PrintInvoice, используйте полное имя при вызове процедуры из формы или модуля формы.

Элементы управления с похожими именами

Вы не можете иметь элемент управления с именем, которое отличается от имени существующего элемента управления только пробелом или символом. Например, если у вас есть элемент управления с именем [Last_Name], у вас не может быть элемента управления с именем [Last Name] или [Last+Name].

Модули с теми же именами, что и в библиотеках типов

Вы не можете сохранить модуль с тем же именем, что и библиотека типов. При попытке сохранить модуль с именами "ADO", "Access", "DAO" или "VBA", вы получите сообщение об ошибке о том, что имя конфликтует с существующим модулем, проектом или библиотекой объектов. Аналогичным образом, если вы установили ссылку на другую библиотеку типов, например библиотеку типов Excel, вы не сможете сохранить модуль с именем Excel.

Поля с теми же именами, что и методы

Если поле в таблице имеет то же имя, что и метод объектов данных ActiveX (ADO) в объекте ADO Recordset или метод объекта доступа к данным (DAO) в объекте DAO Recordset , вы не можете ссылаться на соответствующее поле в наборе записей с помощью . синтаксис (точка). Необходимо использовать ! Синтаксис (восклицательный знак) или Access создаст ошибку. В следующем примере показано, как ссылаться на поле с именем AddNew в наборе записей, открытом в таблице с именем Contacts:

Dim rst As New ADODB.Recordset 
rst.Open "Contacts",CurrentProject.Connection, _ 
 adOpenKeySet,adLockOptimistic 
Debug.Print rst!AddNew 

Dim dbs As Database, rst As DAO.Recordset 
Set dbs = CurrentDb 
Set rst = dbs.OpenRecordset("Contacts") 
Debug.Print rst!AddNew

Модули с теми же именами, что и функции Visual Basic

Если сохранить модуль с тем же именем, что и встроенная функция Visual Basic, Access создаст ошибку при попытке запустить эту функцию. Например, если вы сохраните модуль с именем MsgBox, а затем попытаетесь выполнить процедуру, которая вызывает функцию MsgBox , Access создаст ошибку "Ожидаемая переменная или процедура, а не модуль".

Модули с теми же именами, что и объекты

Если база данных, созданная с помощью предыдущей версии Access, содержит модуль, имя которого совпадает с именем объекта Access, объекта ADO или объекта DAO, при преобразовании базы данных могут возникнуть ошибки компиляции. Например, модуль с именем Form или Database может вызвать ошибку компиляции. Чтобы избежать этих ошибок, переименуйте модуль.

Именование полей, используемых в выражениях или привязанных к элементам управления в формах и отчетах

При создании поля в таблице, которое будет привязано к элементу управления в отчете или использовано в выражении в свойстве ControlSource элемента управления или отчета, не присваивайте поле имени, которое совпадает с именем метода объекта Application . Чтобы просмотреть список методов объекта Application , щелкните Обозреватель объектов в меню Вид в режиме конструктора модуля. Щелкните Доступ в поле Проект или библиотека, щелкните Приложение в поле Классы и просмотрите методы объекта Application в поле Members of (Элементы).

При создании поля в таблице, которое будет привязано к элементу управления в форме или отчете, не присваивайте ему следующие имена: AddRef, GetIDsOfNames, GetTypeInfo, GetTypeInfoCount, Invoke, QueryInterface или Release.

Идентификаторы с теми же именами, что и ключевые слова Visual Basic

Версия Visual Basic, используемая в Access 97 (и более поздних версиях), содержит некоторые новые ключевые слова Visual Basic, поэтому эти ключевые слова больше не могут использоваться в качестве идентификаторов. Эти ключевые слова: AddressOf, Assert, Decimal, DefDec, Enum, Event, Friend, Implements, RaiseEvent и WithEvents. При преобразовании базы данных, разработанной в предыдущей версии Access, существующие идентификаторы, которые совпадают с новым ключевым словом Visual Basic, вызовет ошибку компиляции. Чтобы устранить эту проблему, переименуйте идентификаторы.

Имена проектов, совпадающие с объектами Access

Имя проекта — это строка, которая является именем приложения Access. В предыдущих версиях Access именем проекта было имя базы данных. Начиная с Access 2000 имя проекта указывается параметром свойства ProjectName , а его значение по умолчанию — это имя базы данных. При преобразовании базы данных с именем, совпадающим с классом объектов, например "application", "form" или "report", Access добавит символ подчеркивания к имени базы данных, чтобы создать имя проекта, которое не конфликтует с существующими объектами.

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

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.